2009/10/1 Bruno Carneiro <guimaraescarne...@gmail.com>: > > Estou estudando plpgsql mas confesso que não estou entendo uma coisa. > > Eu declarei uma variável, e estou tentando atribuir um valor escalar a ela > que vem de um SQL, mas eu recebo um erro informando que não é permitido > fazer isso. > > Erro de SQL: > > ERRO: erro de sintaxe em ou próximo a "SELECT" > LINE 1: SELECT SELECT carro FROM venda WHERE idvenda = $1 > ^ > QUERY: SELECT SELECT carro FROM venda WHERE idvenda = $1 > CONTEXT: SQL statement in PL/PgSQL function "comissao_new" near line 10 > > Indicação de entrada : > > CREATE FUNCTION comissao_new(p_idvenda integer) > RETURNS numeric(8,2) AS $$ > > DECLARE > v_idcarro integer; > v_zerokm boolean; > v_vvenda numeric(8,2); > v_vend integer; > v_c_vend numeric(8,2); > > BEGIN > v_idcarro := SELECT carro FROM venda WHERE idvenda = p_idvenda; > v_zerokm := SELECT zero_km FROM carro WHERE idcarro = v_idcarro; > v_vvenda := SELECT valor FROM venda WHERE idvenda = p_idvenda; > v_idvend := SELECT vendedor FROM venda WHERE idvenda=p_idvenda; > v_c_vend := SELECT comissao FROM vendedor WHERE idvendedor = v_idvend; > > IF v_zerokm THEN > RETURN (v_vvenda - custo_total(v_idcarro) )*v_c_vend; > ELSE > RETURN v_vvenda * v_c_vend; > END IF; > > END; > > > $$ LANGUAGE plpgsql; > > Afinal, como eu posso fazer essa atribuição. Encontrei algo pareceido em > SELECT * INTO ... mas neste caso a variável não pode ser escalar, como eu > desejo. > --
Tente: SELECT carro FROM venda WHERE idvenda = p_idvenda INTO v_idcarro; o mesmo para os demais campos/SELECT. Osvaldo _______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral