From: | Emanuel Calvo Franco <postgres(dot)arg(at)gmail(dot)com> |
---|---|
To: | Dianna Florencia Romero Berrospi <diannys_1282(at)hotmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Error en Funcion Recursiva |
Date: | 2010-06-24 17:35:33 |
Message-ID: | AANLkTiku_zNVBNMGUm8WgTG4C94ljc8rLge9KbEqZs4z@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
2010/6/24 Dianna Florencia Romero Berrospi <diannys_1282(at)hotmail(dot)com>:
> Hola gentita, yo de nuevo, tengo la siguiente función, a pesar de lo que
> revisar n veces no encuentro el error, cuando ejecuto la siguiente función
> me da como resultado "unnamed portal", por favor alguien puede decirme que
> esta mal, gracias.
> Ah!!! y Gracias a Emmanuel Calvo, por responder a mi anterior pregunta.
>
>
> Create or Replace function spPruebaPrueba
> (
> docu varchar
> )
> Returns SetOf RefCursor As
> $Body$
> Declare Lista RefCursor;
> Begin
> Open Lista For
> With Recursive
> Referencia (DocId, DocEnc, RefDoc, RefEnc) As
> (
> Select T0.DocId,
> T1.DocEnc,
> T0.ReFDoc,
> T2.DocEnc
> From DocumentoReferencia T0
> Inner Join Documento T1 On (T0.DocId = T1.DocId)
> Inner Join Documento T2 On (T0.RefDoc = T2.DocId)
> Where T0.RefDoc ilike 'E-02993'
> Union All
> Select T0.DocId,
> T2.DocEnc,
> T0.RefDoc,
> T3.DocEnc
> From DocumentoReferencia T0
> Inner Join Referencia T1 On (T0.RefDoc = T1.docid)
> Inner Join Documento T2 On (T0.DocId = T2.DocId)
> Inner Join Documento T3 On (T0.RefDoc = T3.DocId)
> )
> Select DocId, DocEnc, RefDoc, RefEnc from referencia;
> Return Next Lista;
> Return;
> End;
> $Body$
> LANGUAGE 'plpgsql' VOLATILE;
Estas retornando un set de refcursor? Creo que no es lo que quieres
(según lo que estoy
observando de la función). refcursor es una referencia a un cursor.
Para que querés recorrer la consulta con un for? Para eso directamente
(si aún quieres
encapsularlo en una función), incrusta el SQL en una función LANGUAGE
'sql' y llámalo:
SELECT * FROM spPruebaPrueba('valor');
Lo que si, tendrás que crear una vista o un tipo para el dato que
retorna (y utilizar RETURNS
SETOF prueba_return):
CREATE VIEW prueba_return AS Select DocId, DocEnc, RefDoc, RefEnc from
referencia;
Saludos
--
Emanuel Calvo Franco
www.emanuelcalvofranco.com.ar
Join: http://www.thevenusproject.com/
From | Date | Subject | |
---|---|---|---|
Next Message | Silvio Quadri | 2010-06-24 17:36:25 | Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Creación de id |
Previous Message | Alvaro Herrera | 2010-06-24 17:28:03 | Re: Creación de id |