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

Responder a