Skip site navigation (1) Skip section navigation (2)

RE: Ayuda con Funcion

From: "Listas" <masc68(at)gmail(dot)com>
To: "'Agustin Ignacio Genoves'" <agustingenoves(at)gmail(dot)com>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Ayuda con Funcion
Date: 2009-10-27 17:01:43
Message-ID: 003b01ca5727$2ad58da0$8080a8e0$@com (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Hola, de esta forma funciona, pero...

1.- No quiero crear un tipo para que me retorne el registro, por eso utiliza
setof record
2.- yo uso parámetros in y out, para evitar el tener que crear un tipo
definido por el usuario

Saludos

-----Mensaje original-----
De: Agustin Ignacio Genoves [mailto:agustingenoves(at)gmail(dot)com] 
Enviado el: martes, 27 de octubre de 2009 12:58
Para: Listas
CC: pgsql-es-ayuda(at)postgresql(dot)org
Asunto: Re: [pgsql-es-ayuda] Ayuda con Funcion

Si, lo que pasa es que vos tenes que usar return registro, creo que
como lo tenes planteado no te va a retornar nada.
Lee lo siguiente:

http://www.postgresql.org/docs/8.4/static/plpgsql-control-structures.html

o fijate usando algo asi:

CREATE TABLE foo (fooid INT, foosubid INT, fooname TEXT);
INSERT INTO foo VALUES (1, 2, 'three');
INSERT INTO foo VALUES (4, 5, 'six');

CREATE OR REPLACE FUNCTION getAllFoo() RETURNS SETOF foo AS
$BODY$
DECLARE
    r foo%rowtype;
BEGIN
    FOR r IN SELECT * FROM foo
    WHERE fooid > 0
    LOOP
        -- can do some processing here
        RETURN NEXT r; -- return current row of SELECT
    END LOOP;
    RETURN;
END
$BODY$
LANGUAGE 'plpgsql' ;

El día 27 de octubre de 2009 12:47, Listas <masc68(at)gmail(dot)com> escribió:
> Estas en lo correcto y lo solicione así, pero no me arroja ningún
resultado
> , debiendo hacerlo?????
>
> -----Mensaje original-----
> De: Agustin Ignacio Genoves [mailto:agustingenoves(at)gmail(dot)com]
> Enviado el: martes, 27 de octubre de 2009 12:43
> Para: Listas
> CC: pgsql-es-ayuda(at)postgresql(dot)org
> Asunto: Re: [pgsql-es-ayuda] Ayuda con Funcion
>
> Cuando haces
>
>  CONSULTA := 'SELECT a.id,a.opcion
>  FROM public.epropiedades_provincias a
>  WHERE a.id_estado =''SA'' and a.relacion = quote_literal(tipo)';
>
> le estas pasando una variable a un string creo tendrias que concatenarlo
>
> 2009/10/27 Listas <masc68(at)gmail(dot)com>:
>> Hola Lista, miren tengo la siguiente función:
>>
>>
>>
>> CREATE OR REPLACE FUNCTION "public"."get_provincias" (co_region integer,
> out
>> id smallint, out opcion varchar) RETURNS SETOF record AS
>>
>> DECLARE
>>
>>       CONSULTA varchar;
>>
>>       tipo  integer;
>>
>>
>>
>> BEGIN
>>
>>
>>
>> tipo = $1;
>>
>>
>>
>>  IF tipo = 0 THEN
>>
>>  CONSULTA := 'SELECT a.id,a.opcion
>>
>>  FROM public.epropiedades_provincias a
>>
>>  WHERE a.id_estado =''SA'' ';
>>
>>  EXECUTE CONSULTA;
>>
>>  END IF;
>>
>>
>>
>>  IF tipo <> 0 THEN
>>
>>  CONSULTA := 'SELECT a.id,a.opcion
>>
>>  FROM public.epropiedades_provincias a
>>
>>  WHERE a.id_estado =''SA'' and a.relacion = quote_literal(tipo)';
>>
>>   EXECUTE CONSULTA;
>>
>>  END IF;
>>
>>
>>
>>  return;
>>
>>  END;
>>
>> LANGUAGE 'plpgsql'
>>
>>
>>
>> VOLATILE CALLED ON NULL INPUT SECURITY INVOKER COST 100 ROWS 1000;
>>
>>
>>
>> Al ejecutarla me señala lo siguiente :
>>
>> ERROR:  column "tipo" does not exist
>>
>>
>>
>> Pero tipo es una variable in y está declarada…  Qué podrá ser
>>
>>
>>
>> Gracias de Antemano
>>
>>
>>
>> Mario
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> __________ Información de ESET NOD32 Antivirus, versión de la base de
> firmas
>> de virus 4545 (20091026) __________
>>
>> ESET NOD32 Antivirus ha comprobado este mensaje.
>>
>> http://www.eset.com
>>
>
>
> __________ Información de ESET NOD32 Antivirus, versión de la base de
firmas
> de virus 4545 (20091026) __________
>
> ESET NOD32 Antivirus ha comprobado este mensaje.
>
> http://www.eset.com
>
>
>
> __________ Información de ESET NOD32 Antivirus, versión de la base de
firmas
> de virus 4545 (20091026) __________
>
> ESET NOD32 Antivirus ha comprobado este mensaje.
>
> http://www.eset.com
>
>
>
 

__________ Información de ESET NOD32 Antivirus, versión de la base de firmas
de virus 4545 (20091026) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com
 
 

__________ Información de ESET NOD32 Antivirus, versión de la base de firmas
de virus 4545 (20091026) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com
 


In response to

pgsql-es-ayuda by date

Next:From: Alvaro HerreraDate: 2009-10-27 17:52:24
Subject: Re: RESTAURAR BACKUP SIN DATOS
Previous:From: Fernando HeviaDate: 2009-10-27 16:53:25
Subject: RE: problema con max-pool-conecction

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group