Procedure Oracle com saida DBMS_OUTPUT

1 resposta
C
Fala galera estou com um problema com uma procedure.

Eu preciso criar uma procedure que recebe uma cidade e ela vai retornar o id funcionario , salario e cargo do funcionario que trabalha nesta cidade se nao achar retorna nao localizado tudo por bdms_output dentro da procedure.

Se eu faço o script fora da procedure ela executa corretamente, mas ao colocar dentro da procedure ela compila sem erros mas ao tentar executar:

BEGIN

EXECUTE FUNC_CIDADE_PROC(DALLAS);

end;

ela gera o erro

pls-00103: Encontrado o símbolo FUNC_CIDADE_PROC quando um dos seguintes símbolos era esperado:

alguém sabe me dizer por que executa fora e da erro na procedure e como solucionar?
CREATE OR REPLACE PROCEDURE FUNC_CIDADE_PROC(p_cidade in varchar2)
IS

contador number;

begin

begin

select COUNT(EMPNO)

into contador

from emp emp

,dept dp

where emp.deptno = dp.deptno

and dp.loc = p_cidade

GROUP BY LOC;

EXCEPTION

WHEN NO_DATA_FOUND THEN
dbms_output.put_line('Nenhum funcionário encontrado.');
end;
IF(CONTADOR > 0)THEN
 FOR CUR_EMP IN( select EMP.EMPNO
                      ,EMP.JOB
                      ,EMP.SAL
                 from emp emp
                     ,dept dp
                 where emp.deptno = dp.deptno
                 and dp.loc = p_cidade)LOOP
                    dbms_output.put_line('Código: '||cur_emp.empno||' | Cargo: '||cur_emp.job||' | Salário: '||cur_emp.sal);
                 END LOOP;

END IF;

END;

1 Resposta

A

Eu sempre apanhei muito para invocar e criar procedures no oracle dependendo do ambiente (sql plus, meu código, outros editores como o toad).

No seu caso, acho que você nao precisa do EXEC dentro do bloco para chamar a procedure, apenas chame diretamente:

BEGIN
  FUNC_CIDADE_PROC('DALLAS');
end;

Num outro tema, eu sugiro nao usar o DBMS_OUTPUT para retornar o principal resultado da sua procedure. Use um parâmetro OUT se quiser realmente PROCEDURE, ou ainda, use uma FUNCTION ao invés de procedure.

Criado 29 de março de 2019
Ultima resposta 1 de abr. de 2019
Respostas 1
Participantes 2