Re: Procedure en postgres

From: "Linder Poclaba" <linder(dot)poclaba(at)gmail(dot)com>
To: "Eliana Gutierrez" <egp1962(at)yahoo(dot)com(dot)au>
Cc: "ayuda postgres" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Procedure en postgres
Date: 2006-11-06 01:44:31
Message-ID: 5aa69e1b0611051744r693f4b2fieaa028f12fcaa606@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El día 5/11/06, Eliana Gutierrez <egp1962(at)yahoo(dot)com(dot)au> escribió:
>
> hola gracias por tu dato, lo estoy probando con la funcion
> CREATE OR REPLACE FUNCTION otherfuncion()
> RETURNS SETOF record AS
> $BODY$
> DECLARE registro RECORD;
> BEGIN
> FOR registro IN
> SELECT
> processes."PT_DLL_ID",
> processes."PT_P_ID",
> processes."PT_CONTEXT",
> processes."PT_CURRENT_STEP",
> processes."PT_TIMER_IN",
> processes."PT_TIMER_OUT",
> processes."PT_PRIORITY",
> processes."PT_STATUS",
> processes."PT_CHAMELEON_ID",
> dllregistry."DLLT_DLL_LOCATION",
> processregistry."PR_LOCATIONT_ORI"
> FROM processes JOIN dllregistry ON processes."PT_DLL_ID" =
> dllregistry."DLLT_DLL_ID"
> JOIN processregistry ON processes."PT_P_ID" =
> processregistry."PR_P_ID"
> AND processes."PT_DLL_ID" = processregistry."PR_DLL_ID"
> WHERE "PT_STATUS" = 0
> ORDER BY processes."PT_DLL_ID", processes."PT_P_ID",
> processes."PT_CONTEXT" LOOP
> RETURN NEXT registro;
> END LOOP;
> RETURN;
> END;
> $BODY$
> LANGUAGE 'plpgsql' VOLATILE;
>
>
> lo ejecuto con esta sentence
>
> SELECT * from otherfuncion() AS (pt_dll_id int4,pt_p_id varchar,pt_context
> int4,pt_current_step int4,pt_timer_in timestamp, pt_timer_out
> timestamp,pt_priority int2,pt_status int2,pt_chameleon
> int4,dllt_dll_location varchar,pr_location_ori char);
>
>
> pero me da el sgte error al ejecutarlo:
>
> ERROR: wrong record type supplied in RETURN NEXT
> CONTEXT: PL/pgSQL function "otherfuncion" line 21 at return next

Hola Eliana ese error sale porque cuando llamas a la función y colocas tus
campos uno o mas tipos de datos no son los correctos de los que tendrías que
recibir, por ejm: talvez el int2 sea int4, revisa bien esa parte.

Manda los mensajes a la lista por si alguien lo lee primero te responderán
más rápido.

Saludos

*Linder Poclaba <linder(dot)poclaba(at)gmail(dot)com>* wrote:
>
>
>
> 2006/11/5, Eliana Gutierrez <egp1962(at)yahoo(dot)com(dot)au>:
> >
> > Estoy usando este procedure
> >
> > CREATE FUNCTION myfun(OUT mycursor refcursor) AS
> > $BODY$begin
> > OPEN mycursor FOR
> > SELECT
> > processes."PT_DLL_ID" AS pt_dll_id,
> > processes."PT_P_ID" AS pt_p_id,
> > processes."PT_CONTEXT" AS pt_context,
> > processes."PT_CURRENT_STEP" AS pt_current_step,
> > processes."PT_TIMER_IN" AS pt_timer_in,
> > processes."PT_TIMER_OUT" AS pt_timer_out,
> > processes."PT_PRIORITY" AS pt_priority,
> > processes."PT_STATUS" AS pt_status,
> > processes."PT_CHAMELEON_ID" AS pt_chameleon,
> > dllregistry."DLLT_DLL_LOCATION" AS dllt_dll_location,
> > processregistry."PR_LOCATIONT_ORI" AS pr_location_ori
> > FROM processes JOIN dllregistry ON processes."PT_DLL_ID" =
> > dllregistry."DLLT_DLL_ID"
> > JOIN processregistry ON processes."PT_P_ID" = processregistry."PR_P_ID"
> > AND processes."PT_DLL_ID" = processregistry."PR_DLL_ID"
> > WHERE "PT_STATUS" = 0
> > ORDER BY pt_dll_id, pt_p_id, pt_context
> > LIMIT 1;
> > CLOSE mycursor;
> > END;$BODY$
> > LANGUAGE 'plpgsql' VOLATILE;
> >
> >
> > nose que estoy haciendo mal que al ejecutarlo por pgadmin con la
> > sentence
> > SELECT myfun(); me retorna
> > Row myfun(refcursor)
> > 1 "<unnamed portal 5>"
> >
> >
> > Agracederia si alguien puede ayudarme pls.
>
>
> Hola eliana, necesariamente necesitas usar cursores?, por lo que leí tu
> anterior pregunta solo quieres tuplas con sus columnas, y lo podrias hacer
> algo así:
>
> CREATE OR REPLACE FUNCTION nombre_funcion() RETURNS SETOF RECORD AS '
> DECLARE registro RECORD;
> BEGIN
> FOR registro IN _aqui_tu_consulta LOOP
> RETURN NEXT registro;
> END LOOP;
> RETURN;
> END;
> 'LANGUAGE 'plpgsql';
>
> y para llamarlo simplemente:
>
> SELECT * FROM nombre_funcion() AS (campo tipo, campo tipo, campo tipo,
> ....);
>
> Saludos.
>
> Eliana
> >
> > Send instant messages to your online friends
> > http://au.messenger.yahoo.com
> >
>
>
>
> --
> Linder Poclaba Lázaro.
> Desarrollador Key Optimal Solutions - KEYOS.
> Usa Software Libre y obtiene tú libertad.
>
>
> Send instant messages to your online friends http://au.messenger.yahoo.com
>

--
Linder Poclaba Lázaro.
Desarrollador Key Optimal Solutions - KEYOS.
Usa Software Libre y obtiene tú libertad.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2006-11-06 01:58:40 Re: Procedure en postgres
Previous Message Gunnar Wolf 2006-11-06 01:41:42 Re: Seguridad en PostgreSQL