PessoALL...

Estou criando um script que tem por objetivo me retornar os nomes e as 
quantidades de objetos de um determinado schema... No entanto ele apresenta um 
erro, quando da execução do script....

O script é como segue:

DECLARE
v_otype VARCHAR2(20) := '&tipo';
v_oname VARCHAR2(30);
v_qtde NUMBER;
v_ver BOOLEAN;
v_fim EXCEPTIONS;

CURSOR c_rel_objetos IS
SELECT object_type, object_name
FROM user_objects
WHERE object_type = v_otype;

CURSOR c_qtde_objetos IS
SELECT COUNT(object_type)
FROM user_objects
WHERE object_type = v_otype;

BEGIN

SELECT COUNT(object_type) INTO v_qtde
FROM user_objects
WHERE object_type = v_otype;

IF v_qtde = 0 
   THEN v_ver := FALSE;
   RAISE v_fim;
ELSIF v_qtde > 0
   THEN v_ver := TRUE;
END IF;

OPEN c_rel_objetos;

LOOP

FETCH c_rel_objetos INTO v_otype, v_oname;

EXIT WHEN c_rel_objetos%NOTFOUND;

DBMS_OUTPUT.PUT_LINE(v_otype||' - '||v_oname);

END LOOP;

CLOSE c_rel_objetos;

OPEN c_qtde_objetos;

FETCH c_qtde_objetos INTO v_qtde;

DBMS_OUTPUT.PUT_LINE('SÃO '||v_qtde||' '||v_otype||'(S) NO TOTAL!');

CLOSE c_qtde_objetos;

EXCEPTION
WHEN v_qtde = 0 
     THEN v_ver := FALSE;
DBMS_OUTPUT.PUT_LINE('NÃO EXISTE OBJETOS DESTE TIPO NO SEU DOMÍNIO!');

   WHEN OTHERS THEN
      DBMS_OUTPUT.PUT_LINE(SQLERRM);

END;
/

Como se pode perceber, quando da execução do script, é passado um parâmetro 
(que é o tipo de objeto que eu quero) e ele retorna os nomes dos objetos que 
são daquele tipo específico e ainda me dá o total de objetos daquele tipo 
específico...

No entanto, quando ao rodar este script ele me retorna o seguinte erro, 
utilizando como exemplo o parâmetro PROCEDURE:

Informe o valor para tipo: PROCEDURE
antigo   2: v_otype VARCHAR2(20) := '&tipo';
novo   2: v_otype VARCHAR2(20) := 'PROCEDURE';
WHEN v_qtde = 0
            *
ERRO na linha 54:
ORA-06550: linha 54, coluna 13:
PLS-00103: Encontrado o símbolo "=" quando um dos seguintes símbolos era
esperado:
. then or

Quem puder ajudar, agradeço!

Atenciosamente,

Matheus Malta

[As partes desta mensagem que não continham texto foram removidas]

Responder a