Procedure Oracle com saida DBMS_OUTPUT

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;

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.