PDA

Ver la Versión Completa : Ayuda con Stored Procedure Firebird


Blackspike
07-01-2008, 11:20:39
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


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


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. :)