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
-
Enviado a la lista de correo pgsql-es-ayuda ([email protected])
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda