DICA para o erro: PLS-00201: identifier 'PFROWN.XML_IMPORT' must be declared

Olá amigos!

Durante a semana passada eu me deparei com um erro que eu não conseguia arrumar de jeito nenhum.

Eu tenho uma funcionalidade no sistema que eu trabalho que é responsável por importações e validações de arquivos XML.

Então no Visual Studio eu estruturei tudo direitinho, montei o layout no arquivo xsd e criei o método contendo os parâmetros de entrada e saída e a chamada para uma package do ORACLE que contém as stored procedures que eu preciso executar para validação e importação desses XMLs.

Até aí tudo bem. Eu executei tudo em ambiente de desenvolvimento e deu tudo certo.

Mas, como aqui no banco tem muita burocracia eu não tenho privilégios de execução em ambiente de homologação, então enviei as packages para o colega responsável fazer isso.

Bom, por algum motivo ele acabou executando outra package no meu ambiente de desenvolvimento e simplesmente  corrompeu a minha package e depois de muitas tentativas de arrumar, quando eu finalmente consegui me deparaei com o erro 

Error found! ORA-06550: line 1, column 7:
PLS-00201: identifier 'PFROWN.XML_IMPORT' must be declared

Bom, na minha cabeça a minha package estava perfeita, mas na realidade não estava

Eu pesquisei esse erro pela internet afora e tive várias respostas, porém a que realmente me pareceu a mais coerente de todas - e que resolveu o meu problema - foi essa aqui:

CADA PACKAGE DO ORACLE DEVE OBEDECER A SEGUINTE ESTRUTURA

1. PRIMEIRAMENTE CRIE A ESPECIFICAÇÃO DA SUA PACKAGE

CREATE OR REPLACE PACKAGE PG_IMPORTACAO_XML_CLIENT AS

PROCEDURE 1

(

  pCD_PRODUTO     IN    PRODUTO.CD_PRODUTO%TYPE,

  pCursor              OUT  SYS_REFCURSOR

);

PROCEDURE 2

(

   PARÂMETROS DE ENTRADA E SAÍDA DA PROCEDURE 2

)

2. AO FINAL DE TODAS AS PROCEDURES CRIADAS FECHE A PROCEDURE E COLOQUE A "BARRA"  DO COMMIT

END PG_IMPORTACAO_XML_CLIENT;

/

3. NA SEQUENCIA DO SEU SCRIPT CRIE O BODY DA SUA PACKAGE CONTENDO, ALÉM DOS PARAMETROS DE ENTRADA E SAÍDA OS COMANDOS PL/SQL PROPRIAMENTE DITOS (BEGIN... END)

CREATE OR REPLACE PACKAGE BODY PG_IMPORTACAO_XML_CLIENT AS

PROCEDURE SP_SE_PARTICIPACAO
(
pCD_PRODUTO IN PRODUTO.CD_PRODUTO%TYPE,
pCURSOR OUT SYS_REFCURSOR
)
IS
BEGIN
DBMS_APPLICATION_INFO.SET_MODULE('PFR', 'SP_SE_PARTICIPACAO');
OPEN pCURSOR FOR
SELECT
*
FROM
PRODUTO_CLIENTE_PARTICIPACAO PCP
WHERE
PCP.CD_PRODUTO = pCD_PRODUTO;
END SP_SE_PARTICIPACAO;

PROCEDURE2

(

  PARÂMETROS DE ENTRADA E SAÍDA

)

IS

BEGIN

-- INSTRUÇÕES PL/SQL

END PROCEDURE2;

4. DEPOIS DE INCLUIR TODAS AS PROCEDURES FECHE O BODY DA PACKAGE QUE VOCÊ ACABOU DE CRIAR E CONCEDA AS PERMISSÕES DE USUÁRIOS DO ORACLE - SEMPRE SEGUIDO DA BARRA DE COMMIT

END PG_IMPORTACAO_XML_CLIENT;
/

GRANT EXECUTE,DEBUG ON PG_IMPORTACAO TO PFR, PFRONL, PFRPRC, PFROWN;

/

Bom, mais uma dica: eu uso a ferramenta Oracle SQL Developer e eu escrevi todo esse script numa estrutura de "arquivoSql" mesmo daí ao invés de pressionar o botão executar (play) eu pressionei F5 que retorna pra você se o seu comando foi bem sucedido ou não.

A conclusão que eu chego é que você até pode utilizar o botão direito do mouse para cirar a package e seus elementos, mas, por algum motivo, eu fui obtendo muitos erros "estranhos" e não conseguia resolver meu problema.

Depois que eu coloquei tudo obedecendo essa estrutura que eu mencionei aqui a package funcionou "de primeira" e o erro foi resolvido.

Espero poder ter ajudado vocês.

Um abraço,

Silvana Siqueira

Exibições: 2059

© 2018   Criado por Ramon Durães.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço