Re: Retornando un select ...diferencias de Postgres y MSSQL

From: "Erik Ferney Cubillos Garcia" <erikferneycubillos(at)gmail(dot)com>
To: "Raul Andres Duque" <ra_duque(at)yahoo(dot)com(dot)mx>
Cc: "Jaime Casanova" <jcasanov(at)systemguards(dot)com(dot)ec>, "Edwin Quijada" <listas_quijada(at)hotmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Retornando un select ...diferencias de Postgres y MSSQL
Date: 2008-10-30 21:13:29
Message-ID: 147151cc0810301413q774c042axd31a6ccafb0ef8a8@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

hola. bueno verás estos dias he tenido el mismo inconveniente, por lo cual
dejé mi función de la siguiente manera

*CREATE OR REPLACE FUNCTION spnmcalpromconcepto (
IN PSiCodEmpr INTEGER, -- Codigo de Empresa
IN PDeCodEmpl NUMERIC, -- Codigo del empleado
IN PStNroCont CHARACTER VARYING, -- Número de Contrato
IN PDtFecInic TIMESTAMP, -- Fecha Inicial del calculo
IN PDtFecFina TIMESTAMP, -- Fecha Final del calculo
IN PSiCodConc INTEGER, -- Codigo del concepto a promediar
IN PStTipProm CHARACTER VARYING, -- Indicador de si es con el valor
pagado o el valor real
OUT PDeValProm NUMERIC, -- Base de liquidacion
OUT PStValor CHARACTER VARYING
)
RETURNS RECORD
AS*

como verás tentgo más de dos parametros de salida, de esta forma POSTGRESQL
en mi caso 8.3.x me reconoce eso como un record, de esta forma puedo hacer
el SELECT del procedimiento, de estos dos campos OUT solo hago un select de
*PDeValProm *el otro campo la verdad no le hago nada ni me interesa... solo
lo hice para que me reconociera el record y poder hacer un select

espero te sirva

2008/10/30 Raul Andres Duque <ra_duque(at)yahoo(dot)com(dot)mx>

>
>> ----- Original Message ----- From: "Jaime Casanova" <
>> jcasanov(at)systemguards(dot)com(dot)ec>
>> To: "Edwin Quijada" <listas_quijada(at)hotmail(dot)com>
>> Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
>> Sent: Thursday, October 23, 2008 12:24 PM
>> Subject: Re: [pgsql-es-ayuda] Retornando un select ...diferencias de
>> Postgres y MSSQL
>>
>>
> On 10/23/08, Edwin Quijada <listas_quijada(at)hotmail(dot)com> wrote:
>>
>>>
>>> Me ha tocado trabajar en estos dias con MSSQL y he visto algo interesante
>>> y es que los Store procedure pueden retornar un set de datos , un >select,
>>> pero con la desventaja de que este no puede ser usado en un select.
>>> A raíz de esto me gustaría hacer una pregunta a los que están cerca del
>>> código Postgres, Alvaro y Jaime, cual es la razon mas técnica de porque
>>> >Postgres no puede hacer esto,retornar una selección, sin tener que
>>> declarar un tipo.
>>> Esto me asalta porque me lo han preguntado varias veces y la verdad la
>>> respuesta que he dado no se si me convence mucho o estoy equivocado.
>>>
>>>
>> si puedes...
>>
>> CREATE FUNCTION fsetdatos() RETURNS SETOF record AS
>> begin
>> return query select * from tabla;
>> return;
>> end;
>> LANGUAGE plpgsql;
>>
>>
>> claro que en el select deberas hacer algo como: "select * from
>> fsetdatos(campo1 tipo1[, ...])"
>>
>> o puedes declarar los tipos como parametros OUT
>>
>> CREATE FUNCTION fsetdatos(out campo1 tipo1[, ...]) RETURNS SETOF record AS
>> begin
>> return query select * from tabla;
>> return;
>> end;
>> LANGUAGE plpgsql;
>>
>> y en el select solo haces: "select * from fsetdatos()"
>>
>
> Jaime intenté realizar el ejercicio con los parametros tipo OUT (la primera
> forma ya la había utilizado y funciona perfecto) pero ni siquiera pude
> definir la función !!!
>
> CREATE TABLE temporal
> (
> ide serial NOT NULL,
> num integer,
> fecha date,
> CONSTRAINT pk_temporal PRIMARY KEY (ide)
> )
> WITH (OIDS=FALSE);
>
> CREATE FUNCTION select_temporal(OUT valor integer) RETURNS SETOF record AS
> $BODY$return select temporal.ide::integer;
> return;
> $BODY$
> LANGUAGE 'plpgsql' VOLATILE;
>
> ERROR: function result type must be integer because of OUT parameters
>
>
> ********** Error **********
>
> ERROR: function result type must be integer because of OUT parameters
> SQL state: 42P13
>
> Se me hace extraño que en nungún momento se asigne el valor al parametro
> 'valor'.
>
> Atentamente,
>
> RAUL DUQUE
> Bogotá, Colombia
>
>
> --
>> Atentamente,
>> Jaime Casanova
>> Soporte y capacitación de PostgreSQL
>> Asesoría y desarrollo de sistemas
>>
> Guayaquil - Ecuador
> Cel. +59387171157
> --
> TIP 3: Si encontraste la respuesta a tu problema, publícala, otros te lo
> agradecerán
> --
> TIP 10: no uses HTML en tu pregunta, seguro que quien responda no podrá
> leerlo
>

--
Atentamente,

______________________________
ERIK FERNEY CUBILLOS GARCIA
Ing. Desarrollo - Kactus HR
DIGITAL WARE LTDA.
Calle 72 No. 12-65 Piso 2
Bogotá, Colombia
erikc(at)digitalware(dot)com(dot)co
www.digitalware.com.co

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2008-10-30 21:51:01 Re: Retornando un select ...diferencias de Postgres y MSSQL
Previous Message Erik Ferney Cubillos Garcia 2008-10-30 21:10:39 Re: Retornando un select ...diferencias de Postgres y MSSQL