Olá. Estou tentando reproduzir o mesmo conceito apresentado na aula tentando utilizar o seguinte código:
CREATE OR REPLACE FUNCTION teste(nome_professor varchar) RETURNS varchar AS
$$
DECLARE minha_variavel instrutor;
BEGIN
SELECT * INTO minha_variavel FROM public.instrutor where nome = nome_professor ;
IF minha_variavel.salario > 200 THEN
RETURN 'Salário está ok';
ELSE
RETURN 'Salário pode aumentar';
END IF ;
END
$$
LANGUAGE plpgsql;
SELECT nome,teste(instrutor.nome) FROM instrutor
Nesse caso, modifiquei a linha de código do "DECLARE" que declarava:
[...]
DECLARE instrutor instrutor;
[...]
Não entendi o motivo do código só aceitar o tipo "instrutor".
O mesmo acontece no primeiro exemplo da aula:
CREATE OR REPLACE FUNCTION salario_ok(instrutor instrutor) RETURNS varchar AS
$$
BEGIN
IF instrutor.salario > 200 THEN
RETURN 'Salário está ok';
ELSE
RETURN 'Salário pode aumentar';
END IF ;
END;
$$
LANGUAGE plpgsql;
SELECT nome,salario_ok(instrutor) FROM instrutor;
Eu só consigo rodar esse código se salario_ok for do tipo instrutor instrutor. Não ficou claro o motivo dessa tipo de declaração.