Skip to Main Content

 

Auswahl  

DBMS_OUTPUT umgeleitet 

Oracle
PL/SQL
RDBMS 10.x
23.07.18 (MP)
04.07.23(NN)
dbms_output, dbms_pipe, htp.p

Passende Schulungen zum Thema

Ich liebe das Package dbms_output, wenn es nur nicht ...

  • so einen langen Namen
  • so eine eingeschänkte Bedienung

hätte.

Aber den letzen Punkt können wir ändern. In diesem Tipp holen wir die Daten, die wir in den Puffer von dbms_output geschrieben haben und legen Sie woanders hin.

##################################################
Umleitung von dbms_output zu pipe
##################################################

CREATE OR REPLACE PROCEDURE test_ausgabe
-- Rechte: grant execute on dbms_pipe to scott;
IS
    PROCEDURE dop2pipe (pipe_name IN VARCHAR2 DEFAULT 'DBMS_OUTPUT_PIPE') IS
       lines dbms_output.chararr;
       num_lines number:=1000000;
    BEGIN
       dbms_output.get_lines(lines, num_lines);
       FOR i IN 1..num_lines LOOP
            dbms_pipe.pack_message (lines(i));
       END LOOP;
        IF (dbms_pipe.send_message (pipe_name)) <> 0 THEN
            raise_application_error(-20500,'Fehler beim Senden in Pipe '||pipe_name||' aufgetreten !');
        END IF;
    END;
BEGIN
   dbms_output.enable(null);  
   FOR i IN 1 .. 10 LOOP
     dbms_output.put_line('Zeile='||i);
   END LOOP;
dop2pipe;   -- <=######## Umwandelung von dbms_output in Pipe
END;
/

CREATE OR REPLACE PROCEDURE get_dout_from_pipe (pipe_name IN VARCHAR2 DEFAULT 'DBMS_OUTPUT_PIPE')

IS

     v_message VARCHAR2(32767);

     v_timeout NUMBER:=120;

BEGIN

     IF (DBMS_PIPE.receive_message(pipe_name,v_timeout)) <> 0 THEN

          RAISE_APPLICATION_ERROR(-20501,'Fehler beim Lesen aus Pipe '||pipe_name||' aufgetreten !');

     END IF;

     LOOP

        EXIT WHEN DBMS_PIPE.NEXT_ITEM_TYPE = 0;

         DBMS_PIPE.unpack_message(v_message);

         DBMS_OUTPUT.PUT_LINE(v_message);

     END LOOP;

END;

/

##################################################
Umleitung von dbms_output zu htp
##################################################


CREATE OR REPLACE PROCEDURE test_ausgabe
IS
    PROCEDURE dop2htp IS
       lines dbms_output.chararr;
       num_lines number:=1000000;
    BEGIN
       dbms_output.get_lines(lines, num_lines);
       FOR i IN 1..num_lines LOOP
          htp.p(lines(i)||'<BR>');
       END LOOP;
    END;
BEGIN
   dbms_output.enable(null);  
   FOR i IN 1 .. 10 LOOP
     dbms_output.put_line('Zeile='||i);
   END LOOP;
dop2htp;   -- <=######## Umwandelung von dbms_output in htp.p Ausgabe
END;

 

Ich hoffe dies konnte Ihnen weiterhelfen, bei sonstigen Fragen melden sie sich gerne bei uns und oder besuchen sie einen der Kurse. :-)

DBMS_OUTPUT aufgebohrt. Wir leiten die Aussgabe nach dbms_pipe oder htp.p um.

Weitere Interessante Kurs-Tipps zum Thema

Besuchen Sie uns doch bei einer unsere über 50 Oracle Schulungen in München - Unterhaching, oder verfolgen Sie die Training per Videostreaming bequem vom Home Office oder Büro aus.