Re: return procedimientos o funciones

From: tgutierrez(at)unipamplona(dot)edu(dot)co
To: "angel Iracheta" <angel(dot)iracheta(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: return procedimientos o funciones
Date: 2004-10-12 19:53:06
Message-ID: 60331.64.76.58.174.1097610786.squirrel@correo.unipamplona.edu.co
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Ayuda
como hago para que un procedimiento o funcion, devuelva al mismo tiempo
dos variables...

Gracias.

Tania

> Tomando en cuenta como tienes declarada la función: "CALLED ON NULL
> INPUT", lo cual en la ayuda dice textualmente:
>
> "CALLED ON NULL INPUT (the default) indicates that the function will
> be called normally when some of its arguments are null. It is then the
> function author's responsibility to check for null values if necessary
> and respond appropriately."
>
> Yo creo que es necesario que verifiques si están llegando valores
> nulos a la función, y también es importante que verifiques si las
> variables PR_SEQ y PR_NUM igualmente están recibiendo un valor nulo.
> Sobre todo en el caso de PR_NUM porque toma en cuenta que si traes un
> dato con la función MAX() de una tabla sin registros, no te regresará
> un cero, te regresará un valor nulo.
>
> Saludos!
>
>
> On Tue, 12 Oct 2004 11:56:26 -0500 (COT),
> tgutierrez(at)unipamplona(dot)edu(dot)co <tgutierrez(at)unipamplona(dot)edu(dot)co> wrote:
>> > ¿Que es lo que te marca la función exactamente? digo, para tratar de
>> > hacer un diagnóstico mas preciso.
>>
>> es uns funcion para insertar un registro en la tabla requerimiento.
>> la tabla tiene una primaria autonumerica(requ_id) y un campo que
>> necesariamente tiene que ser secuencial (requ_numero).
>>
>> En el momento que se inserte el toma el autonumerico y examina el campo
>> requ_numero, el maximo valor y le suma uno.
>>
>> lo estoy intentado hacer por un procedimeitno. pero tampoco funciona:
>>
>> CREATE OR REPLACE PROCEDURE "asistencia"."pr_asist_requerimiento" (
>> pr_requ_referencia in varchar,
>> pr_requ_descripcion in varchar,
>> pr_requ_causa in varchar,
>> pr_requ_obsesolicitante in varchar,
>> pr_requ_prioridad in varchar,
>> pr_requ_fechasolicitud in TIMESTAMP,
>> pr_requ_fechaentrega in TIMESTAMP,
>> pr_requ_registradopor in varchar,
>> pr_area_id in numeric,
>> pr_usua_idsolicita in numeric,
>> pr_usua_idasignado in numeric,
>> pr_area_iddestino in numeric,
>> pr_requ_archivo in varchar,
>> pr_seq out numeric,
>> pr_num out numeric
>> )
>> BEGIN
>> select into pr_seq nextval (''asistencia.s_requ_id'');
>> SELECT max(requ_numero) + 1
>> INTO pr_num FROM asistencia.requerimiento;
>> INSERT INTO "asistencia"."requerimiento" ("requ_id","requ_referencia",
>> "requ_descripcion", "requ_causa", "requ_obsesolicitante",
>> "requ_prioridad", "requ_fechasolicitud", "requ_fechaentrega",
>> "requ_fechacambio", "requ_registradopor", "area_id", "usua_idsolicita",
>> "usua_idasignado", "area_iddestino", "requ_archivo","requ_numero")
>> VALUES
>> (pr_seq,pr_requ_referencia, pr_requ_descripcion, pr_requ_causa,
>> pr_requ_obsesolicitante, pr_requ_prioridad, pr_requ_fechasolicitud,
>> pr_requ_fechaentrega, now(), pr_requ_registradopor, pr_area_id,
>> pr_usua_idsolicita, pr_usua_idasignado, pr_area_iddestino,
>> pr_requ_archivo,pr_num);
>> END;
>>
>>
>>
>> > On Tue, 12 Oct 2004 10:47:49 -0500 (COT),
>> > tgutierrez(at)unipamplona(dot)edu(dot)co <tgutierrez(at)unipamplona(dot)edu(dot)co> wrote:
>> >> Saludos Amigos de la lista
>> >>
>> >> Tengo la necesidad de crear un procedimeinto que retorne dos
>> variables,
>> >>
>> >> habria forma de realizarlo
>> >>
>> >> las formas en que he probado no funcionan:
>> >>
>> >> CREATE OR REPLACE FUNCTION "asistencia"."pr_asist_requerimiento"
>> >> (varchar,
>> >> varchar, varchar,varchar,varchar,TIMESTAMP,TIMESTAMP,varchar,numeric,
>> >> numeric,numeric,
>> >> numeric,varchar) RETURNS integer, integer AS'
>> >> DECLARE
>> >> seq integer;
>> >> num integer;
>> >> BEGIN
>> >> select into seq nextval (''asistencia.s_requ_id'');
>> >> SELECT max(requ_numero) + 1
>> >> INTO num FROM asistencia.requerimiento;
>> >> INSERT INTO "asistencia"."requerimiento"
>> ("requ_id","requ_referencia",
>> >> "requ_descripcion", "requ_causa", "requ_obsesolicitante",
>> >> "requ_prioridad", "requ_fechasolicitud", "requ_fechaentrega",
>> >> "requ_fechacambio", "requ_registradopor", "area_id",
>> "usua_idsolicita",
>> >> "usua_idasignado", "area_iddestino", "requ_archivo","requ_numero")
>> >> VALUES
>> >> (seq,$1,$2,$3,$4,$5,$6,$7,now(),$8,$9,$10,$11,$12,$13,num);
>> >> return seq, num;
>> >> END;
>> >> 'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
>> >>
>> >> Gracias
>> >>
>> >> Att,
>> >> Tania Gutierrez
>> >>
>> >> ---------------------------(end of
>> broadcast)---------------------------
>> >> TIP 8: explain analyze es tu amigo
>> >>
>> >
>>
>>
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message tgutierrez 2004-10-12 20:12:46 procedimiento o funcion que devuelva 2 o mas varibles al mismo tiempo
Previous Message tgutierrez 2004-10-12 15:47:49 return procedimientos o funciones