Em 9 de maio de 2011 08:37, Alberto Matos <albe...@pmibrasil.eti.br>escreveu:
> Bom dia a todos, gostaria de saber o que tem de errado nesta função. > > > CREATE OR REPLACE FUNCTION public.fnc_execute_ddl(pddl TEXT) RETURNS > BOOLEAN AS > $body$ > DECLARE > lret BOOLEAN; > lsql TEXT; > BEGIN > lret := FALSE; > BEGIN > EXECUTE pddl; > lret := TRUE; > COMMIT; > EXCEPTION > WHEN OTHERS THEN > lret := FALSE; > ROLLBACK; > END; > RETURN lret; > END; > $body$ > LANGUAGE 'plpgsql'; > > > Dentro de uma pl/pgsql não é possível utilizar "COMMIT" e "ROLLBACK", pois uma function no postgresql já é, por si só, uma transação. Faça assim: CREATE OR REPLACE FUNCTION public.fnc_execute_ddl(pddl TEXT) RETURNS BOOLEAN AS $body$ DECLARE lret BOOLEAN; lsql TEXT; BEGIN lret := FALSE; BEGIN EXECUTE pddl; lret := TRUE; EXCEPTION WHEN OTHERS THEN lret := FALSE; END; RETURN lret; END; $body$ LANGUAGE 'plpgsql'; -- Fabrízio de Royes Mello >> Blog sobre TI: http://fabriziomello.blogspot.com >> Perfil Linkedin: http://br.linkedin.com/in/fabriziomello
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral