Em 12 de maio de 2011 16:12, Luciano Schardosim <[email protected]> escreveu:
> Pessoal,
> vamos lá. Dado o seguinte trecho hipotético de código:
> CREATE OR REPLACE FUNCTION ativo(integer,character(2),integer) RETURNS
> integer CALLED ON NULL INPUT AS $$
> DECLARE
>     conta_id alias for $1;
>     conta_alias for $2;
>     conta_detalhe alias for $3;
>     retorno integer;
> BEGIN
>     EXECUTE 'SELECT nextval(''conta_conta_id_seq''::text)' retorno;
>     EXECUTE 'INSERT INTO conta
> VALUES('||retorno||','''||conta_alias||''','||conta_detalhe||',current_timestamp,NULL,''1'',NULL)';
> RETURN retorno;
> EXCEPTION
>     WHEN SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION THEN
>     RETURN 'SYNTAX ERROR OR ACCESS RULE VIOLATION';
> END;
> $ LANGUAGE plpgsql;
> A questão é a segunte, eu posso ter a segunte entreda: select
> ativo(1451,'LU',NULL) e é esse último null que tá me dando trabalho pois o
> EXECUTE não reconhece quando é null e ai ja viu, meu insert fica incompleto.
> Não to conseguindo colocar NULL no lugar da variavel conta_detalhe. Dando o
> seguinte código de erro:
> ERRO:  cannot EXECUTE a null querystring
> CONTEXTO:  PL/pgSQL function "ativo" line xx at EXECUTE statement
> Se alguem tiver alguma dica, valeu...
> --


Creio que a função quote_nullable resolva seu problema.
http://www.postgresql.org/docs/current/interactive/plpgsql-statements.html#PLPGSQL-QUOTE-LITERAL-EXAMPLE

Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a