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.
-- 
View this message in context: 
http://www.nabble.com/Atribuir-valor-escalar-retornado-de-um-SELECT-em-plpgsql-tp25704399p25704399.html
Sent from the PostgreSQL - Brasil mailing list archive at Nabble.com.

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a