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:
(corte)
> Não to conseguindo colocar NULL no lugar da variavel conta_detalhe
(corte)
Não validei o código abaixo checando se é compilável, mas tente essa:
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;
IF conta_detalhe IS NULL THEN
EXECUTE 'INSERT INTO conta
VALUES('||retorno||','''||conta_alias||''',NULL,current_timestamp,NULL,''1'',NULL)';
ELSE
EXECUTE 'INSERT INTO conta
VALUES('||retorno||','''||conta_alias||''','||conta_detalhe||',current_timestamp,NULL,''1'',NULL)';
END IF;
RETURN retorno;
EXCEPTION
WHEN SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION THEN
RETURN 'SYNTAX ERROR OR ACCESS RULE VIOLATION';
END;
$ LANGUAGE plpgsql;
Detalhe: isto funciona bem quando refere-se a um parâmetro apenas, mas
quando há mais que um o código pode começar a virar uma "tripa" sem
fim. Se for apenas para um ajuste pontual resolve, mesmo não sendo a
solução mais elegante.
--
TIAGO J. ADAMI
http://www.adamiworks.com
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral