Re: Ayuda Por Favor, Me hechan del Trabajo

From: Jaime Casanova <systemguards(at)gmail(dot)com>
To: "P(at)blo Villad(at)" <andresv50(at)hotmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Ayuda Por Favor, Me hechan del Trabajo
Date: 2005-05-06 06:29:02
Message-ID: c2d9e70e050505232929c14b1@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On 5/5/05, P(at)blo Villad@ <andresv50(at)hotmail(dot)com> wrote:
>
> Hola....
>
> Estoy trabajando con procedimientos almacenados, y me gustaría saber
> cómo puedo devolver un record pero que tenga la estructura de una
> tabla,
> ¿cómo podría hacer ésto?.
>
> ME encantaría que me ayudasen cuanto antes, ya que me corre bastante
> prisa conocer la respuesta.
>
> Tengo la siguiente funcion :
>
> CREATE OR REPLACE FUNCTION devolver_registro(varchar) RETURNS SETOF RECORD
>
CREATE OR REPLACE FUNCTION devolver_registro(varchar) RETURNS SETOF tuTabla

> AS '
> DECLARE
> registro RECORD;
> BEGIN
> FOR registro IN SELECT p.pon_emp_nidntfccion, p.pon_nevnto,
>
> p.pon_ttulo
> FROM ponencias p
> WHERE p.pom_emp_nidntfccion=$1;
no debe haber ; (punto y coma) antes de la palabra LOOP
> LOOP
> RETURN NEXT registro ;
> END LOOP ;
> RETURN ;
> END;'
>
> LANGUAGE plpgsql;
>
>
> la llamo de la siguiente manera:
>
> select * from devolver_registro(1);
>
> y me saca el siguiente error
>
> ** a column definition list is required for functions returning "record"
>
> como invoco esa función. Es obligacion poner los parametros. que solucion
> me pueden dar.
>
> como puedo hacerlo sin esta estructura
>
> SELECT * FROM devuelve_registro(14) as (xxx varchar, yyy varchar,
> zzz int, www int);
>
> Ah otra cosa como puedo hacer para que en esta linea de la funcion
>
> FOR registro IN SELECT p.pon_emp_nidntfccion, p.pon_nevnto, p.pon_ttulo
> FROM ponencias p
>
> pueda poner
>
> FOR registro IN SELECT * FROM ponencias p
>
> y no me saque mas errores
>
No veo porque debe darte errores

FOR registro IN SELECT * FROM ponencias p LOOP
>
> Otra forma en que lo realizo es esta
>
> CREATE OR REPLACE FUNCTION CPonencia (varchar) RETURNS SETOF RECORD AS '
> DECLARE
> registro RECORD;
> BEGIN
> FOR registro IN SELECT p.pon_emp_nidntfccion, p.pon_nevnto,
> p.pon_ttulo
> FROM ponencias p
> WHERE p.pom_emp_nidntfccion=$1;
> LOOP
> RETURN NEXT registro ;
> END LOOP ;
> RETURN ;
> END;'
>
> LANGUAGE plpgsql;
>
>
> lo llamo asi
>
> SELECT * from Cponencia ('01') as (x varchar, y varchar, z varchar);
>
> Me saca este erro.
>
>
> ERROR: missing "LOOP" at end of SQL expression
> CONTEXT: compile of PL/pgSQL function "cponencia" near line 4
>
>

--
Atentamente,
Jaime Casanova
(DBA: DataBase Aniquilator ;)

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2005-05-06 06:44:32 Re: Rendimiento del delete
Previous Message Alberto Pia 2005-05-05 23:55:11 Rendimiento del delete