Pular para o conteúdo
  • Este tópico contém 4 respostas, 3 vozes e foi atualizado pela última vez 18 anos atrás por itiburski.
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #78281
    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 );

      #78312
      chduarte
      Participante

        Voce nao consegue executar esta procedure porque esta retornando algum erro especifico ou a sintaxe do comando esta com problemas?

        []

        #78315
        itiburski
        Participante

          Segue um exemplo de manipulação de PL/Tables. Espero que ajude.

          create or replace package PKG_TESTE is

          Type 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;

          #78344
          Anônimo

            Acredito que a sintaxe do comando que estou executando esteja errada. Como executo isto no sql plus? Execute…?

            #78351
            itiburski
            Participante

              No SQL*Plus, você pode executar da forma como está no exemplo (o bloco declare).

            Visualizando 5 posts - 1 até 5 (de 5 do total)
            • Você deve fazer login para responder a este tópico.
            plugins premium WordPress