Re: Funcion con SELECT

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: Herman Estaban <hermanestaban(at)gmail(dot)com>
Cc: FORO POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Funcion con SELECT
Date: 2016-05-13 16:20:52
Message-ID: 20160513162052.GA9672@alvherre.pgsql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Herman Estaban escribió:

> 2do:
>
> CREATE OR REPLACE FUNCTION F_CONSULTA_PARAMETRO2(VARCHAR) RETURNS
> SETOF record AS $$
> SELECT APPATER || ' ' || APMATER || ' ' || NOMBRES AS PERSONA
> FROM MA_PERSONAL
> WHERE IDCODIGO = $1;
> $$ LANGUAGE SQL;
>
> SELECT * FROM F_CONSULTA_PARAMETRO2('000033') AS (PERSONA VARCHAR);

> El 2do me podria servir para select mas personalizados con joins pero
> tendria que declarar siempre el campo o los campos de la tablas o
> tablas involucradas en el select?
>
> Hay manera de crear una función sin necesidad de estar declarando los campos?

El sistema necesita saber qué tipo retorna la función antes de
ejecutarla. Si usas RETURNS SETOF RECORD entonces debes indicar el tipo
al momento de invocar la función, que es la cláusula AS. Si usas un
nombre de tipo específico, la cláusula AS no es necesaria. Si necesitas
un tipo que no corresponde con ninguna tabla, puedes crearlo:

CREATE TYPE retorno_de_funcion AS (campo1 int, campo2 text, campo3 date);

CREATE FUNCTION .... RETURNS SETOF retorno_de_funcion ...

--
Álvaro Herrera http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Francisco Olarte 2016-05-13 18:20:33 Re: PLPGSQL o SQL
Previous Message Herman Estaban 2016-05-13 14:39:32 PLPGSQL o SQL