7 Replies Latest reply on Nov 22, 2018 12:42 PM by user10316500

    ORA-06558 in dbms_pipe.pack_message

    user10316500

      Hi

       

      I have about 4 processes using dbms_pipe.

       

      Each one creates a differente Pipe.

       

      In a test a process terminated in error with: ORA-06558

       

      ORA-06558 is raised if the message buffer overflows (currently 4096 bytes). Each item in the buffer takes one byte for the type, two bytes for the length, plus the actual data. There is also one byte needed to terminate the message.

       

      If I use DBMS_PIPE.RESET_BUFFER before dbms_pipe.pack_message, it's dangerous (can I lose messages packed by others pipes) ? The local buffer is shared for all pipes (I've seen Oracle edocumentation).

       

       

       

      Thanks in advance

       

      Stefano

        • 1. Re: ORA-06558 in dbms_pipe.pack_message
          GregV

          Hi,

           

          Are you purging the pipes after your messages have been processed (DBMS_PIPE.purge_pipe) ?

          If you get this error I suppose you pack too many items in the same pipe. Consider purging it or create extra pipes in this case.

          • 2. Re: ORA-06558 in dbms_pipe.pack_message
            user10316500

            The process sending message does:      PACK_MESSAGE -> SEND_MESSAGE.

             

            The process receiving message does:     UNPACK_MESSAGE -> RECEIVE_MESSAGE.

             

            At the end of each process remove pipe is done.

             

            Where have I to put the PURGE ?

             

            Thanks

             

            Stefano

            • 3. Re: ORA-06558 in dbms_pipe.pack_message
              GregV

              Well if you remove the pipe no need to purge it. How big are the messages? I'm using DBMS_PIPE along with DBMS_SCHEDULER to handle the waits between jobs and I never encountered this error. I keep the messages very short because I actually don't care what the messages are, I'm just interested in acknowledging them.

              • 4. Re: ORA-06558 in dbms_pipe.pack_message
                Saubhik

                You haven't shown what exactly you are doing. You need to consider the pipe sizing very carefully, otherwise you will encounter 6558. You can check this URL https://docstore.mik.ua/orelly/oracle/bipack/ch03_01.htm#ch03-15099  and search for "pipe1.sql" to see the demo.

                • 5. Re: ORA-06558 in dbms_pipe.pack_message
                  user10316500

                  I used DBMS_PIPE.RESET_BUFFER before packMessage and this one worked fine.

                   

                  My question is : If i use DBMS_PIPE.RESET_BUFFER before packMessage, other Pipes (in other sessions) can lose their messages in the local buffer?

                  • 6. Re: ORA-06558 in dbms_pipe.pack_message

                    I used DBMS_PIPE.RESET_BUFFER before packMessage and this one worked fine.

                     

                    My question is : If i use DBMS_PIPE.RESET_BUFFER before packMessage, other Pipes (in other sessions) can lose their messages in the local buffer?

                    And our question is: WHAT HAPPENED when you tested it?

                     

                    All code should be tested and your question about whether you 'can lose their message' is pretty trivial to test.

                     

                    So did you conduct a test to see if any messages were lost? If so what were the results? If not then why not?

                     

                    In order for us to try to help you we are waiting for you to respond to this request:

                    You haven't shown what exactly you are doing.

                    And for you to post a link to the Oracle doc you have read and used for DBMS_PIPE

                    The local buffer is shared for all pipes (I've seen Oracle edocumentation).

                    We need to know WHAT doc you have 'seen' and what you have 'seen' in it that is relevant.

                     

                    Did you see this one?

                    https://docs.oracle.com/database/121/ARPLS/d_pipe.htm#ARPLS67423

                    RESET_BUFFER Procedure

                    This procedure resets the PACK_MESSAGE and UNPACK_MESSAGE positioning indicators to 0.

                    Because all pipes share a single buffer, you may find it useful to reset the buffer before using a new pipe. This ensures that the first time you attempt to send a message to your pipe, you do not inadvertently send an expired message remaining in the buffer.

                    See where it says 'share a single buffer'?

                     

                    I have about 4 processes using dbms_pipe.

                    So you don't KNOW how many you have?

                     

                    We don't either - you haven't posted ANYTHING that shows any processes, how they were created, who created them or how they use DBMS_PIPE.

                    Each one creates a differente Pipe.

                    Maybe they do and maybe they don't. Does your code actually check the function result to be sure the pipe was actually created? We don't know without seeing the code.

                     

                    Please SHOW US:

                     

                    1. WHAT you do

                    2. HOW you do it

                    3. WHAT results you get

                     

                    Also show us the results of the tests you conduct to see if any pipes lose data.

                    • 7. Re: ORA-06558 in dbms_pipe.pack_message
                      user10316500

                      I have Wrappers Procedures for PIPE:

                       

                      C_KO                           constant varchar2(2) := 'KO';
                      C_OK                           constant varchar2(2) := 'OK';
                      

                       

                          type t_Esito is record
                          (
                              esito     varchar2 (2)
                             ,severita  varchar2 (255)
                             ,codice    varchar2 (255)
                             ,messaggio varchar2 (2000)
                          );
                      

                       

                       

                      procedure createPipe (p_PipeName in varchar2, p_MaxPipeSize in integer default 8192, p_Private in boolean default true, po_trEsito out t_Esito)
                          is
                              C_NOME_PROCEDURA constant varchar2 (255) := 'CREATEPIPE';
                              vEsitoCreatePipe integer;
                          begin
                              --
                              po_trEsito.esito := C_OK;
                              --
                              vEsitoCreatePipe := dbms_pipe.create_pipe (pipename => p_PipeName, private => false);
                              --
                          exception
                              when others
                              then
                                  --
                                  po_trEsito.esito := C_KO;
                                  po_trEsito.codice := 'COM02ER001';
                                  po_trEsito.messaggio := sqlerrm;
                                  --
                      end createPipe;
                      

                       

                      procedure packMessagePipe (p_PipeName in varchar2, p_MessageText in varchar2, po_trEsito out t_Esito)
                          as
                              C_NOME_PROCEDURA constant varchar2 (255) := 'PACKMESSAGEPIPE';
                          begin
                              --
                              po_trEsito.esito := C_OK;
                              --
                              dbms_pipe.pack_message (p_MessageText);
                              --
                          exception
                              when others
                              then
                                  --
                                  po_trEsito.esito := C_KO;
                                  po_trEsito.codice := 'COM02ER003';
                                  po_trEsito.messaggio := sqlerrm;
                      end packMessagePipe;
                      

                       

                      procedure unpackMessagePipe (p_PipeName in varchar2, po_MessageText out varchar2, po_trEsito out t_Esito)
                          as
                              C_NOME_PROCEDURA constant varchar2 (255) := 'UNPACKMESSAGEPIPE';
                          begin
                              --
                              po_trEsito.esito := C_OK;
                              --
                              dbms_pipe.unpack_message (po_MessageText);
                              --
                          exception
                              when others
                              then
                                  -- Se non ci sono messaggi nel buffer ignoro l'eccezione
                                  --ORA-06556 or 06559 are generated if the buffer contains no more items,
                                  --or if the item is not of the same type as that requested.
                                  po_MessageText := null;
                                  --
                      end unpackMessagePipe;
                      

                       

                      procedure sendMessagePipe (p_PipeName in varchar2, po_trEsito out t_Esito)
                      as
                          C_NOME_PROCEDURA constant varchar2 (255) := 'SENDMESSAGEPIPE';
                          vEsitoSend number;
                          vtrEsito t_Esito;
                          excTimeout exception;
                          excInterrupt exception;
                      begin
                          --
                          po_trEsito.esito := C_OK;
                          --
                          vEsitoSend := dbms_pipe.send_message (p_PipeName);
                      
                      
                          --
                          case vEsitoSend
                              --
                              when 0
                              then
                                  null;
                              --
                              when 1
                              then
                                  vtrEsito.esito := C_KO;
                                  vtrEsito.codice := 'COM02ER006';
                                  vtrEsito.messaggio := 'Raggiunto Timeout per invio messaggio sulla Pipe ' || p_PipeName;
                                  raise excTimeout;
                              --
                              --Esito = 3
                              else
                                  vtrEsito.esito := C_KO;
                                  vtrEsito.codice := 'COM02ER007';
                                  vtrEsito.messaggio := 'Arrivato un Interrupt sulla Pipe ' || p_PipeName;
                                  raise excInterrupt;
                          end case;
                      --
                      exception
                          --
                          when others
                          then
                              --
                              po_trEsito.esito := C_KO;
                              po_trEsito.codice := 'COM02ER005';
                              po_trEsito.messaggio := sqlerrm;
                      end sendMessagePipe;
                      

                       

                       

                      procedure receiveMessagePipe
                      (
                          p_Timeout           in            number,
                          p_PipeName          in            varchar2,
                          po_ttArrayMessaggi  in out nocopy apex_application_global.vc_arr2,
                          po_trEsito             out        t_Esito
                      )
                      as
                          --
                          C_NOME_PROCEDURA constant varchar2 (255) := 'RECEIVEMESSAGEPIPE';
                          vEsitoReceiveMessage integer;
                          vtrEsito t_Esito;
                          vMessageText varchar2 (4096);
                          excUscita exception;
                          excTimeout exception;
                          excInterrupt exception;
                          excMessageTooLarge exception;
                          --
                          vExit  boolean := false;
                      --
                      begin
                          --
                          po_trEsito.esito := C_OK;
                          po_trEsito.codice := null;
                          po_trEsito.messaggio := null;
                          --
                          int_sgn_pck.writedebug (p_Procedura => C_NOME_PACKAGE || '.' || C_NOME_PROCEDURA, p_Descrizione => 'INIZIO - p_PipeName: ' || p_PipeName);
                          -- Ricevo il messaggio dalla Pipe e lo appoggio sul buffer locale
                          vEsitoReceiveMessage := dbms_pipe.receive_message (pipename => p_PipeName, timeout => nvl (p_Timeout, 60));
                      
                      
                          --
                          case vEsitoReceiveMessage
                              --
                              -- Se ho ricevuto il messaggio effettuerò l'unpack
                              when 0
                              then
                                  null;
                              --
                              when 1
                              then
                                  null;
                              --
                              when 2
                              then
                                  vtrEsito.esito := C_KO;
                                  vtrEsito.codice := 'COM02ER008';
                                  vtrEsito.messaggio := 'Il record presente nella ' || p_PipeName || ' troppo largo';
                                  raise excMessageTooLarge;
                              --
                              --Esito = 3
                              else
                                  vtrEsito.esito := C_KO;
                                  vtrEsito.codice := 'COM02ER007';
                                  vtrEsito.messaggio := 'Arrivato un Interrupt sulla Pipe ' || p_PipeName;
                                  raise excInterrupt;
                          --
                          end case;
                      
                      
                          --
                          -- Effettuo l'unpack dei messaggi fin quando ce ne sono
                          while not vExit
                          loop
                              --
                              -- Unpack dei messaggi
                              unpackMessagePipe (p_PipeName => p_PipeName, po_MessageText => vMessageText, po_trEsito => vtrEsito);
                      
                      
                              --
                              if vtrEsito.esito = C_KO
                              then
                                  raise excUscita;
                              end if;
                      
                      
                              --
                              if vMessageText is not null
                              then
                                  --
                                  po_ttArrayMessaggi (po_ttArrayMessaggi.count + 1) := vMessageText;
                              --
                              else
                                  vExit := true;
                              end if;
                          --
                          end loop;
                      exception
                          when excUscita
                          then
                              --
                              po_trEsito.esito := C_KO;
                              po_trEsito.codice := vtrEsito.codice;
                              po_trEsito.messaggio := sqlerrm;
                          --
                          when others
                          then
                              --
                              po_trEsito.esito := C_KO;
                              po_trEsito.codice := 'COM02ER009';
                              po_trEsito.messaggio := sqlerrm;
                      end receiveMessagePipe;
                      

                       

                       

                      This is my test:

                       

                      • CREATE PIPE:
                      declare
                          -- Declarations
                          vPipeName varchar2 (32767) := 'PROVA1';
                          vtrEsito siugate.int_utility_pck.tr_esito;
                      begin
                          dbms_output.enable (10000);
                          -- Call
                          int_pipe_pck.createpipe (p_pipename => vPipeName, po_tresito => vtrEsito);
                      
                      
                          -- Outputs
                          dbms_output.put_line ('INT_PIPE_PCK.CREATEPIPE');
                          dbms_output.put_line ('PO_TRESITO.ESITO = ' || vtrEsito.esito);
                          dbms_output.put_line ('PO_TRESITO.SEVERITA = ' || vtrEsito.severita);
                          dbms_output.put_line ('PO_TRESITO.CODICE = ' || vtrEsito.codice);
                          dbms_output.put_line ('PO_TRESITO.MESSAGGIO = ' || vtrEsito.messaggio);
                          dbms_output.put_line ('');
                      end;
                      /
                      

                       

                       

                      OUTPUT:

                       

                      INT_PIPE_PCK.CREATEPIPE
                      PO_TRESITO.ESITO = OK
                      PO_TRESITO.SEVERITA =
                      PO_TRESITO.CODICE =
                      PO_TRESITO.MESSAGGIO =
                      

                       

                      • WAIT PIPE:
                      set serveroutput on;
                      declare
                          vPipeName varchar2 (32767) := 'PROVA1';
                          vElencoMessaggi apex_application_global.vc_arr2;
                          vtrEsito siugate.int_utility_pck.tr_esito;
                      begin
                          dbms_output.enable (10000);
                      
                      
                          --
                          -- Si pone in attesa di un richiesta di elaborazione.
                          int_pipe_pck.receiveMessagePipe (
                                                           p_Timeout   => 20,
                                                           p_PipeName  => vPipeName,
                                                           po_ttArrayMessaggi => vElencoMessaggi,
                                                           po_trEsito  => vtrEsito
                                                          );
                      
                      
                          -- Outputs
                          dbms_output.put_line ('INT_PIPE_PCK.receiveMessagePipe');
                          dbms_output.put_line ('vtrEsito.ESITO = ' || vtrEsito.esito);
                          dbms_output.put_line ('vtrEsito.SEVERITA = ' || vtrEsito.severita);
                          dbms_output.put_line ('vtrEsito.CODICE = ' || vtrEsito.codice);
                          dbms_output.put_line ('vtrEsito.MESSAGGIO = ' || vtrEsito.messaggio);
                      
                      
                          if vElencoMessaggi.count > 0
                          then
                              for idx in vElencoMessaggi.first .. vElencoMessaggi.last
                              loop
                                  dbms_output.put_line ('vElencoMessaggi(' || idx || ') -> ' || vElencoMessaggi (idx));
                              end loop;
                          end if;
                      end;
                      /
                      

                       

                      • SEND PIPE:

                       

                      set serveroutput on;

                       

                      declare

                          vPipeName varchar2 (32767) := 'PROVA1';

                          vElencoMessaggi apex_application_global.vc_arr2;

                          vtrEsito siugate.int_utility_pck.tr_esito;

                      begin

                          for x in 1 .. 40

                          loop

                              vElencoMessaggi ( X)  := 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';

                          end loop;

                       

                       

                          for idx in vElencoMessaggi.first .. vElencoMessaggi.last

                          loop

                              --

                              --dbms_pipe.reset_buffer;

                              --

                              -- Preparo i messaggi sul buffer locale

                              dbms_output.put_line ('INT_PIPE_PCK.packMessagePipe');

                              int_pipe_pck.packMessagePipe (p_pipename => vPipeName, p_MessageText => vElencoMessaggi (idx), po_trEsito => vtrEsito);

                       

                       

                              --

                              if vtrEsito.esito = 'KO'

                              then

                                  dbms_output.put_line ('-----------------------------------------------');

                                  dbms_output.put_line ('IDX = ' || idx);          

                                  dbms_output.put_line ('vtrEsito.ESITO = ' || vtrEsito.esito);

                                  dbms_output.put_line ('vtrEsito.SEVERITA = ' || vtrEsito.severita);

                                  dbms_output.put_line ('vtrEsito.CODICE = ' || vtrEsito.codice);

                                  dbms_output.put_line ('vtrEsito.MESSAGGIO = ' || vtrEsito.messaggio);

                                  dbms_output.put_line ('-----------------------------------------------');

                              end if;

                          --

                          end loop;

                       

                       

                          --

                          -- Invio i messaggi sulla PIPE

                          dbms_output.put_line ('INT_PIPE_PCK.sendMessagePipe');

                          int_pipe_pck.sendMessagePipe (p_pipename => vPipeName, po_trEsito => vtrEsito);

                       

                       

                          if vtrEsito.esito = 'KO'

                          then

                              -- Outputs

                              dbms_output.put_line ('vtrEsito.ESITO = ' || vtrEsito.esito);

                              dbms_output.put_line ('vtrEsito.SEVERITA = ' || vtrEsito.severita);

                              dbms_output.put_line ('vtrEsito.CODICE = ' || vtrEsito.codice);

                              dbms_output.put_line ('vtrEsito.MESSAGGIO = ' || vtrEsito.messaggio);

                          end if;

                      end;

                      /

                       

                       

                       

                       

                      OUTPUT WAIT PIPE:

                       

                       

                       

                      INT_PIPE_PCK.receiveMessagePipe
                      vtrEsito.ESITO = OK
                      vtrEsito.SEVERITA =
                      vtrEsito.CODICE =
                      vtrEsito.MESSAGGIO =
                      vElencoMessaggi(1) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(2) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(3) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(4) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(5) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(6) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(7) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(8) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(9) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(10) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(11) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(12) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(13) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(14) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(15) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(16) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(17) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(18) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(19) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(20) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(21) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(22) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(23) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(24) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(25) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(26) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(27) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(28) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(29) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(30) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(31) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(32) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(33) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(34) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(35) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(36) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(37) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      vElencoMessaggi(38) ->
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                      
                      
                      aaaaaaaaaaaaaaaaaaaa
                      
                      
                      Procedura PL/SQL completata correttamente.
                      

                       

                       

                      OUTPUT SEND PIPE:

                       

                       

                       

                      SQL*Plus: Release 12.1.0.2.0 Production on Gio Nov 22 12:29:44 2018

                       

                       

                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      INT_PIPE_PCK.packMessagePipe
                      -----------------------------------------------
                      IDX = 39
                      vtrEsito.ESITO = KO
                      vtrEsito.SEVERITA =
                      vtrEsito.CODICE = COM02ER003
                      vtrEsito.MESSAGGIO = ORA-06558
                      DELLA PIPE
                      -----------------------------------------------
                      INT_PIPE_PCK.packMessagePipe
                      -----------------------------------------------
                      IDX = 40
                      vtrEsito.ESITO = KO
                      vtrEsito.SEVERITA =
                      vtrEsito.CODICE = COM02ER003
                      vtrEsito.MESSAGGIO = ORA-06558......
                      -----------------------------------------------
                      INT_PIPE_PCK.sendMessagePipe