Olá,
Então, dada a função salario_ok(id_instrutor) returns varchar, sabendo que o WHERE do SELECT é id = id_instrutor, quando eu chamo a função dessa forma:
*SELECT salario_ok(3) FROM instrutor; *
Não deveria retornar apenas o instrutor cujo o id é 3? Pq está retornando todos os instrutores?
CREATE OR REPLACE FUNCTION salario_ok(idinstrutor INTEGER) RETURNS VARCHAR AS
$$
DECLARE
instrutor instrutor;
BEGIN
SELECT FROM instrutor WHERE id = idinstrutor INTO instrutor;
-- se o salário do instrutor for maior do que 200, está ok. Senão pode aumentar
IF instrutor.salario> 200 THEN
RETURN 'Salário está OK';
ELSE
RETURN 'Salário pode aumentar';
END IF;
END;
$$ LANGUAGE plpgsql;*
*SELECT salariook(3) FROM instrutor;
resultado:
1 "Salário pode aumentar"
2 "Salário pode aumentar"
3 "Salário pode aumentar"
4 "Salário pode aumentar"
5 "Salário pode aumentar"
6 "Salário pode aumentar"
7 "Salário pode aumentar"
8 "Salário pode aumentar"
9 "Salário pode aumentar"