Problema para construir una funcion dinamicamente

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

In response to

Responses

Browse pgsql-es-ayuda by date

  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