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
