Re: Ayuda con Consultas dinámicas en pl/pgsql

From: Juanky Moral <juanky(dot)moral(at)gmail(dot)com>
To: Esteban Osorio <eosorio(at)economia(dot)cl>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Ayuda con Consultas dinámicas en pl/pgsql
Date: 2005-01-11 19:55:39
Message-ID: 463a53a405011111553384fbcd@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Marcelo Retamal acaba de postear un ejemplo muy claro:

Hola, existe otra opción de creación de una f(x) para retornad dos valores.
1º crear un tipo de registro, asi como
create type nombre_tipo (campo_tipo1 as tipo de dato,....campo_tipon as
tipo de dato);
2 º crear la función que retornará el tipo de datos:
create function nombref(x)(campo1,campo2,...campo_n) returns nombre_tipo
as ' declare...
3º Definir una variable del tipo de registro:
variable_tipo nombre_tipo%rowtype;

4º Cuando obtienes los valores que necesitas asignas el resultado de esta
forma:
variable_tipo.campo_tipo1 := registro.camposelect;

5º Devolver el registro de esta forma:
return variable_tipo;

Aquí hay un ejemplo concreto:

drop type registro_sda cascade;
create type registro_sda as (numero varchar(8),ficticio boolean);

create function proc_busqueda_numeros_sda(int,int,varchar(6)) returns
registro_sda as '
declare
planta alias for $1;
ciclo alias for $2;
troncal alias for $3;
myrec record;
registro registro_sda%rowtype;
begin
select sda_snumero,sda_bficticio into myrec from sda where
sda_nplanta = planta and sda_nciclo = ciclo
and sda_stroncal = troncal;
if not found then
registro.numero := '' '';
registro.ficticio := ''false'';
else
registro.numero := myrec.sda_snumero;
registro.ficticio := myrec.sda_bficticio;
end if;
return registro;
end;
'language 'plpgsql';

On Tue, 11 Jan 2005 16:07:18 -0400, Esteban Osorio <eosorio(at)economia(dot)cl> wrote:
>
>
> Hola a todos:
>
> Alguien tiene algún ejemplo de manejo de consultas dinámicas dentro del
> lenguaje pl/pgsql que pudiese compartir. Estuve viendo la documentación pero
> no me queda para nada claro.
>
>
> De antemano gracias a cualquier aporte.
>
>
> Esteban.

--
Juanky Moral
(desde Valencia, España)
"El universo no fue hecho a medida del hombre; tampoco le es hostil:
Es indiferente."
-- Carl Sagan.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Reyes Abraham Orozco Macias 2005-01-11 20:00:11 Codificacion de la Base de datos
Previous Message Grover Navia 2005-01-11 19:24:22 Relacionar Tablas