Run time output of DBMS_OUTPUT. PUT_LINE

I would like to know why DBMS_OUTPUT. Put_line output gives only after the end of the execution of the procedure. I wonder why Oracle has not provided a package for the output of the run time.

user10566312 wrote:
I would like to know why DBMS_OUTPUT. Put_line output gives only after the end of the execution of the procedure. I wonder why Oracle has not provided a package for the output of the run time.

It's because of the client server architecture.

SQL and PL/SQL processes run on the database server.
The database server has no access to clients, or screen keyboard, so cannot accept entries to the client keyboard, or write the output to the screen of the client.
When the client software issues a statement to the database, it uses something like for example of SQL * more to establish a connection to the database, submit this request to the database and then waits for the request to complete, eventually return some results from that (e.g. the results of a SQL query).
DBMS_OUTPUT does not write to any screen... it puts just the data that you specify in the DBMS_OUTPUT buffer. It is then up to the client software to request the contents of this buffer, but the client software cannot do that when the request he made was finished (only a single statement between client and server can be converted at any time). That's why you issue your request so the output once the query is complete.

Oracle provides a way for you to run output at the time, if you want to start doing things with the DBMS_PIPE package, etc., although for the follow-up of the execution, I have a package that writes my 'output' to a table on the database by using an autonomous transaction and then the content of this table can be viewed from a second session While the first session is still being requested process. Similarly, you may have your 'exit', writes to a file on the database server using something like UTL_FILE and then you would be able to view the contents of this file running, as long as you open and close the file and make sure file buffers have been empty etc.

DBMS_OUTPUT is not the tool to use if you want to display the output of the run time. It's not a fault of Oracle, it's just your lack of understanding of what tools do this work. ;)

Tags: Database

