From: | Leonel Fuentes Marrero <lfmarrero(at)uci(dot)cu> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Problema para construir una funcion dinamicamente |
Date: | 2012-02-08 13:25:33 |
Message-ID: | 64ed2557-e42e-4e1d-a6c7-e485c4820af4@ucimail1.uci.cu |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola Familia:
Quiero construir una función dinámicamente y me da error.
--------------------------------------------------------
ERROR: syntax error at or near "if"
LINE 3: if not found then
^
QUERY:
SELECT * from pg_catalog.pg_class pgc,pg_catalog.pg_namespace pgn where pgc.relname = 'loca1' and pgc.relnamespace=pgn.oid and pgn.nspname='public';
if not found then
create table loca1 (id int);
else
insert into loca1 values (1);
insert into loca1 values (2);
insert into loca1 values (3);
end if;
CONTEXT: PL/pgSQL function "loca" line 18 at EXECUTE statement
********** Error **********
ERROR: syntax error at or near "if"
Estado SQL:42601
Contexto:PL/pgSQL function "loca" line 18 at EXECUTE statement
--------------------------------------------------------
la función es esta
-------------------------------------------------------------
CREATE OR REPLACE FUNCTION loca(_var text)
RETURNS void AS
$BODY$
declare
nuevas record;
inicio record;
nomb varchar;
script text;
begin
script:= '
SELECT * from pg_catalog.pg_class pgc,pg_catalog.pg_namespace pgn where pgc.relname = ' || '''loca1''' || ' and pgc.relnamespace=pgn.oid and pgn.nspname=' || '''' || $1::text || '''' || ';
if not found then
create table loca1 (id int);
else
insert into loca1 values (1);
insert into loca1 values (2);
insert into loca1 values (3);
end if;
';
execute script;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION loca(text) OWNER TO postgres;
-----------------------------------------------------------
lo que me llama la atención es que agarro el código de la query y lo pongo en otra función y funciona bien.
Gracias de antemano.
Saludos
Ing. Leonel Fuentes Marrero
Fin a la injusticia, LIBERTAD AHORA A NUESTROS CINCO COMPATRIOTAS QUE SE ENCUENTRAN INJUSTAMENTE EN PRISIONES DE LOS EEUU!
http://www.antiterroristas.cu
http://justiciaparaloscinco.wordpress.com
From | Date | Subject | |
---|---|---|---|
Next Message | Alejandro Carrillo | 2012-02-08 13:53:56 | Re: Problema para construir una funcion dinamicamente |
Previous Message | A J | 2012-02-08 11:45:09 | Agotamiento del Espacio en Disco al Ejecutar Conulta |