How to get an output of a plsql table?

Hi Experts,
I have a package which, once executed gets data in a plsql table.
I want to store these data in a custom table.
How can I do this?

Thank you
PS

This?

SQL> create table temp
  2  as
  3     select * from emp where 1 = 2
  4  /

Table created.

SQL> define p_empno=7788
SQL>
SQL> declare
  2     type emp_record is table of emp%rowtype;
  3
  4     emp_rec        emp_record;
  5  begin
  6     select * bulk collect into emp_rec from emp where empno = &p_empno;
  7     for i in 1 ..emp_rec.count loop
  8      insert into temp values emp_rec(i);
  9     end loop;
 10  end;
 11  /
old   6:    select * bulk collect into emp_rec from emp where empno = &p_empno;
new   6:    select * bulk collect into emp_rec from emp where empno = 7788;

PL/SQL procedure successfully completed.

SQL>
SQL> select empno, ename from temp
  2  /

     EMPNO ENAME
---------- ----------
      7788 SCOTT

Tags: Database

Similar Questions

  • One for the era: how to get this output using REGULAR EXPRESSIONS?

    How to get the bottom of output using REGULAR EXPRESSIONS?
    SQL> ed
    Wrote file afiedt.buf
    
      1* CREATE TABLE cus___addresses    (full_address                   VARCHAR2(200 BYTE))
    SQL> /
    
    Table created.
    
    SQL> PROMPT Address Format is: House #/Housename,  street,  City, Zip Code, COUNTRY
    House #/Housename,  street,  City, Zip Code, COUNTRY
    SQL> INSERT INTO cus___addresses VALUES('1, 3rd street, Lansing, MI 49001, USA');
    
    1 row created.
    
    SQL> INSERT INTO cus___addresses VALUES('3B, fifth street, Clinton, OK 74103, USA');
    
    1 row created.
    
    SQL> INSERT INTO cus___addresses VALUES('Rose Villa, Stanton Grove, Murray, TN 37183, USA');
    
    1 row created.
    
    SQL> SELECT * FROM cus___addresses;
    
    FULL_ADDRESS
    ----------------------------------------------------------------------------------------------------
    1, 3rd street, Lansing, MI 49001, USA
    3B, fifth street, Clinton, OK 74103, USA
    Rose Villa, Stanton Grove, Murray, TN 37183, USA
    
    SQL> The REG EXP query shouLd output the ZIP codes: i.e. 49001, 74103, 37183 in 3 rows.
    Published by: user12240205 on June 18, 2012 03:19
    /* Formatted on 2012/06/18 17:25 (Formatter Plus v4.8.8) */
    SELECT REGEXP_SUBSTR ((REGEXP_SUBSTR (full_address, '[^,]+', 1, 4)), '[[:digit:]]+') RESULT
      FROM cus___addresses
    
  • How to get the output of a compiled solution?

    I'm writing an automation, but I'm unable to get the output of devenv, but receive nothing.  I have reduced my example considerably.

    I have a lot of files that looks like this

    "B:\Microsoft Visual Studio 9.0\Common7\IDE\devenv" "My_Types\My_Types.sln" /build >... \Output\Build.txt

    And it produces Build.txt

    Microsoft (R) Visual Studio Version 9.0.21022.8.
    Copyright (C) Microsoft Corp. All rights reserved.
    -Build started: project: Rotair_Types, Configuration: Debug Any CPU.
    Rotair_Types-> C:\IntuitiveDev\Bin\Rotair_Types.dll
    = Build: 1 succeeded or up-to-date, 0 failed, 0 was ignored.

    So now, I try to do it from code:

    Compile = new Process()
    With Compile.StartInfo
    . UseShellExecute = False
    . RedirectStandardOutput = True
    . FileName = "b:\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe"
    . Arguments = "/build" «C:\Code\Projects\My_Types\My_Types.sln»»»
    Ends with
    bSuccess = Compile.Start)
    strOutput = Compile.StandardOutput.ReadToEnd)
    Compile.WaitForExit)

    But strOutput is an empty string.  This is confirmed by the issuance of the following at the command prompt:

    /build "C:\Code\Projects\My_Types\My_Types.sln" "b:\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe"

    But it does not compile because I can remove the dll, and it returns.  I would get the result to determine if the compilation is successful.  Any suggestions?

    JM

    Hello

    Your question is addressed in these forums of consumers.

    The MSDN Developer forums should be able to answer your question.

    Issues related to the overall development of the Windows Desktop:

    https://social.msdn.Microsoft.com/forums/en-us/home?category=windowsdesktopdev

    Concerning

  • How to get an output of server in SQL Developer

    I learn to SQL Deverloper and use it in an academic setting and Oracle at Oracle test cases.

    I know my way around SQL some but I am learning just PL/SQL.  I want to run an anonymous block and get an output for elements 'dbms_output.put_line '.

    At school, I enter my block in the worksheet "SQL" and will receive the "anonymous block finished" in the screen "output of the Script.  Then, there is a 3 screen, whose name I don't remember, but I think it's the equivalent of 'out of server.  When I open it, I have to tell him what database I use.  So I see the dbms output lines in this section 3.

    The problem is when I'm with SQL Developer to work, I see only 2 sections: "SQL worksheet" and "output of the Script.

    I looked, but couldn't find an option or a button or a window that is called something like 'exit from server' or 'view output server.'

    Can a more experienced user please help me?

    I use:

    SQL Developer Version 3.1.07

    Build a HAND - 07.42

    Linux x 86-64

    (Oracle internal):

    Instance: http://celalnx38.us.oracle.com:10507 /

    tnsnames: 10500)

    ROFL!  So I went back and looked at it again, just to be sure... and I found the DBMS OUTPUT on the VIEW menu.  LARGE as LIFE, but I've never SEEN it it is before...

  • How do I get the output of a function table

    Hi all

    Kindly share your idea.


    I need the outputs of a function table only.

    Database version: oracle 10.1.0.2.0

    login_details:

    login_id branch_code

    admin 1
    Admin1 2
    Test 1
    user 1

    I need output for the query function below.

    Select login_id from login_details where branch_code = '1';

    If I create a function:


    FUNCTION to CREATE or REPLACE fn_get_login (pvBranch varchar2)
    IS BACK SYS_REFCURSOR
    REF_TEST SYS_REFCURSOR;
    BEGIN
    OPEN FOR REF_TEST
    Login_id SELECT FROM login_details WHERE branch_code = pvBranch;
    RETURN REF_TEST;

    END;
    /


    Select * from login_master where login_id in (select fn_get_login('01') from double);


    and get

    ORA-00932: inconsistent data types: expected - got CURSER

    Edited by: 887268 October 8, 2012 12:25

    You cannot use a Ref cursor in a table, because it isn't a result set of data, it's just a pointer to a request for enforcement.

    {: identifier of the thread = 886365}

    A ref cursor must be used if you want to refer the request to an external application.

    Transfer data back to a function is to use a pipeline for example function

    SQL> CREATE OR REPLACE TYPE num_descript AS OBJECT(num number, descript varchar2(30))
      2  /
    
    Type created.
    
    SQL>
    SQL> CREATE OR REPLACE TYPE tbl_num_descript AS TABLE OF num_descript
      2  /
    
    Type created.
    
    SQL>
    SQL>
    SQL> CREATE OR REPLACE PACKAGE reftest AS
      2    FUNCTION pipedata(p_choice number) RETURN tbl_num_descript PIPELINED;
      3  END;
      4  /
    
    Package created.
    
    SQL>
    SQL> CREATE OR REPLACE PACKAGE BODY reftest AS
      2    FUNCTION pipedata(p_choice number) RETURN tbl_num_descript PIPELINED IS
      3      v_obj num_descript := num_descript(NULL,NULL);
      4      v_rc  sys_refcursor;
      5    BEGIN
      6      IF p_choice = 1 THEN
      7        OPEN v_rc FOR SELECT empno as num, ename as descript FROM emp;
      8      ELSIF p_choice = 2 THEN
      9        OPEN v_rc FOR SELECT deptno as num, dname as descript FROM dept;
     10      END IF;
     11      LOOP
     12        FETCH v_rc INTO v_obj.num, v_obj.descript;
     13        EXIT WHEN v_rc%NOTFOUND;
     14        PIPE ROW(v_obj);
     15      END LOOP;
     16      CLOSE v_rc;
     17      RETURN;
     18    END;
     19  END;
     20  /
    
    Package body created.
    
    SQL> select * from table(reftest.pipedata(1));
    
           NUM DESCRIPT
    ---------- ------------------------------
          7369 SMITH
          7499 ALLEN
          7521 WARD
          7566 JONES
          7654 MARTIN
          7698 BLAKE
          7782 CLARK
          7788 SCOTT
          7839 KING
          7844 TURNER
          7876 ADAMS
          7900 JAMES
          7902 FORD
          7934 MILLER
    
    14 rows selected.
    
    SQL> select * from table(reftest.pipedata(2));
    
           NUM DESCRIPT
    ---------- ------------------------------
            10 ACCOUNTING
            20 RESEARCH
            30 SALES
            40 OPERATIONS
    
    SQL>
    

    but of course, it is wise to just use pure SQL that in order to mix the PL/SQL in queries in the form of best performance features.

    Perhaps explain what problem you are trying to solve when trying to use a function, and we can advise you on the best options.

  • How to get the text formatting in the tables

    Dear experts and aid

    For my project, I import an RTF file and then read the data into 3 tables. It works fine when just using the contents of the string of paragraphs. However, the final script should be able to read and to replace the text formatted...
    Why use intermediate tables? Because otherwise I need to swap between two fm-documents (and you can be a part of the book).

    The imported file starts with a certain number of lines separated into two parts by a TAB ("designates a TAB in \x08 FM)
    [[Garneau, 1990 #12]]    »   [9]
    The good article can also be locally as text, e.g. [9]
    Then follow the same (or smaller) number of paragraphs with text formatted like this:
    [9]"D. Garneau, ed., National Language Support Reference Manual (national language Information Design Guide. Toronto, CDN: IBM National Language technical Centre, 1990.

    Is it possible to replace in the body of the function below the next song

      while(pgf.ObjectValid()) {
        pgfText = GetText (pgf, newDoc);
        gaBibliography.push(pgfText);
        pgf = pgf.NextPgfInFlow;
      }
    

    with this

      while(pgf.ObjectValid()) { 
        gaBibliography.push(pgf);
        pgf = pgf.NextPgfInFlow;
      }
    

    Do I need a special statement of the gaBibliography range?
    And how to get the right part of the lines as formatted intro thingy in table gaFmtCitsFmt ?

    Currently, I read in the tables as "strings" (function GetText not shown):

    var gaFmtCitsRaw  = [];                           // left column in processed RTF
    var gaFmtCitsFmt  = [];                           // right column in processed RTF
    var gaBibliography= [];                           // bibliography lines from processed RTF
    // filename is something like E:\_DDDprojects\FM+EN-escript\FM-testfiles\BibFM-collected-IEEE.rtf 
    
    function ReadFileRTF (fileName) {
      var nCits=0, nBib = 0, openParams, openReturnParams, newDoc, pgf, pgfText ;
      var TAB = String.fromCharCode(8);               // FM has wrong ASCI for TAB
      var parts = [];
      
      openParams = GetOpenDefaultParams();
      openReturnParams =  new PropVals();  
      newDoc = Open (fileName, openParams, openReturnParams);  
      pgf = newDoc.MainFlowInDoc.FirstTextFrameInFlow.FirstPgf;  // get first pgf in flow
    
    // --- read the temp/formatted citations  
      while(pgf.ObjectValid()) {
        pgfText = GetText (pgf, newDoc);
        if (pgfText.substring (0,2) == "[[") {        // citation lines start with [[
          parts = pgfText.split(TAB);                 // get the two parts of the line
          gaFmtCitsRaw.push (parts[0]);               // Push the result onto the global array
          gaFmtCitsFmt.push (parts[1]);
          pgf = pgf.NextPgfInFlow;
        } else { break }
      }
    
    // --- read the bibliography
      while(pgf.ObjectValid()) {                      // until end of doc
        pgfText = GetText (pgf, newDoc);
        gaBibliography.push(pgfText);
        pgf = pgf.NextPgfInFlow;
      }
      newDoc.Close (Constants.FF_CLOSE_MODIFIED);
    } // --- end ReadFileRTF
    

    The following questions will then be how to change the script of FindAndReplace of Ian Proudfoot for managing text formatted as replacement. I will need to use the copy and paste IMHO...

    Klaus, okay, before pasting, you must assign the TextSelection object at your insertion point.

    // Add a new paragraph after the current paragraph.
    var newPgf = oDoc.NewSeriesPgf (lastPgf);
    var textRange = new TextRange (new TextLoc (newPgf, 0), new TextLoc (newPgf, 0));
    
    oDoc.TextSelection = textRange;
    oDoc.Paste ();
    

    -Rick

  • How to get if THEN ELSE another condition table

    Hi eveybody,.
    I have a situation and I need your advice guys.
    I apply if THEN ELSE condition in PL/SQL from another table. I do the merger in tableA that will run IF Column1 in tableC = Y.
    Ex: Tablec has three columns: source, dest, condition. Condition IF = Y in tableC, then merge into tableA use (Sql query in table C source selection) B.

    Please let me know how to get the condition = Y of table C.
    Condition IF = Y for each source in C, then fusion will happen for this source.

    Please provide your comments and your responses.
    I'd really appreciate your comments and your responses.
    Thank you very much.

    user13426784 wrote:
    DB link is passed as parameter in MS and we need to check the status for this link db to TableC.

    select   status
      into  v_status
      from  tableC
      where db_link = v_source;
    if v_status = 'Y'
      then
        EXECUTE IMMEDIATE 'MERGE INTO tableA A USING
    (select  from tableA@' || v_source || ')B
    when matched insert
    when not matched update';
    end if;
    

    SY.

  • 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?

  • How to get two outputs at the same time?

    Hello

    I use the PCIe6351 DAQ card to generate two signals separately. This product has two exits, so I thought that I can use both at the same time, but when I run the code it gives an error: "the spesified resource is reserved. I just want to know if it is possible for me to use both outputs together at the same time or not? If so, would you please guide me what should I do to solve the problem?

    Thank you very much

    Soran

    Great! This works. I appreciate your help

  • How to get the error thrown in plsql block

    Hello


    I remember there is a table that keeps track of the error raised in plsql block. and if we want to see what the error thrown in our block, we can query this table. but unfortunately I forgot the name of the table.

    can someone help me with the name of the table.

    Thank you

    Well maybe I am not aware of such a table, but I believe there are no table of this type

    SELECT *
    FROM   ALL_ERRORS;
    

    * 009 *.

  • How to get an output of HcmDataLoader using webservice

    Hi, I introduced web-service HcmDataLoader and back me a task ID. Now, I want to call a new service, that may take ESS Job ID (or content-id) as input and provide me with information on the number of records have been imported/load successfully. All failed, and what is the reason.

    Is there a service that can provide me with this information.

    If no service, can you please suggest some tables, which I can query for more information.

    Thank you

    Sanjeev.

    Hello

    I'm not sure service to retrieve the details of job HDL, but you can access it from table and diagnostic framework. Please check this post,

    I hope this helps.

    Kind regards

    Pawan

  • How to get a magic number for any table that returns more than 32 k?

    I'm in a unique situation where in I try to extract the values of the multiple tables and to publish as XML output. The problem is based on the condition of a few tables can retrieve more than 32 KB and less than 32 KB of data. Less than 32KB is not a problem, as the generation of XML is smooth. The minute he reached more than 32 k, it generates a runtime error. I was wondering if there is a way to make sure that the minute results of the query is greater than 32 KB, it must break say - if results is 35KO, so should I break this result 32 KB and 3 KB. Once then pass these data to appear as XML output. Again, it is not just for a table, but all the tables which are called in the function.

    Is it possible? I'm unable to get ideas, or did I do something so complex from the point of view of production support. If you'd be grateful if someone can guide me on this.

    The way it is, is the following:
    I have a table named ctn_pub_cntl


    CREATE TABLE CTNAPP.ctn_pub_cntl 
    (ctn_pub_cntl_id          NUMBER(18)
    ,table_name                  VARCHAR2(50)
    ,last_pub_tms              DATE
    ,queue_name               VARCHAR2(50)
    ,dest_system              VARCHAR2(50)
    ,frequency                  NUMBER(6)
    ,status                      VARCHAR2(8)
    ,record_create_tms          DATE
    ,create_user_id                VARCHAR2(8)
    ,record_update_tms          DATE
    ,update_user_id             VARCHAR2(8)
    ,CONSTRAINT ctn_pub_cntl_id_pk PRIMARY KEY(ctn_pub_cntl_id)
    );
    
    

    To do this, the data are:


    INSERT INTO CTNAPP.ctn_pub_cntl
    (ctn_pub_cntl_id    
     ,table_name         
     ,last_pub_tms  
    ,queue_name  
     ,dest_system        
     ,frequency          
    )
    VALUES
    (CTNAPP_SQNC.nextval
    ,'TRKFCG_SBDVSN'
    ,TO_DATE('10/2/2004 10:17:44PM','MM/DD/YYYY HH12:MI:SSPM')
    ,'UT.TSD.TSZ601.UNP'
    ,'SAP'
    ,15
    );
    
    INSERT INTO CTNAPP.ctn_pub_cntl
    (ctn_pub_cntl_id    
     ,table_name         
     ,last_pub_tms  
     ,queue_name  
     ,dest_system        
     ,frequency          
    )
    VALUES
    (CTNAPP_SQNC.nextval
    ,'TRKFCG_TRACK_SGMNT_DN'
    ,TO_DATE('02/06/2015 9:50:00AM','MM/DD/YYYY HH12:MI:SSPM')
    ,'UT.TSD.WRKORD.UNP'
    ,'SAP'
    ,30
    );
    
    INSERT INTO CTNAPP.ctn_pub_cntl
    (ctn_pub_cntl_id    
     ,table_name         
     ,last_pub_tms  
    ,queue_name  
     ,dest_system        
     ,frequency          
    )
    VALUES
    (CTNAPP_SQNC.nextval
    ,'TRKFCG_FXPLA_TRACK_LCTN_DN'
    ,TO_DATE('10/2/2004 10:17:44PM','MM/DD/YYYY HH12:MI:SSPM')
    ,'UT.TSD.YRDPLN.INPUT'
    ,'SAP'
    ,30
    ); 
    
    INSERT INTO CTNAPP.ctn_pub_cntl
    (ctn_pub_cntl_id    
     ,table_name         
     ,last_pub_tms  
    ,queue_name  
     ,dest_system        
     ,frequency          
    )
    VALUES
    (CTNAPP_SQNC.nextval
    ,'TRKFCG_FXPLA_TRACK_LCTN2_DN'
    ,TO_DATE('02/06/2015 9:50:00AM','MM/DD/YYYY HH12:MI:SSPM')
    ,'UT.TSD.TSZ601.UNP'
    ,'SAP'
    ,120
    );
    
    INSERT INTO CTNAPP.ctn_pub_cntl
    (ctn_pub_cntl_id    
     ,table_name         
     ,last_pub_tms 
    ,queue_name  
     ,dest_system        
     ,frequency          
    )
    VALUES
    (CTNAPP_SQNC.nextval
    ,'TRKFCG_FXPLA_TRACK_LCTN2_DN'
    ,TO_DATE('04/23/2015 11:50:00PM','MM/DD/YYYY HH12:MI:SSPM')
    ,'UT.TSD.YRDPLN.INPUT'
    ,'SAP'
    ,10
    );
    
    INSERT INTO CTNAPP.ctn_pub_cntl
    (ctn_pub_cntl_id    
     ,table_name         
     ,last_pub_tms 
    ,queue_name  
     ,dest_system        
     ,frequency          
    )
    VALUES
    (CTNAPP_SQNC.nextval
    ,'TRKFCG_FIXED_PLANT_ASSET'
    ,TO_DATE('04/23/2015 11:50:00AM','MM/DD/YYYY HH12:MI:SSPM')
    ,'UT.TSD.WRKORD.UNP'
    ,'SAP'
    ,10
    );
    
    INSERT INTO CTNAPP.ctn_pub_cntl
    (ctn_pub_cntl_id    
     ,table_name         
     ,last_pub_tms 
    ,queue_name  
     ,dest_system        
     ,frequency          
    )
    VALUES
    (CTNAPP_SQNC.nextval
    ,'TRKFCG_OPRLMT'
    ,TO_DATE('03/26/2015 7:50:00AM','MM/DD/YYYY HH12:MI:SSPM')
    ,'UT.TSD.WRKORD.UNP'
    ,'SAP'
    ,30
    );
    
    INSERT INTO CTNAPP.ctn_pub_cntl
    (ctn_pub_cntl_id    
     ,table_name         
     ,last_pub_tms
    ,queue_name  
     ,dest_system        
     ,frequency          
    )
    VALUES
    (CTNAPP_SQNC.nextval
    ,'TRKFCG_OPRLMT_SGMNT_DN'
    ,TO_DATE('03/28/2015 12:50:00AM','MM/DD/YYYY HH12:MI:SSPM')
    ,'UT.TSD.WRKORD.UNP'
    ,'SAP'
    ,30
    );
    
    /
    
    COMMIT;
    
    

    Once the above data are inserted and committed, then I created a feature in a package:


    CREATE OR REPLACE PACKAGE CTNAPP.CTN_PUB_CNTL_EXTRACT_PUBLISH
    IS
    
    TYPE tNameTyp IS TABLE OF ctn_pub_cntl.table_name%TYPE INDEX BY BINARY_INTEGER;
    g_tName tNameTyp;
    
    TYPE tClobTyp IS TABLE OF CLOB INDEX BY BINARY_INTEGER;
    g_tClob tClobTyp;
    
    
    FUNCTION GetCtnData(p_nInCtnPubCntlID IN CTN_PUB_CNTL.ctn_pub_cntl_id%TYPE,p_count OUT NUMBER ) RETURN tClobTyp;
    
    
    END CTNAPP.CTN_PUB_CNTL_EXTRACT_PUBLISH;
    
    
    --Package body
    
    CREATE OR REPLACE PACKAGE BODY CTNAPP.CTN_PUB_CNTL_EXTRACT_PUBLISH
    IS
    
         doc           xmldom.DOMDocument;
         main_node     xmldom.DOMNode;
         root_node     xmldom.DOMNode;
         root_elmt     xmldom.DOMElement;
         child_node    xmldom.DOMNode;
         child_elmt    xmldom.DOMElement;
         leaf_node     xmldom.DOMNode;
         elmt_value    xmldom.DOMText;
         tbl_node      xmldom.DOMNode;
         table_data    XMLDOM.DOMDOCUMENTFRAGMENT;
      
         l_ctx         DBMS_XMLGEN.CTXHANDLE;
         vStrSqlQuery  VARCHAR2(32767);
         l_clob        tClobTyp;
         --
         l_xmltype     XMLTYPE;
         --
    --Local Procedure to build XML header     
    PROCEDURE BuildCPRHeader IS
    
      BEGIN
        child_elmt := xmldom.createElement(doc, 'PUBLISH_HEADER');
        child_node  := xmldom.appendChild (root_node, xmldom.makeNode (child_elmt));
    
        child_elmt := xmldom.createElement (doc, 'SOURCE_APLCTN_ID');
        elmt_value := xmldom.createTextNode (doc, 'CTN');
        leaf_node  := xmldom.appendChild (child_node, xmldom.makeNode (child_elmt));
        leaf_node  := xmldom.appendChild (leaf_node, xmldom.makeNode (elmt_value));
        
        child_elmt := xmldom.createElement (doc, 'SOURCE_PRGRM_ID');
        elmt_value := xmldom.createTextNode (doc, 'VALUE');
        leaf_node  := xmldom.appendChild (child_node, xmldom.makeNode (child_elmt));
        leaf_node  := xmldom.appendChild (leaf_node, xmldom.makeNode (elmt_value));
    
        child_elmt := xmldom.createElement (doc, 'SOURCE_CMPNT_ID');
        elmt_value := xmldom.createTextNode (doc, 'VALUE');
        leaf_node  := xmldom.appendChild (child_node, xmldom.makeNode (child_elmt));
        leaf_node  := xmldom.appendChild (leaf_node, xmldom.makeNode (elmt_value));
    
        child_elmt := xmldom.createElement (doc, 'PUBLISH_TMS');
        elmt_value := xmldom.createTextNode (doc, TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));
        leaf_node  := xmldom.appendChild (child_node, xmldom.makeNode (child_elmt));
        leaf_node  := xmldom.appendChild (leaf_node, xmldom.makeNode (elmt_value));
        
    END BuildCPRHeader;
    
    --Get table data based on table name
    FUNCTION GetCtnData(p_nInCtnPubCntlID IN CTN_PUB_CNTL.ctn_pub_cntl_id%TYPE,p_Count OUT NUMBER) RETURN tClobTyp IS
        
        vTblName      ctn_pub_cntl.table_name%TYPE;
        vLastPubTms   ctn_pub_cntl.last_pub_tms%TYPE;
         
    BEGIN
                g_vProcedureName:='GetCtnData';    
                g_vTableName:='CTN_PUB_CNTL';
                
            SELECT table_name,last_pub_tms
            INTO   vTblName, vLastPubTms
            FROM   CTN_PUB_CNTL
            WHERE  ctn_pub_cntl_id=p_nInCtnPubCntlID;
        
        -- Start the XML Message generation
            doc := xmldom.newDOMDocument;
            main_node := xmldom.makeNode(doc);
            root_elmt := xmldom.createElement(doc, 'PUBLISH');
            root_node := xmldom.appendChild(main_node, xmldom.makeNode(root_elmt));
            
          --Append Table Data as Publish Header
            BuildCPRHeader;
            
          --Append Table Data as Publish Body
          
           child_elmt := xmldom.createElement(doc, 'PUBLISH_BODY');
           leaf_node  := xmldom.appendChild (root_node, xmldom.makeNode(child_elmt)); 
           
           DBMS_SESSION.SET_NLS('NLS_DATE_FORMAT','''YYYY:MM:DD HH24:MI:SS''');
           
           vStrSqlQuery := 'SELECT * FROM ' || vTblName 
                          || ' WHERE record_update_tms <= TO_DATE(''' || TO_CHAR(vLastPubTms, 'MM/DD/YYYY HH24:MI:SS') || ''', ''MM/DD/YYYY HH24:MI:SS'') ' ;
                        --  ||  ' AND rownum < 16'
                          --;
          DBMS_OUTPUT.PUT_LINE(vStrSqlQuery);
           
           l_ctx  := DBMS_XMLGEN.NEWCONTEXT(vStrSqlQuery);
          DBMS_XMLGEN.SETNULLHANDLING(l_ctx, 0);
          DBMS_XMLGEN.SETROWSETTAG(l_ctx, vTblName); 
           
          -- Append Table Data as XML Fragment
          l_clob(1):=DBMS_XMLGEN.GETXML(l_ctx);  
          elmt_value := xmldom.createTextNode (doc, l_clob(1)); 
         leaf_node  := xmldom.appendChild (leaf_node, xmldom.makeNode (elmt_value)); 
         
         xmldom.writeToBuffer (doc, l_clob(1));
         l_clob(1):=REPLACE(l_clob(1),'&lt;?xml version=&quot;1.0&quot;?&gt;', NULL);
         l_clob(1):=REPLACE(l_clob(1),'&lt;', '<');
         l_clob(1):=REPLACE(l_clob(1),'&gt;', '>');
         
         RETURN l_clob;
         
         DBMS_OUTPUT.put_line('Answer is' ||l_clob(1));
         
         EXCEPTION
            
            WHEN NO_DATA_FOUND THEN
            
            DBMS_OUTPUT.put_line('There is no data with' || SQLERRM);
            g_vProcedureName:='GetCtnData';
            g_vTableName:='CTN_PUB_CNTL';
            g_vErrorMessage:=SQLERRM|| g_vErrorMessage;
            g_nSqlCd:=SQLCODE;
            ctn_log_error('ERROR',g_vErrorMessage,'SELECT',g_nSqlCd,p_nInCtnPubCntlID,g_vPackageName,g_vProcedureName,g_vTableName);
            
            
            WHEN OTHERS THEN
           
           DBMS_OUTPUT.PUT_LINE('ERROR : ' || SQLERRM);
           ctn_log_error('ERROR',g_vErrorMessage,'OTHERS',g_nSqlCd,p_nInCtnPubCntlID,g_vPackageName,g_vProcedureName,g_vTableName);
           
    END GetCtnData;
    
    
    PROCEDURE printClob (result IN OUT NOCOPY CLOB) IS
        xmlstr   VARCHAR2 (32767);
        line     VARCHAR2 (2000);
    BEGIN
        xmlstr := DBMS_LOB.SUBSTR (result, 32767);
    
        LOOP
           EXIT WHEN xmlstr IS NULL;
           line := SUBSTR (xmlstr, 1, INSTR (xmlstr, CHR (10)) - 1);
           DBMS_OUTPUT.put_line (line);
           xmlstr := SUBSTR (xmlstr, INSTR (xmlstr, CHR (10)) + 1);
        END LOOP;
    END printClob;
    
    END CTN_PUB_CNTL_EXTRACT_PUBLISH;
    
     
    

    If you notice my query:


    vStrSqlQuery := 'SELECT * FROM ' || vTblName 
                          || ' WHERE record_update_tms <= TO_DATE(''' || TO_CHAR(vLastPubTms, 'MM/DD/YYYY HH24:MI:SS') || ''', ''MM/DD/YYYY HH24:MI:SS'') ' ;
                         ||  ' AND rownum < 16'
                        ;
    

    The minute I comment

    ||  ' AND rownum < 16' ;


    It generates an error because this query returns about 600 lines and all these lines must be published in XML format and the tragedy, is that it is a C program between institutions i.e. C calls my functions of packged and then will do all the processing. This will return the results to the C program. Then obviously C does not recognize the CLOB and somewhere in the process, I convert to VARCHAR or CLOB CLOB, I have to use VARCHAR as a return type. That's my challenge.


    Someone who can help me find the number required of magic and also a brief knows how, I understand that. Thanks in advance.

    Not that I would use it myself but your package can be simplified down, like this:

    create or replace package ctn_pub_cntl_extract_publish is
    
      C_DTFORMAT  constant varchar2(30) := 'YYYY-MM-DD HH24:MI:SS';
    
      function getXMLData (p_table_name in varchar2, p_pub_tms in date) return xmltype;
      function getCTNData (p_id in number) return clob;
    
    end ctn_pub_cntl_extract_publish;
    /
    
    create or replace package body ctn_pub_cntl_extract_publish is
    
      function getXMLData (p_table_name in varchar2, p_pub_tms in date)
      return xmltype
      is
    
        v_query  varchar2(32767) :=
                 q'{select * from $$TABLE_NAME where record_update_tms <= to_date(:1, 'YYYYMMDDHH24MISS')}';
    
        ctx      dbms_xmlgen.ctxHandle;
        doc      xmltype;
    
      begin
    
        execute immediate 'alter session set nls_date_format = "'||C_DTFORMAT||'"';
        v_query := replace(v_query, '$$TABLE_NAME', dbms_assert.simple_sql_name(p_table_name)); 
    
        ctx := dbms_xmlgen.newContext(v_query);
        dbms_xmlgen.setBindValue(ctx, '1', to_char(p_pub_tms, 'YYYYMMDDHH24MISS'));
        dbms_xmlgen.setRowSetTag(ctx, p_table_name);
        dbms_xmlgen.setNullHandling(ctx, dbms_xmlgen.DROP_NULLS);
        doc := dbms_xmlgen.getXMLType(ctx);
        dbms_xmlgen.closeContext(ctx);
    
        return doc; 
    
      end;
    
      function getCTNData (p_id in number)
      return clob
      is
    
        doc  clob;
    
      begin
    
        select xmlserialize(document
                 xmlelement("PUBLISH"
                 , xmlelement("PUBLISH_HEADER"
                   , xmlforest(
                       'CNT' as "SOURCE_APLCTN_ID"
                     , 'VALUE' as "SOURCE_PRGRM_ID"
                     , 'VALUE' as "SOURCE_CMPNT_ID"
                     , to_char(sysdate, C_DTFORMAT) as "PUBLISH_TMS"
                     )
                   )
                 , xmlelement("PUBLISH_BODY"
                   , getXMLData(t.table_name, t.last_pub_tms)
                   )
                 )
               )
        into doc
        from ctn_pub_cntl t
        where t.ctn_pub_cntl_id = p_id;
    
        return doc;
    
      end;
    
    end ctn_pub_cntl_extract_publish;
    

    Function getXMLData() generates a canonical XML document out of the table that is passed as a parameter.

    Function built getCTNData() code XML "PUBLISH", the document using SQL/XML functions, the getXMLData() call in the process and returns the content serialized as a CLOB.

  • How to get the metadata for the selected tables of a schema

    Hello

    I need the metadata for the tables selected for an activity. The list of the table continues to change now. I get the list of tables just before the activity.

    What I need is to know how to put the list of tables in the sub query dynamicallly

    +++++++++++
    exec dbms_metadata.set_transform_param (DBMS_METADATA. False SESSION_TRANSFORM, 'SEGMENT_ATTRIBUTES',);
    exec dbms_metadata.set_transform_param (DBMS_METADATA. False SESSION_TRANSFORM, 'STORAGE',);
    exec dbms_metadata.set_transform_param (DBMS_METADATA. SESSION_TRANSFORM, 'TABLESPACE', TRUE);

    Select DBMS_METADATA. GET_DDL ('TABLE', '&') from user_tables where rownum < 2;
    +++++++++++

    What I need is something of the form where table_name in (< table1 >, < table2 >, < table3 >,..., etc.) in the query above, so that i access all the metadata
    He doesn't hit me how I can write this query to single line. Can someone help here?

    Regds,
    Malika

    Hello

    try using the name of the column to user_tables and owner of the table in the "DBMS_METADATA. GET_DDL' and the reel to reel for some files and run this file in turn exit.

    coil
    Select ' select DBMS_METADATA. GET_DDL ("' TABLE," ' | table_name |', "' ) double;' from user_tables
    where ;
    spool off;

    @some_file - trying to spool output too.

    -Pavan Kumar N

  • How to get ALL of the 'real' database table in apps/apps

    Hi all

    EBS R12.2

    OEL 6

    I create tables derived from drawing apps and custom drawing.

    When I connect to apps/apps, there are a lot of objects, synonyms, views that point to other tables, synonyms, views of another schema as AP, AR, GL, etc..

    What is confusing is a view contains a table attached, then it is created with a synonym of an another synonyms joined another scheme.

    How can I get the list of actual tables being accessed from these apps objects?

    I would also like to count the lines of ALL the actual tables and get their real value.

    Thank you very much

    JC

    See the answers here >DBA_DEPENDENCIES

  • How to get the last records of a Table

    Hey Geeks,

    I have this 'conflict '.

    I need to get the 'current balance' for each account, the newest "current_Balance".

    The table looks like this

    ACCOUNT_IDBUSINESS_TRANSACTION_IDCURRENT_BALANCETRANSACTION_AMOUNTTRANSACTION_DATE
    1 062 570238 043 51751'022-20'00031.03.2014 17:49:00.808000
    1 062 570238 042 40771'022-20'00031.03.2014 17:33:55.666000
    1 062 570238 042 36891'022-26'00031.03.2014 17:33:20.067000
    1 062 570238 041 273117'022-50,00031.03.2014 17:18:25.189000
    1 062 570238 041 174167'022-10,00031.03.2014 17:16:59.361000
    1 062 570238 038 702177'022-2'50031.03.2014 16:44:58.332000
    5 607 555238 046 7131'026-28'50031.03.2014 18:35:16.212000
    5 607 555238 040 59229'526-100,00031.03.2014 17:10:15.474000

    I need this result:

    ACCOUNT_ID CURRENT_BALANCE

    5 607 555 1'026

    1 062 570 51'022                   


    How we handle this?


    Thxs for your help


    Ineffective :-)

    SELECT Account_id

    MAX (current_balance) KEEP (DENSE_RANK LAST ORDER BY transaction_date) current_balance

    MAX (business_transaction_id) KEEP (DENSE_RANK LAST ORDER BY transaction_date) business_transaction_id

    Of account_balances

    GROUP BY account_id

    See on Oracle: clause to keep

    Concerning

    Marcus

Maybe you are looking for

  • Satellite A100-049: message: AC monitor does not?

    Can help anyone, on startup, I get a message... AC Monitor not working then check the solutions... then cannot find AC monitor will be closed.

  • Upgrade your wireless Y510p to Wifi AC adapter

    I got my Y510p about two weeks as planned and there is Wifi is crap. I was wondering if I could update my card wireless in Intel AC 7260. Wifi AC work correctly, the fact that it has dual band 2, 4 and 5. If it's possible, but I need to delete the wh

  • Error E0BB0147: the "Volume Snap" operation is not currently enabled for this Volume

    Hello! Since an update of my Windows XP at the end of 2011, I have problems on my HD using Ghost 14.0 backup. I get the following error message: -Impossible to create an image of the selected disk virtual volume. -E0BB0147 error: "Volume Snap" operat

  • Two monitors for the HP Pavilion Elite HPE with a Nvidia GeForce GT420

    I currently have a HP 2211 monitor x and I have no connection problem which, however, I recently bought a HP s2331a I have bad to configure the monitor because it does not recognize the monitor is there something I am missing or just may not know how

  • parent/child relationship hirarchy

    Hi everyone, consider the sample dataSELECT LFROM '1TR1Y6', NULL LTO, MID '11ZFDD', '21XHK7' double UNION ALL TID-SELECT '1TR1YF' LFROM, LTO NULL, '11ZFDD' MI '21XHK5' TID FROM dual UNION ALL-SELECT '1TR1X1' LFROM, LTO NULL, '11ZFDD' MI '21XHK8' TID