From: | Eliana Gutierrez <egp1962(at)yahoo(dot)com(dot)au> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Procedure en postgres |
Date: | 2006-11-06 02:05:49 |
Message-ID: | 20061106020549.54382.qmail@web53203.mail.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
hola, los tipos de datos estan correctos, tengo duda eso si con los timestamp. sabe alguien si hay alguna restriccion.
Saludos
Linder Poclaba <linder(dot)poclaba(at)gmail(dot)com> wrote:
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.
Send instant messages to your online friends http://au.messenger.yahoo.com
From | Date | Subject | |
---|---|---|---|
Next Message | Eliana Gutierrez | 2006-11-06 02:16:48 | Fwd: RE: Procedure en postgres |
Previous Message | Alvaro Herrera | 2006-11-06 01:58:40 | Re: Procedure en postgres |