Em 27-08-2013 13:24, Paulo Bastos escreveu:
Quando estou executando a função abaixo abaixo da msg , está dando
erro. A msg abaixo tirei do log.
2013-08-27 13:15:09 BRT ERRO: refer�ncia � coluna "contrato" � amb�gua
no caracter 69
2013-08-27 13:15:09 BRT DETALHE: Ela poderia referenciar uma vari�vel
PL/pgSQL ou uma coluna de tabela.
2013-08-27 13:15:09 BRT CONSULTA: UPDATE socic.contrato SET
numero_contrato = numeradora
WHERE id = contrato
Função
CREATE OR REPLACE FUNCTION socic.numeradora_contrato(loja integer,
tipo_vend integer, codigo_fin integer, *contrato* integer)
RETURNS integer AS
$BODY$declare numeradora int4;
BEGIN
SELECT nr.numero_corrente + 1 INTO numeradora
FROM socic.numeradora_contrato as nr
WHERE nr.id_loja = loja
AND nr.tipo_venda = tipo_vend
AND nr.codigo_financeiro = codigo_fin
FOR UPDATE;
IF (numeradora IS NULL) THEN
INSERT INTO socic.numeradora_contrato(numero_corrente, id_loja,
tipo_venda, codigo_financeiro)
VALUES (0, loja, tipo_vend, codigo_fin);
SELECT nr.numero_corrente + 1 INTO numeradora
FROM socic.numeradora_contrato as nr
WHERE nr.id_loja = loja
AND nr.tipo_venda = tipo_vend
AND nr.codigo_financeiro = codigo_fin
FOR UPDATE;
END IF;
UPDATE socic.numeradora_contrato SET numero_corrente = numeradora
WHERE id_loja = loja
AND tipo_venda = tipo_vend
AND codigo_financeiro = codigo_fin;
UPDATE socic.contrato SET numero_contrato = numeradora
WHERE id = *contrato*;
RETURN numeradora;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
Quando troco contrato (Em negrito na função) por contrato1 funciona.
Antecipadamente agradeço a ajuda
Paulo
Tem mais de uma tabela com uma coluna de nome igual, por isso o erro
"coluna ambígua" que você recebeu.
Tente usar aliases (apelidos), ou especifique o nome da tabela com
tabela.coluna ao invés de só coluna. No seu caso, não se de qual tabela
você quer a coluna "contrato" que está gerando o erro, então, veja aí no
seu modelo. É só colocar o nome da tabela com um ponto e o nome da
coluna que vai funcionar.
[]s
__________________________________
Flavio Henrique A. Gurgel
Líder de Projetos Especiais
Consultoria, Projetos & Treinamentos 4LINUX
Tel1: +55-11.2125-4747 ou 2125-4748
www.4linux.com.br
email: [email protected]
______________________________
FREE SOFTWARE SOLUTIONS
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral