Re: Ayuda Por Favor, Me hechan del Trabajo

From: "Cesar Alvarado" <alvaradopcesar(at)hotmail(dot)com>
To: "Jaime Casanova" <systemguards(at)gmail(dot)com>, "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 15:20:20
Message-ID: BAY106-DAV10663CA65872F37FE8A7F9DB1B0@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

CREATE TABLE public.persona
(
id numeric(5) NOT NULL,
nombre varchar(10) NOT NULL,
apellido varchar(10) NOT NULL,
fecha_nac date,
sexo char(1) NOT NULL,
habilitado bool NOT NULL DEFAULT false,
CONSTRAINT persona_pkey PRIMARY KEY (id),
CONSTRAINT chk_sexo CHECK sexo = 'M'::bpchar OR sexo = 'F'::bpchar
) WITH OIDS;

----------------------

CREATE OR REPLACE FUNCTION public.f_persona(numeric)
RETURNS SETOF persona AS
'
SELECT * FROM persona WHERE id = $1;
'
LANGUAGE 'sql' VOLATILE;

--------------
select * from f_persona(1);

Saludos
Cesar Alvarado P.
----- Original Message -----
From: "Jaime Casanova" <systemguards(at)gmail(dot)com>
To: "P(at)blo Villad@" <andresv50(at)hotmail(dot)com>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Friday, May 06, 2005 1:29 AM
Subject: Re: [pgsql-es-ayuda] Ayuda Por Favor, Me hechan del Trabajo

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

---------------------------(fin del mensaje)---------------------------
TIP 8: explain analyze es tu amigo

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Christian Cárdenas 2005-05-06 15:29:49 unsuscribe]
Previous Message Alvaro Herrera 2005-05-06 15:04:56 Re: Ayuda Por Favor, Ayuda