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?
Published by: user12240205 on June 18, 2012 03:19SQL> 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.
/* 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:25You 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.
-
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:38Note:
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 youWell 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_cntlCREATE 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),'<?xml version="1.0"?>', NULL); l_clob(1):=REPLACE(l_clob(1),'<', '<'); l_clob(1):=REPLACE(l_clob(1),'>', '>'); 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,
MalikaHello
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_ID BUSINESS_TRANSACTION_ID CURRENT_BALANCE TRANSACTION_AMOUNT TRANSACTION_DATE 1 062 570 238 043 517 51'022 -20'000 31.03.2014 17:49:00.808000 1 062 570 238 042 407 71'022 -20'000 31.03.2014 17:33:55.666000 1 062 570 238 042 368 91'022 -26'000 31.03.2014 17:33:20.067000 1 062 570 238 041 273 117'022 -50,000 31.03.2014 17:18:25.189000 1 062 570 238 041 174 167'022 -10,000 31.03.2014 17:16:59.361000 1 062 570 238 038 702 177'022 -2'500 31.03.2014 16:44:58.332000 5 607 555 238 046 713 1'026 -28'500 31.03.2014 18:35:16.212000 5 607 555 238 040 592 29'526 -100,000 31.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
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