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

From: "Raul Andres Duque" <ra_duque(at)yahoo(dot)com(dot)mx>
To: "Jaime Casanova" <jcasanov(at)systemguards(dot)com(dot)ec>, "Edwin Quijada" <listas_quijada(at)hotmail(dot)com>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Retornando un select ...diferencias de Postgres y MSSQL
Date: 2008-10-30 21:05:17
Message-ID: E72B70311B7C4F518E3FF251E813FD94@amadeus.net.co
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

>
>----- 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

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Erik Ferney Cubillos Garcia 2008-10-30 21:10:39 Re: Retornando un select ...diferencias de Postgres y MSSQL
Previous Message Edwin Quijada 2008-10-30 20:45:46 RE: Permiso para BD