- Este tópico contém 4 respostas, 3 vozes e foi atualizado pela última vez 19 anos, 1 mês atrás por
itiburski.
-
AutorPosts
-
18 de janeiro de 2007 às 1:20 am #78492
Anônimo
Olá, amigos! Tenho uma package que possui uma procedure que retorna uma tabela de records para retornar erros. A idéia é que seja exibida mensagens de erro da mesma maneira que o oracle exibe quando compilamos uma procedure no sql plus. É mostrado várias mensagem, cada um com seu código, por exemplo, quando mais de um erro ocorre durante a execução, todos estes erros serão mostrados. Criei uma estrutura, mas não consigo executar esta package. Agradeço a ajuda ou alguma outra solução para este problema. Segue abaixo minha package e a procedure. Desde já agradeço a ajuda.
CREATE OR REPLACE PACKAGE pkg_wire_transfer IS
— Declaração dos types
TYPE CURSOR_TYPE IS REF CURSOR;
TYPE ERRO_TYPE IS RECORD(
COD_ERRO NUMBER(3),
MSG_ERRO VARCHAR2(100));
TYPE LISTA_ERRO_TYPE IS TABLE OF ERRO_TYPE INDEX BY BINARY_INTEGER;PROCEDURE P_BUSCAR_FINALIDADE_TRANSF( p_BUSCA_FINAL_TRANSF OUT CURSOR_TYPE,
codErro OUT INTEGER,
MsgErro OUT VARCHAR2,
Erros OUT LISTA_ERRO_TYPE );22 de janeiro de 2007 às 2:20 pm #78525chduarte
ParticipanteVoce nao consegue executar esta procedure porque esta retornando algum erro especifico ou a sintaxe do comando esta com problemas?
[]
22 de janeiro de 2007 às 2:49 pm #78529itiburski
ParticipanteSegue um exemplo de manipulação de PL/Tables. Espero que ajude.
create or replace package PKG_TESTE isType Erro_Type Is Record(
Cod_Erro Number(03),
Msg_Erro Varchar2(100));Type Lista_Erro_Type Is Table Of Erro_Type Index By Binary_Integer;
Procedure prc_teste(po_retorno Out Lista_Erro_Type);
end PKG_TESTE;
/create or replace package body PKG_TESTE is
Procedure prc_teste(po_retorno Out Lista_Erro_Type) Is
Begin
po_retorno(1).cod_erro := 1;
po_retorno(1).msg_erro := 'mensagem 1';
po_retorno(2).cod_erro := 2;
po_retorno(2).msg_erro := 'mensagem 2';
po_retorno(3).cod_erro := 3;
po_retorno(3).msg_erro := 'mensagem 3';
End;end PKG_TESTE;
/-- Testando a rotina
declare
vs_retorno pkg_teste.Lista_Erro_Type;
begin
pkg_teste.prc_teste(vs_retorno);
for ind in vs_retorno.first..vs_retorno.last loop
dbms_output.put_line(vs_retorno(ind).cod_erro || ' - ' || vs_retorno(ind).msg_erro);
end loop;
end;
24 de janeiro de 2007 às 3:49 am #78548Anônimo
Acredito que a sintaxe do comando que estou executando esteja errada. Como executo isto no sql plus? Execute…?
24 de janeiro de 2007 às 7:14 pm #78552itiburski
ParticipanteNo SQL*Plus, você pode executar da forma como está no exemplo (o bloco declare).
-
AutorPosts
- Você deve fazer login para responder a este tópico.