Re: Tabla como parametro de funcion

From: Estéfano Castillo <ecastillo(at)crecic(dot)cl>
To: "'Ricardo Mercado'" <rmercado(at)dportales(dot)cl>, "'Postgres'" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Tabla como parametro de funcion
Date: 2004-06-08 17:18:04
Message-ID: 003101c44d7c$8fd57130$4901a8c0@desarrollo.crecic.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

AQUI TE MANDO UN EJEMPLO, ESPERO TE SIRVA...

CREATE OR REPLACE FUNCTION "public"."seg_llena_cmbspr" (varchar, varchar,
varchar, varchar) RETURNS SETOF "public"."udf_seg_codigo_desc" AS'
DECLARE
pi_vcharCampo_Codigo ALIAS FOR $1;
pi_vcharCampo_Desc ALIAS FOR $2;
pi_vcharNombre_Tabla ALIAS FOR $3;
pi_vcharCondicion ALIAS FOR $4;

v_sqlstring VARCHAR(500);
v_selectstring VARCHAR(500);
v_retval udf_seg_codigo_desc%ROWTYPE;

BEGIN
IF pi_vcharCondicion=''0'' THEN
v_selectstring:=(''LTRIM(''||pi_vcharCampo_Desc||'')'');
ELSE
v_selectstring:=(''LTRIM(''||pi_vcharCampo_Codigo||'')'');
END IF;

FOR v_retval IN EXECUTE ''SELECT ''||v_selectstring||'' FROM
''||pi_vcharNombre_Tabla||'' ORDER BY ''||pi_vcharCampo_Desc||'';''
LOOP
RETURN NEXT v_retval;
END LOOP;
RETURN;
END
'LANGUAGE 'plpgsql' STABLE CALLED ON NULL INPUT SECURITY INVOKER;

Estéfano Castillo E.
Técnico Universitario en Computación e Informática
Jefe de Programación - CRECIC S.A.
Fono : (41) 240002 Anexo 724
Celular : 09-3850119
E-Mail : ecastillo(at)crecic(dot)cl

-----Mensaje original-----
De: pgsql-es-ayuda-owner(at)postgresql(dot)org
[mailto:pgsql-es-ayuda-owner(at)postgresql(dot)org]En nombre de Ricardo Mercado
Enviado el: martes, 08 de junio de 2004 11:26
Para: Postgres
Asunto: [pgsql-es-ayuda] Tabla como parametro de funcion

HOLA.

La idea es la siguiente:

Quiero pasar como parámetro a una función ppgsql el nombre de una
tabla, para luego dentro de la función hacer SELECT, o cualquier otra
operación.

EJEMPLO:

CREATE OR REPLACE FUNCTION myfuncion(Text) RETURNS SETOF Mytype AS '
DECLARE
My_Tabla ALIAS FOR $1;
My_Registro RECORD;
BEGIN
FOR My_Registro IN SELECT * FROM My_Tabla LOOP
.....
.....
.....
RETURN NEXT My_Registro
END LOOP;
RETURN NEXT My_Registro;
END;
' LANGUAGE 'plpgsql';

El tema es que cuando ejecuto mi función haciendo

SELECT * FROM myfuncion('clientes');

Me marca ERROR: missing ".." at end of SQL expression y no me reconoce
My_Tabla, es decir, postgres en el fondo no hace una sustitución de
my_tabla por el valor del parámetro que le paso (clientes).

Necesito una cuerda para salir a flote.

--
RICARDO IGNACIO MERCADO ARANEDA
Dirección de Sistemas
Organización Educacional Diego Portales
Fono 41-910252 Anexo 225 CONCEPCIÓN
E-Mail : rmercado(at)dportales(dot)cl
MSN : rmercado23(at)hotmail(dot)com

---------------------------(end of broadcast)---------------------------
TIP 2: puedes desuscribirte de todas las listas simultáneamente
(envíe "unregister SuDirecciónDeCorreo" a majordomo(at)postgresql(dot)org)

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Leonel Nunez 2004-06-08 18:18:59 Re: Formulario HTML-->PHP-->Postgres que estoy
Previous Message Manuel 2004-06-08 17:03:55 Re: Tabla como parametro de funcion