Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Ayuda con Stored Procedure Firebird (https://www.clubdelphi.com/foros/showthread.php?t=52000)

Blackspike 07-01-2008 11:20:39

Ayuda con Stored Procedure Firebird
 
Buenos dias a todos y feliz año.

Queria hacer una consulta a los mas expertos con Firebird, el problema que tengo es que estoy intentando hacer un Stored Procedure con Firebird, estoy usando el IBExpert Personal Edition, y lo que estoy intentando hacer pero no consigo que me funcione es crear una select y que sea devuelta dentro de un cursor, es decir un estilo como el oracle.

create procedure NEW_PROCEDURE (p_cursor ref cursor)
IS
BEGIN
OPEN p_cursor FOR
SELECT *
FROM TABLA;
END;

He estado investigando con la ayuda del señor google, pero no e conseguido encontrar nada, por eso me dirijo a la gente que los utiliza.

De antemano muchas gracias pos vuestra ayuda.

Kipow 07-01-2008 17:29:09

En Firebird/Interbase lo que podes hacer es crear procedimientos almacenados que te regresen multiples filas, con la ventaja de poder utilizar los procedimientos en consultas SQL.

Por ejemplo
Código:


CREATE PROCEDURE Miprocedure(param1 type1, param2 type2)
returns(campo1 type1,
          campo2 type2
          etc.)
begin
  FOR
      SELECT campo1, campo2
      FROM tabla A
      WHERE A.campo1 = param1 and A.campo2 = param2
      INTO :campo1, campo2
  BEGIN
      suspend;
  END
end

Ejemplo de uso

Código:

  SELECT campo1, campo2
  FROM MiProcedure(:parametro1, :parametro2)


Blackspike 07-01-2008 18:05:44

Muchas Gracias por la respuesta.

He probado el sistema que me has comentado y me funciona bien.

Lo que yo me preguntaba era si es posible realizar un procedimiento que devuelda directamente un cursor con los datos sin tener que hacer despues de la creacion del procedimiento la select que llama a dicho procedimiento.

No se si me e explicado bien jejeje.

Pero muchas gracias por la respuesta.

jachguate 07-01-2008 18:08:46

Lo dicho por Kipow es muy cierto. Para complementar, solo comentar que en Firebird no existe ningún tipo equivalente al ref_cursor de Oracle.

Recuerdo haber escuchado sobre un proyecto llamado Firacle, o algo así... que pretendía implementar un diccionario de datos idéntico al de oracle, de manera que muchas aplicaciones realizadas para este corrieran sin problemas en firebird, quizás ellos se han planteado implementar algunas de estas cosas, como los ref_cursors o los packages.

No puedo comentar mas, ni se si el proyecto sigue activo pues no le doy seguimiento.

Hasta luego.

;)

Blackspike 07-01-2008 18:18:39

Muchas Gracias por la aclaracion y por vuestra ayuda. :)


La franja horaria es GMT +2. Ahora son las 18:45:06.

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