Paolo Pinheiro escreveu: > > Estou usando o comando "execute" dentro de uma function, o mesmo faz um > insert em uma tabela com 3 campos. Quando o insert é em 2 campos varchar > not null funciona, quando é adicionado um campo numeric que pode ser > null não funciona mais.. > > FOR todos_servicos IN > SELECT distinct serv_codigo, serv_descricao, serv_tempopadrao, > serv_precohora FROM servicos ORDER BY serv_codigo > LOOP > -- Com os campos serv_codigo e serv_descricao roda. > EXECUTE ' INSERT INTO temp_servicos ( serv_codigo , > serv_descricao ) VALUES ( ' > || quote_literal(todos_servicos.serv_codigo) || > ' , ' || quote_literal(todos_servicos.serv_descricao) || ' ); '; > -- Adicionando o campo serv_precohora não roda mais. > EXECUTE ' INSERT INTO temp_servicos ( serv_codigo , > serv_descricao , serv_precohora ) VALUES ( ' > || quote_literal(todos_servicos.serv_codigo) || > ' , ' || quote_literal(todos_servicos.serv_descricao) || ' , ' > || todos_servicos.serv_precohora || > ' ); '; > > END LOOP; >
Se você quer dizer que quando o campo "todos_servicos.serv_precohora" é nulo o string resultante também é nulo então este é exatamente o comportamento esperado. Em uma concatenação se qualquer dos elementos sendo concatenados for NULL então o resultado é NULL. (ver manual) Tente: ... ' , ' || quote_literal(todos_servicos.serv_descricao) || ' , ' || coalesce(todos_servicos.serv_precohora, 'NULL') || ' ); '; Osvaldo _______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral