Sobre os parâmetros IN e OUT, analise as afirmações abaixo:
- O parâmetro IN pode receber valor dentro da procedure.
- O parâmetro OUT pode receber valor dentro da procedure.
- O parâmetro IN pode ser atribuído a outra variável dentro da procedure.
- O parâmetro OUT pode ser atribuído a outra variável dentro da procedure. Veja a opção correta sobre quais afirmações são verdadeiras e quais são falsas.
RESPOSTA DO EXERCICO: "O parâmetro IN somente pode atribuir seu valor a outras variáveis e o OUT só pode receber valores de outras variáveis. Qualquer outro caso deve ser associado a uma variável declarada entre o IS e o BEGIN."
Apesar de não ter nenhuma função pratica, o parâmetro OUT pode SIM ser atribuído a uma variavel dentro da procedure PL-SQL. Vide teste abaixo.
-- Parametros IN e OUT
CREATE OR REPLACE PROCEDURE FORMATA_CNPJ
(p_CNPJ IN CLIENTE.CNPJ%type, p_CNPJ_SAIDA OUT CLIENTE.CNPJ%type)
IS
VAR1 CLIENTE.CNPJ%type;
BEGIN
p_CNPJ_SAIDA := SUBSTR(p_CNPJ, 1, 3) || '/' || SUBSTR(p_CNPJ, 4, 2) || '-' || SUBSTR(p_CNPJ,6) ;
VAR1 := p_CNPJ_SAIDA;
END;
-- Testando o IN e OUT
set serveroutput on;
DECLARE
v_CNPJ CLIENTE.CNPJ%type;
v_CNPJ_SAIDA CLIENTE.CNPJ%type;
BEGIN
v_CNPJ := '1234567890';
v_CNPJ_SAIDA := '1234567890';
dbms_output.put_line(v_CNPJ || ' ' || v_CNPJ_SAIDA);
FORMATA_CNPJ(v_CNPJ, v_CNPJ_SAIDA);
dbms_output.put_line(v_CNPJ || ' ' || v_CNPJ_SAIDA);
END;