PDA

Ver la Versión Completa : Ver resultado de un Stored Procedure desde Delphi


ElCherchu
22-05-2003, 18:53:09
Hola amigos!!!

Estoy iniciando con el uso de los Procedimientos Almacenados y como todos los inicios son dificiles necesito sus ayudas.

Copie dos procedimientos almacenados que encontré en un libro como sigue:

set term ^;
CREATE PROCEDURE EsPrimo(Numero Integer)
Return (Respuesta Integer) as
Declare variable I Integer;
Begin
I = 2;
While (I < Numero) do
begin
if (cast((Numero / I) as Integer) * I = Numero) then
Begin
Respuesta = 0;
Exit;
End
I = I + 1;
end
Respuesta = 1;
end ^
set term ;^

y el otros asi:

set term ^;
create preocudure Primos (Total Integer)
return (primo Integer) as
declare variable I integer;
declare variable Respuesta Integer;
begin
I = 0;
primo = 2;
while (I < Total) do
begin
execute procedure Esprimo Primo
returning_values Respuesta;
if (respuesta = 1) then
begin
I = I + 1;
suspend; /* Nuevo numero*/
end
primo = primo + 1;
end
end ^
set term ;^

bueno esto me devuelve todo los numeros primo encontrados desde 2 hasta la cantidad que digite.

Lo ejecuto desde el ISQL de interbase y me funciona perfectamente, lo hago asi:

SELECT * FROM PRIMOS(100)

Esto según Cantú, y funciona.

Bueno el caso es que quiero ejecutar este SP desde delphi y no se como hacerlo.

Me gustariá que me dijeran cuales componentes IBXs debo usar para esto, y que lineas de cógido debo incluir en ellos.

Cuento con su ayuda, gracias desde ya..

Si lo desean pueden darme sus ayudas poniendo otros ejemplo ...

ElCherchu.....

jhonny
22-05-2003, 19:05:03
Bueno, Seleccionas el Componente TStoreProcedure y en su propiedad DataBaseName pones el Alias de tu BD y luego seleccionas el
StoreProcedure de tu Base de datos en su propiedad Storeprocedure...Despues clickeas en la propiedad
Params para verificar de que esten todos los
parametros del procedimiento almacenado que
seleccionaste en tu caso seleccionarias el procedimiento "EsPrimo".

Espero que esto sea lo que necesites realmente y te sirva.

ElCherchu
22-05-2003, 19:13:45
Hola Jhonny,

Gracia por tu pronta respuesta, ya hice lo que me dijiste pero al ejecutarlo me dice que debo pasar valores a los parametros, cuando le pongo algun valor no me trae ningun resultado.

Con cuales componentes puedo ver los datos?,

¿Que hago, para que funcione?

Gracias de antemanos..

ElCherchu...

jhonny
22-05-2003, 19:27:14
Ahh, Claro...

Debes Bajar un Componente TQuery y
En su propiedad Databasename pones el
Alias de tu BD...

En su propiedad SQL escribes:
SELECT * FROM PRIMOS(100)

Luego en algun evento (puede ser en el Onclick de un boton), escribes el nombre de tu TQuery e invocas su evento Open.

Por ejemplo:
procedure TForm1.Boton1Click(sender :TObject);
begin
Query1.Close;
Query1.Open;
end;
Y listo, espero te funcione ahora si.

jhonny
22-05-2003, 19:30:34
Se me olvidaba...

Debes Conectar Un DataSource al Query y un Componente Data Control (Puede ser un TDBText) Al datasource...y listo.

Espero te sirva de algo mi ayuda...de lo contrario no dudes en preguntar de nuevo;)

ElCherchu
23-05-2003, 16:56:05
Hola Jhonny!!

Ahora si funciona perfectamente, gracias por todo.

Mil gracias...

ElCherchu

FlacoNet
10-06-2003, 09:51:55
hola a todos...puse mi mensaje aqui mismo por que me parece que es muy similar al que se estuvo desarrollando.
Lo que desea es ejecutar un procedimiento almacenado de las mismas caracteristicas aqui mencionadas pero bajo Dbexpress y no bajo DBE como veo que lo estas haciendo. Es decir..con los componentes TSQLQuery o el SQLStoredProcedure. Lo que hago es lo mismo que se puso en esta conversacion pero me da un error de lectura en la memoria cuando intento abrir la consulta.
Lo que hice fue descargar una actualizacion para el Dbexpress que dice que actualiza el archivo sobre el cual me da error DBEXPINT.dll pero no me da resultado y sigo teniendo el error.
Agracezco toda clase de ayuda por que la verdad que me pase dias tratando de encontrar alguna solucion sin llegar a nada.
Trabajo con Delphi 6 Ent y tengo tambien los parches instalados
e interbase 7