Similar Questions

  • How to get the output (!) during procedure-run / RAS dbms_output.put_line

    Hello again,

    during a migration script written in plsql, we print several status information on-screen using dbms_output.put_line.

    for your information:

    the script commits each lines x during a massive update. A commit is carried out whenever I want to have the output: Timestamp + number of lines committed themselves.

    Unfortunately the output by dbms_output.put_line is emptied to sqldeveloper once the procedure is complete.
    So I have all the time after the migration is complete, but if possible I need the information when it is put into the stack of the dbms_output.
    Is it possible to flush the output while the process is still ongoing? Are the alternatives to dbms_output.put_line who could help?

    Oracle is 10.2.0.4

    Thank you very much
    Andreas

    Published by: Andreas s. the 11.03.2011 01:38

    Note:
    Messages sent using the DBMS_OUTPUT are not actually sent until full subprogramme of the shipment or the relaxation. > There is no mechanism to flush the output during execution of a procedure.

    http://download.Oracle.com/docs/CD/B19306_01/AppDev.102/b14258/d_output.htm

    you could just write your output to a table?

  • dbms_output.put_line output

    I have this line of code in my trigger. I am using SQL Server 3.0

    dbms_output.put_line (' value: ' | v_something);

    I ran my triggers update, but do not have to see this output

    where can I see the output of this? =/

    Triggers are implicitly tire/run... This isn't like the procedure or function that you explicitly call...

    Published by: LPS on July 12, 2011 21:36

  • Dbms_output.put_line call does not work

    Greetings,

    I would be grateful if someone could help me

    I created the following slider:

    DECLARE

    CURSOR cursor_condition (v_duration_modifiee number) IS

    Select * from param_condition

    WHERE v_duration_modifiee > min_condition

    AND v_duration_modifiee < = max_condition;

    BEGIN

    FOR record_condition IN cursor_condition (3.8)

    LOOP

    dbms_output.put_line ('test' | record_condition.id_condition);

    END LOOP;

    END;

    If I run the script according to whether I receive anonymous block finished, but I can't see the output to the screen.

    concerning

    You issued a SET SERVEROUTPUT ON, before you run the block?

    How did did you run it? SQL * more? TOAD?

    SQL > set serverout off
    SQL > start
    2 dbms_output.put_line ("'Hello world!");
    3 end;
    4.

    PL/SQL procedure successfully completed.

    SQL > set serverout on
    SQL > start
    2 dbms_output.put_line ("'Hello world!");
    3 end;
    4.
    Hello world!

    PL/SQL procedure successfully completed.

  • Procedure / dbms_output.put_line

    Hello


    In a procedure, I have a few dbms_output.put_line at each stage. Now the console output of sqlplus we show directly in the user interface. But the problem is all the messages are projected at the end of the procedure. This means that if we treat for 30 days and each day is to take a minute, we all messages after 30 minutes.

    Can in any case we can show the message as it passes?

    Mr. Leroy wrote:
    Ok.. He got now.
    What happens if I create a stand-alone transaction, the message and show inside? Or again, it will show at the end of the main procedure?

    If you ask this question you still don't understand. You are confused client, server and transactions. SQL * more (client) application server database to run the stored procedure. Regardless of the number of transactions stored procedure runs - SQL * Plus will have fine control of the stored procedure.

    SY.

  • possibility of improvement in dbms_output.put_line... !

    Hey,.

    I'm having a strange customer requirement.
    I use dbms_output.put_line to exit. But I was getting error of buffer flow.
    Then, I used to write the log to a file but when utl_file due to a problem of permission for the log file directory to the computer unix FTP, I can't use utl_file.

    Is it possible in dbms_output than if flow of buffer error raise at this time
    2nd log file generate the new name and the remaining log data written to the new log file.

    My code is generally inferior to...
    ---------------------------------------------------------------------------------------------------------------
    SET OF BUFFER 1000000
    SET SERVEROUTPUT ON
    coil LMG_DBmigration_CP_DATA_Log.log

    Declare

    Start
    Stmnts for DBMS_OUTPUT. PUT_LINE;
    Stmnts for DBMS_OUTPUT. PUT_LINE;
    Stmnts for DBMS_OUTPUT. PUT_LINE;
    :
    :
    :
    Stmnts for DBMS_OUTPUT. PUT_LINE;

    end;
    /
    spool off
    "exit";
    ---------------------------------------------------------------------------------------------------------------

    no idea...?

    Rgds,
    PC

    As long as you put dbms_output.enable (buffer_size-online NULL) in the begin... END of block (before first dbms_output.put_line is running), it won't be a problem.

  • DBMS_Output.put_line does not print in one line

    Hi people,

    I use 'DBMS_Output.put_line' in my procedure for output. Here is the code:

    Dbms_output.put_line ('LOGIT_T. detail records for Bill :'|| v_count_act |', detail of records for ball :'|| v_count_bal |', updated records for Bill :'|| v_updat_act |', update the records for the dance :'|| v_updat_bal |', Total records for Bill :'|| v_count_act |', Total records for Prom :'|| v_count_bal);

    When the procedure runs, it displays the output as shown below:

    LOGIT_T. records detailed bill: 619, detail records for the ball: 324, update records
    to the Act: 0, updated records for bal: 0, Total of records for Bill: 693, Total of records for
    Ball: 410

    Therefore, when you insert this whole line in the table, it only inserts the following text. Therefore, does not take into account the rest of the text (field of table width is 2000 bytes):

    LOGIT_T. records detailed bill: 619, detail records for the ball: 324, update records

    Looks like, it's automatically wrapping the text to the next line. While I want the output above on a single line, as shown below, and to be inserted in my table of the entire text:

    LOGIT_T. records detailed bill: 619, retail for Prom: 324, updated records records for Bill: 0, records update for Prom: 0, Total of records for Bill: 693, Total of records for Prom: 410

    No idea how to do this? The parameters or configuration I'm missing here?

    Hope I made sense above and clearly describes my situation.
    Thanks in advance guys!

    in sqlplus, you can use set linesize:

    SQL > set serverout on
    SQL > set linesize 10
    SQL > exec dbms_output.put_line ("' is a line of text that exceeds 10 characters");
    It is a
    line
    text which
    exceed the 10
    characters

    PL/SQL procedure successfully completed.

    SQL > set linesize 132
    SQL > exec dbms_output.put_line ("' is a line of text that exceeds 10 characters");
    It is a line of text that is longer than 10 characters

    PL/SQL procedure successfully completed.

  • Polymorphic VI fits in run time?

    Hello

    I'm new in LabView and I would like to know if polymorphic VI dynamically adapt the type of data at run time.

    Thanks in advance.

    No, determine which instance it has to use is done in time to change before compiling.

    You can manually select the instance (selection by menu, necessary for the polymorphism for outputs) or (for entries), it automatically adopts.

    Norbert

  • Fatal error of Run-Time with function Decimate

    I have a buffer where the samples are interlaced (ch1, ch0, ch0, ch1,...) and I need to separate the handle, so I tried to use Decimate as suggested here.

    The code is very simple:

    Double interleavedSamples [100], ch0 [50] ch1 [50];
        
    Decimate (interLeavedSamples, 100, 2, 0, ch0);
    Decimate (interleavedSamples + 1, 100, 2, 0, ch1);

    but the second call to Decimate gives Fatal Run-Time Engine - too small table argument.

    That's not true, because with a factor of the decimation of dFactor, you can get samples of nut if the input stream is at least dFactor * (nut-1) + 1 and not dFactor * nut

    I tried a workaround solution, specifying 99 as parameters to sizeInBytes in the second call for help, but this does not work, because as written in the help file

    size = trunc(numberOfElements/dFactor) is the size of the output sequence

    and then only 49 items are returned in the buffer ch1.

    How Decimate can be used to separate the interlaced samples?

    You have to note that the size error is on interleavedSamples Decimate argument. Indeed, the function expects to have 100 items to treat from the item of interleadedSamples [1], so you need to size your table of departure as interleavedSamples [101]. Then, you will gain 100 measures and the second Decimate will correctly extract samples [1] to [99], leaving the sample (blank) [100] intact.

  • At run time, detect how program has Ran (upon request against user)

    Hello

    I am writing a LabWindows program that backs up data. I'll add this to my scheduled Windows tasks, but I also want that it is able to detect if someone is trying to manually run it and open an "administration panel".

    Yes, is there a way direct to detect how the file was run, whether on demand or run manually?

    Or y at - it a way to feed my program a '1' for him asking if it was run by a batch file and if it detects not only '1' then he opens the administration panel? I assume that if he is not the direct route, I would create a scheduled task that runs a batch file, put a '1' in a text file, and then runs the program. Then the program automatically checks in the race so that '1' is there...? After the program is run, the '1' is deleted again.

    Thanks in advance!

    Turbo

    Turbo:

    One way to do would be to use a command line parameter.

    When you configure the scheduled task, pass a command line parameter, for example / Quiet, to notify your program to run without the administration panel.  You can add a parameter of the command line simply by going to the list of scheduled task, right click on your task, selecting Properties and adding the parameter of the command line after the name of the exe file (separated by a space).  When a user executes it interactively, for example from a shortcut on the desktop or in the start menu, they don't use the command line parameter so the program does not work in silent mode.

    Read the command line like this:

    #include
    #include
    int main (int argc, char * argv [])
    {
    int i;
    int quiet = 0;
    for (i = 1; i
    print the parameters only if/quiet is not passed
    If (stricmp (argv [i] "/ Quiet") == 0)
    quiet = 1;
      
    If (! quiet)
    {
    printf ("number of command line parameters: %d\n", argc);
    printf("Parameters:\n");
    for (i = 0; i
    printf ("%s\n", argv [i]);
    printf ("Press any key to continue...\n");
    GetKey();
    }
    return 0;
    }

    The disadvantage of this method is that if they are running the program in the list of scheduled task, it will run in silent mode.

    Another thing you could try is to use schtasks.exe, which comes with Windows XP, for a list of scheduled tasks, is your task in the list, check what time it is planned to execute, display time and assume that the task runs as scheduled and not manually, if present is in a short time of the scheduled time.

    Use the system() function to run schtasks.exe, save the output in a file, and then open the file and read it.

    System ("cmd.exe /c schtasks.exe/query /fo list > c:\\temp\\tasklist.txt");

    Using the format option of list for a schtasks query, you would look first for the TaskName, then for the next run time.

    To see the command line options for querying tasks scheduled by using schtasks.exe, type the following command line:

    schtasks/query /?

  • Problem dbms_output.put_line SYSDATE

    Hello, I have a package with contains several procedures. I have a main procedure that call many procedures in any other package. I print the sysdate with dbms_output.put_line in the main proceedings. I do this in other procedures, but the problem is that the sysdate is not consecutive. For example:

    PKG_MAIN. MAIN_PROCEDURE

    ...

    BEGIN

    dbms_output.put_line (to_char (sysdate, ' dd/mm/yy hh'));

    PKG_SECOND_PACKAGE. PROCEDURE_ONE

    dbms_output.put_line (to_char (sysdate, ' dd/mm/yy hh'));

    END MAIN_PROCEDURE;

    END PKG_MAIN;

    PKG_SECOND_PACKAGE. PROCEDURE_ONE

    BEGIN

    dbms_output.put_line (to_char (sysdate, ' dd/mm/yy hh'));

    END PROCEDURE_ONE;

    END PKG_SECOND_PACKAGE;

    then the DBMS_OUTPUT: will be:

    23/09/14 02:09:55

    23/09/14 02:09:12

    23/09/14 02:09:55

    the problem is that the dbms_output.put_line (sysdate) in the second package is that the main_package. Why is the second sysdate before the first?

    Thanks in advance

    You lose part of the minutes of the time average HH hour, month, seconds. You must change your formats hh:mi: ss.

    I am surprised Billy and BluShadow have not heard that.

  • total run time based on sql id?

    Hello

    I wrote under query to find out the total run time sql and total executions happened based on sql id for each date. Can you get it someone please let me know if the output below is correct?

    SQL> SELECT
      trunc(begin_interval_time, 'DD'),
      ROUND(sum(elapsed_time_delta)/1000000) "Total Execution Time (sec)",
      ROUND(sum(executions_delta)) "Total Execution"
      FROM dba_hist_sqlstat a
      JOIN dba_hist_snapshot b
      ON a.snap_id = b.snap_id
      WHERE sql_id        = '8acg09uq48jzk'
      AND executions_delta>0
      GROUP BY trunc(begin_interval_time, 'DD')
      ORDER by trunc(begin_interval_time, 'DD') DESC;
    
    
    TRUNC(BEG Total Execution Time (sec) Total Execution
    --------- -------------------------- ---------------
    01-AUG-14                        160          122078
    31-JUL-14                       9309         1822147
    30-JUL-14                       6667         1845014
    29-JUL-14                       6196         1873091
    28-JUL-14                     277268         1517005
    27-JUL-14                      78546          794048
    26-JUL-14                       1359         1166650
    25-JUL-14                       7665         1826915
    24-JUL-14                       6786         1907862
    23-JUL-14                       8132         2019695
    22-JUL-14                       6611         1948861
    
    
    TRUNC(BEG Total Execution Time (sec) Total Execution
    --------- -------------------------- ---------------
    21-JUL-14                       7980         2948449
    20-JUL-14                       3226         3554316
    19-JUL-14                       3405         3222148
    18-JUL-14                      10179         2478602
    17-JUL-14                       7950         1972643
    16-JUL-14                       8465         2054012
    15-JUL-14                       8483         2248688
    14-JUL-14                       8644         2243460
    13-JUL-14                        942         1478516
    12-JUL-14                        985         1075398
    
    
    

    Generate AWR report during the period of interest and you will get more information.

    Apart from that, what problem you ar trying to solve. Please explain that

    You can also use the following, because you are looking for particular sql

    awrsqrpt. SQL > for individual ssql

    awrsqrpti. SQL > for sql on a particular instance... (useful in case of CARS)

    Kind regards

    Harman

  • view the output of dbms_output statement in Toad

    Hi expert,

    I use dbms_output instruction in proceudre and run it into a toad, but he must run ' set serveroutput we "display output statement dbms_output.

    But how can I achieve this functionality in Toad.

    Thank you very much

    >

    Hello

    I use dbms_output instruction in proceudre and run into a frog, but it
    should run "set serveroutput on" to display the output of statement dbms_output.
    But how can I achieve this functionality in Toad.

    At the bottom of your window, there are number of tabs. One of them is
    DBMS_Output. There is a small red button on the left side. Click on this button.
    It turns green. Then, your output is visible - you can click on it and scroll
    upward through your results.

    In the future, ask questions of Toad in a forum of Toad.

    HTH,

    Paul...

  • Dbms_output.put_line problem

    Hi all

    I just run the following block of plsql. But nothing, I had to screen...
    What is the problem in this block.

    SQL > set serverout on

    < code >
    declare
    day varchar2 (20);
    Start
    Day: = to_char (sysdate, Day);
    dbms_output.put_line (Day);
    end;
    /
    SQL > PL/SQL procedure successfully completed.

    < code >

    SB says:
    Hi all

    I just run the following block of plsql. But nothing, I had to screen...
    What is the problem in this block.

    Try this:

     sql> set serverout on
    
     declare
     day varchar2(20);
     begin
     day:=to_char(sysdate,Day);
     dbms_output.put_line('no date string because ''Day'' has no '' around and is therefore resoved to the still empty variable day...'||day);
     end;
     /
     sql>PL/SQL procedure successfully completed.
     
    

    Good bye
    DPT

  • Satellite X 200 - 25 G: problem of Flash Cards - Run time error file TCrdMain.exe

    Hello world!

    I don't know how, but I have a problem when my windows Vista from (running)
    The problem is with these file TCrdMain.exe this file is for Flash cards, end running every time when I put my PC on (with windows startup). But I see this problem: "Run time error file TCrdMain.exe ' and I should click Close.
    I don't know where can I uninstall this program and when I find that driver (Software) (if I uninstall and then install this driver, maybe that everything will be OK). This is the main problem.

    And another question...
    There are so many programs with this computer (laptop), and if I want to install Windows XP for example, where can I find everything (each programs) there may be 10 or 15 pograms.

    It will be a big problem if I change my OS. Y at - there a site where I can download, everything...
    Thanks for the replies, nd sorry about my English :-) skills
    Best wishes from the Bulgaria and have a nice day!

    Post edited by: me

    null

    Hello

    I'm not very well why the executable Run TCrdMain.exe error, but it is certainly up to Toshiba FlashCard software and the FlashCard belongs to the package Toshiba Vista added value m.

    Kody is good. Reinstall the VAP and check if this helps solve this problem.

    With regard to the question of the other;
    You are right; the notebooks are preinstalled with many different applications. But it is necessary because the laptop supports many different features.
    However, if you want to install XP OS on the X 200 PSPB9E series, you will need drivers Toshiba XP and all need Toshiba XP drivers are available on the European driver Toshiba page

    You must install all the drivers available if you want to use all the features of the laptop.

    Concerning

Maybe you are looking for