Como declarar um parâmetro do tipo TYPE?

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Marcela Ferraz
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Sex, 13 Nov 2009 4:03 pm
Localização: Niterói, RJ
Marcela Ferraz.

Pessoal, é o seguinte:

eu tenho uma rotina de validação que valida campo a campo e é chamada a cada novo registro por uma outra rotina de validação. Eu preciso de um contador que me retorne o nome do campo e a qtde de erros para cada campo.

Vejam:

PROCEDURE PR_VALIDA ( PAR_CROTNA IN VARCHAR2, PAR_CSIT IN NUMBER,
PAR_DCANC IN DATE,
PAR_ERRO IN OUT CHAR, PAR_CONT IN OUT CONT_LOG ) IS



TYPE CONT_LOG IS TABLE OF NUMBER INDEX BY VARCHAR2(20);

VAR_CONT_LOG_ERRO CONT_LOG;
VAR_CONT_LOG_ALERTA CONT_LOG;

BEGIN ...
END PR_VALIDA;

---

Line: 17 Column: 45 Error: PLS-00201: identifier 'CONT_LOG' must be declared

---

Alguém saberia me dizer como faço essa passagem do tipo TYPE?

Abs,
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

seu type tem que estar em uma package , pra ser mais exato na especificação da package, e aí na procedure você coloca

PROCEDURE PR_VALIDA ( PAR_CROTNA IN VARCHAR2, PAR_CSIT IN NUMBER,
PAR_DCANC IN DATE,
PAR_ERRO IN OUT CHAR, PAR_CONT IN OUT SUA_PACKAGE.CONT_LOG ) IS
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5026
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

TOPICO MOVIDO PARA PL/SQL
Avatar do usuário
fsitja
Rank: OraSauro
Rank: OraSauro
Mensagens: 611
Registrado em: Seg, 19 Jan 2009 4:29 pm
Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

Como assim, que validação que é feita (ou precisaria ser feita)?

Você pode criar type usando "create type", sem usar package. Porém não pode ser INDEX BY table (associative array).

Você teria que criar como nested table nesse caso, para poder persistir no banco de dados, pois INDEX BY tables são feitas para usar em tempo de sessão apenas.

Selecionar tudo

CREATE OR REPLACE TYPE cont_log IS TABLE OF NUMBER;

-- ou

CREATE OR REPLACE PACKAGE TESTE_PKG
  TYPE cont_log IS TABLE OF NUMBER INDEX BY VARCHAR2(20);
  var_teste cont_log;
END TESTE_PKG;

Responder
  • Informação