Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Oracle (https://www.clubdelphi.com/foros/forumdisplay.php?f=22)
-   -   Procedimiento Almacenado (https://www.clubdelphi.com/foros/showthread.php?t=46827)

rodrigo19 11-08-2007 00:06:58

Procedimiento Almacenado
 
por favor necesito ayuda!!!:)

Vyckso 11-08-2007 00:46:10

Prueba con una funcion
 
Hola

En vez de usar un procedimiento, que lo unico que hace es ejecutarse sin devolverte nada, deberias crear una función:

Código SQL [-]
Create or repalce function "Mifuncion" as
Begin
  (Codigo de la función)
  Result := Resultado;
End;
/

Esto en principio te devuelve un solo registro, creo, si no es asi por favor que me corrija alguien ya que me gustaria saber como, que las funciones no pueden devolver un grupo de registros.

En este caso puedes crearte un procedimiento que lo que haga es añadirte a una tabla temporal lo que necesitas y tirar de los registros de la tabla en cuestion

Salu2

rodrigo19 11-08-2007 01:49:25

Procedimiento Almacenado
 
Saludos a todos y espero que me puedan ayudar, el problema que tengo es que estoy trabajando con Oracle 9i y tengo un procedimiento almacenado que contiene el siguiente sql:

Código SQL [-]
Select CODIGO from CLIENTES
esta sentencia me deberia dar como resultado todos los codigos de todos los clientes pero a la hora de compilarlo me da un error; necesito todos los codigos para luego almacenar el resultado en un DataSet o un DataTable.

Si tienen alguna informacion que me pueda ayudar se los agradeceria mucho. Muchas Gracias.:)

luisgutierrezb 11-08-2007 02:42:54

si no pones el codigo del procedimiento dudo mucho que alguien te pueda ayudar, las bolas de cristal estan escasas estos dias...

rodrigo19 11-08-2007 03:04:32

Procedimiento Almacenado
 
Este es el codigo del procedimiento almacenado
Código SQL [-]
CREATE OR REPLACE  PROCEDURE "USV09"."SELECCIONCODIGOS" 
    SELECT CODIGOS FROM CLIENTES;
 END SELECCIONCODIGOS;

pero no hace nada o no me da el resultado que quiero, que son todos los codigos de los clientes. Muchas Gracias.:)

jr_ewing 22-08-2007 22:55:40

Usar REF CURSOR
 
Rodrigo, tendrías que hacer un procedimiento que utilice como parámetro de salida un REF CURSOR. Para eso te conviene generarte un package, o utilizar algun existente, en el que declares primero un TYPE genérico y público, más el procedimiento que va a tener algún parámetro de salida del nuevo tipo:

Código SQL [-]
Create or Replace package MY_PACK is
 
TYPE TCursor is REF CURSOR;
 
PROCEDURE SELECCIONCODIGOS(cCursor out TCursor);
 
END;

El BODY sería así:

Código SQL [-]
Create or Replace package body MY_PACK is
 
PROCEDURE SELECCIONCODIGOS(cCursor out TCursor) is
begin
  open cCursor for 
    select CODIGOS from CLIENTES;
end;
 
END;
/

Y después, en Delphi, te creas un TQuery (por ejemplo, QSelCod) con el sgte código en donde escribís el SQL:

Código Delphi [-]
begin
  MY_PACK.SELECCIONCODIGOS(:cCursor);
end;

Luego, desde la aplicación hacés el QSelCod.Open y listo.

Tené en cuenta que, dependiendo de la versión de Delphi que utilices, o si utilizás algun componente externo de conexión, tendrás que setear o no el parámetro. Si lo tenés que hacer, seleccioná tipo de dato Cursor y tipo de parámetro Output.

Suerte!


La franja horaria es GMT +2. Ahora son las 18:17:37.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi