Xmltable in plsql
I am trying to get data which is in an xmltype table for use in my plsql procedure and keep getting err:
Error(19,41): PLS-00302: component 'OBJECT_VALUE' must be declared
Am I approaching this wrong? It works fine without the into in SQL.
Thanks
declare
v_mc_id number;
v_class_id number;
v_dept VARCHAR2(10);
v_class_num number;
v_section VARCHAR2(10);
v_professor VARCHAR2(100);
v_title VARCHAR2(100);
v_syllabus_hash_key varchar2(512);
BEGIN
-- Get the non-nested items from the XML document
SELECT c.department,c.classNumber,c.section,c.professor,c.title, c.syllabusHashkey
INTO v_dept, v_class_num, v_section, v_professor, v_title, v_syllabus_hash_key
FROM classxml,
xmltable('/class' passing classxml.object_value
columns
department VARCHAR2(10) path 'department',
classNumber number path 'classNumber',
section VARCHAR2(10) path 'section',
professor VARCHAR2(100) path 'professor',
title VARCHAR2(100) path 'classTitle',
syllabusHashKey varchar2(512) path 'syllabusHashKey') c;
end;
nevermind, I figured out that I needed an XML type variable and then the passing clause referenced the variable
SELECT c.department,c.classNumber,c.section,c.professor,c.title, c.syllabusHashkey
INTO v_dept, v_class_num, v_section, v_professor, v_title, v_syllabus_hash_key
FROM xmltable('/class' passing p_xml
columns
department VARCHAR2(10) path 'department',
classNumber number path 'classNumber',
section VARCHAR2(10) path 'section',
professor VARCHAR2(100) path 'professor',
title VARCHAR2(100) path 'classTitle',
syllabusHashKey varchar2(512) path 'syllabusHashKey') c;
Similar Messages
-
Issue with using xmltable() with xmltype() in plsql--help needed urgent
HI All,
I am trying to use XMLTABLE() to get the data from the xmltype(), I used the below query, when I run this, I get the syntax error "ORA-00906: missing left parenthesis--I am struggling to find out which paranthesis I am missing
00906. 00000 - "missing left parenthesis"
*Cause:
*Action:
Error at Line: 9 Column: 22"
SELECT
hours.OpeningTime, hours.ClosingTime, hours.DayOfWeek
from table1 tab,
XMLTABLE(XMLNAMESPACES(DEFAULT 'https://xxx.xxx.xx.gov/'),'/ProviderApplicationDTO/ProvOperationHours/WeekHours/KeyValuePairOfFirstDayOfWeekHoursOfOperation'
PASSING tab.column --this column is of xmltype()
COLUMNS
OpeningTime varchar2 PATH '/ProviderApplicationDTO/ProvOperationHours/WeekHours/KeyValuePairOfFirstDayOfWeekHoursOfOperation/Value/OpeningTime',
ClosingTime varchar2 PATH '/ProviderApplicationDTO/ProvOperationHours/WeekHours/KeyValuePairOfFirstDayOfWeekHoursOfOperation/Value/ClosingTime',
DayOfWeek varchar2 PATH '/ProviderApplicationDTO/ProvOperationHours/WeekHours/KeyValuePairOfFirstDayOfWeekHoursOfOperation/Key') hours
Where column = 70;
<ProviderApplicationDTO>
<ProvOperationHours>
<WeekHours>
<KeyValuePairOfFirstDayOfWeekHoursOfOperation>
<Value>
<OpeningTime />
<ClosingTime />
</Value>
<Key>Sunday</Key>
</KeyValuePairOfFirstDayOfWeekHoursOfOperation>
<KeyValuePairOfFirstDayOfWeekHoursOfOperation>
<Value>
<OpeningTime />
<ClosingTime />
<IsOpenAM>AM</IsOpenAM>
<IsCloseAM>PM</IsCloseAM>
</Value>
<Key>Monday</Key>
</KeyValuePairOfFirstDayOfWeekHoursOfOperation>
<KeyValuePairOfFirstDayOfWeekHoursOfOperation>
<Value>
<OpeningTime />
<ClosingTime />
</Value>
</ProvOperationHours>
</ProviderApplicationDTO>
Edited by: 804681 on Jan 7, 2011 8:22 AMInteresting... it seems they either changed the comma in between 10g and 11g or there is a bug in the 11g documentation. I think I will report it to the documentation forum. Since the 11g gif description includes the coma. http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/img_text/xmltable.htm
I guess Michaels found the real bug. You can always count on him when it gets to XML-action. -
I am trying to get data which is in an xmltype table for use in my plsql procedure and keep getting err:
Error(19,41): PLS-00302: component 'OBJECT_VALUE' must be declared
Am I approaching this wrong? It works fine without the into in SQL.
Thanks
declare
v_mc_id number;
v_class_id number;
v_dept VARCHAR2(10);
v_class_num number;
v_section VARCHAR2(10);
v_professor VARCHAR2(100);
v_title VARCHAR2(100);
v_syllabus_hash_key varchar2(512);
BEGIN
-- Get the non-nested items from the XML document
SELECT c.department,c.classNumber,c.section,c.professor,c.title, c.syllabusHashkey
INTO v_dept, v_class_num, v_section, v_professor, v_title, v_syllabus_hash_key
FROM classxml,
xmltable('/class' passing classxml.object_value
columns
department VARCHAR2(10) path 'department',
classNumber number path 'classNumber',
section VARCHAR2(10) path 'section',
professor VARCHAR2(100) path 'professor',
title VARCHAR2(100) path 'classTitle',
syllabusHashKey varchar2(512) path 'syllabusHashKey') c;
end;The post in the link is very good..However, for starters on XMLTable usage I felt it could be little complex. I found another link that explains the XMLTable Usage with Simple examples. I would like to recommend it for somebody who are trying to get started with XMLTable.
Cheers.. -
Creating a PLSQL script to parse structured XML with repeated tags
Hi, I'm trying to parse an xml feed but the way it's structured makes it difficult to pull out the values. (see example) Would anyone be able to recommend a solution or some ideas as to how to get around this?
SAMPLE XML:<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
<env:Header>
</env:Header>
<env:Body>
<ns3:commandResponse xmlns:ns2="http://test.com/2011/Generic/schema" xmlns:ns3="http://test.com/2011/Generic">
<return>
<ns2:return>success</ns2:return>
<ns2:Command>issues</ns2:Command>
<ns2:WorkItems>
<ns2:Id>216141</ns2:Id>
<ns2:ModelType>Issue</ns2:ModelType>
<ns2:DisplayId>216141</ns2:DisplayId>
<ns2:Field>
<ns2:Name>Type</ns2:Name>
<ns2:Value>
<ns2:Item>
<ns2:Id>Dev Task</ns2:Id>
<ns2:ModelType>Type</ns2:ModelType>
<ns2:DisplayId>Dev Task</ns2:DisplayId>
</ns2:Item>
</ns2:Value>
</ns2:Field>
<ns2:Field>
<ns2:Name>ID</ns2:Name>
<ns2:Value>
<ns2:int>216141</ns2:int>
</ns2:Value>
</ns2:Field>
<ns2:Field>
<ns2:Name>Reason</ns2:Name>
<ns2:Value>
<ns2:string>Integrating</ns2:string>
</ns2:Value>
</ns2:Field>
<ns2:Field>
<ns2:Name>Dev Task Component</ns2:Name>
<ns2:Value>
<ns2:string>Java Tools</ns2:string>
</ns2:Value>
</ns2:Field>
<ns2:Field>
<ns2:Name>Created Date</ns2:Name>
<ns2:Value>
<ns2:datetime>2009-08-10T15:52:39.000-04:00</ns2:datetime>
</ns2:Value>
</ns2:Field>
<ns2:Field>
<ns2:Name>Date Closed</ns2:Name>
<ns2:Value/>
</ns2:Field>
<ns2:Field>
<ns2:Name>Modified Date</ns2:Name>
<ns2:Value>
<ns2:datetime>2011-03-04T12:57:05.000-05:00</ns2:datetime>
</ns2:Value>
</ns2:Field>
</ns2:WorkItems>
</return>
</ns3:commandResponse>
</env:Body>
</env:Envelope>This is just a sample with just one WorkItem, but there would be much more, N number of items with 9 fields per item. (Not all of the fields were put in the sample, and some can have null values)
I only need to pull the content from /ns2:WorkItems/ns2:Field/ns2:Value/ns2:Item/ns2:Id for the first field and the /ns2:value/* tag of all the other fields. Then put this in a table where each row is a workitem and the fields are the columns (create table workitems (Type,ID,Reason,Dev Task Component,Created Date, Date Closed, Modified Date) --all the fields should be varchar2 except the dates)
What I've been trying so far seems rather brute force by running a nested loop to go through every item and field and then an IF case for each field 1,2,...9 which would insert the value into a table.
At the moment I'm using something like below to pull a single value
path1 = '//ns2:WorkItems[1]/ns2:Field[1]/ns2:Value[1]/ns2:Item[1]/ns2:Id[1]';
nameserve = 'xmlns:ns2="http://test.com/2011/Generic/schema"';
extractvalue(xmltype(src_clob),path1,nameserve);I'm not entirely sure if I would be able to substitute the [1]'s with [' || nitem || '] where nitem is loop number to do something like:
for nitem in 1..itemcount
loop
FOR nfield in 1..9
loop
if nfield=1 then
path1 := '//ns2:WorkItems[' || nitem || ']/ns2:Field[' || nfield || ']/ns2:Value[1]/ns2:Item[1]/ns2:Id';
fieldvalue := extractvalue(xmltype(src_clob),path1,nameserve);';
else
path2 := '//ns2:WorkItems[' || nitem || ']/ns2:Field[' || nfield || ']/ns2:Value[1]/*[1]';
fieldvalue := extractvalue(xmltype(src_clob),path2,nameserve);';
end if;
end loop;
end loop;The problem with the above script is how do I insert this fieldvalue into different columns on a table without using an IF case for each field.
I was wondering if there is simpler way to put each field into a different column and loop through every workitem. I looked into dynamically naming variables but I don't think plsql supports that.
Any help/advice is appreciated,
Thanks!
Edited by: 843508 on Mar 10, 2011 1:56 PM
Edited by: 843508 on Mar 10, 2011 1:57 PM
Edited by: 843508 on Mar 10, 2011 2:01 PMIf it were me, I wouldn't use PL/SQL to try and process XML, but would use SQL's XMLTABLE functionality e.g.
SQL> ed
Wrote file afiedt.buf
1 WITH t as (select XMLTYPE('
2 <RECSET xmlns:aa="http://www.w3.org">
3 <aa:REC>
4 <aa:COUNTRY>1</aa:COUNTRY>
5 <aa:POINT>1800</aa:POINT>
6 <aa:USER_INFO>
7 <aa:USER_ID>1</aa:USER_ID>
8 <aa:TARGET>28</aa:TARGET>
9 <aa:STATE>6</aa:STATE>
10 <aa:TASK>12</aa:TASK>
11 </aa:USER_INFO>
12 <aa:USER_INFO>
13 <aa:USER_ID>5</aa:USER_ID>
14 <aa:TARGET>19</aa:TARGET>
15 <aa:STATE>1</aa:STATE>
16 <aa:TASK>90</aa:TASK>
17 </aa:USER_INFO>
18 </aa:REC>
19 <aa:REC>
20 <aa:COUNTRY>2</aa:COUNTRY>
21 <aa:POINT>2400</aa:POINT>
22 <aa:USER_INFO>
23 <aa:USER_ID>3</aa:USER_ID>
24 <aa:TARGET>14</aa:TARGET>
25 <aa:STATE>7</aa:STATE>
26 <aa:TASK>5</aa:TASK>
27 </aa:USER_INFO>
28 </aa:REC>
29 </RECSET>') as xml from dual)
30 -- END OF TEST DATA
31 select x.country, x.point, y.user_id, y.target, y.state, y.task
32 from t
33 ,XMLTABLE(XMLNAMESPACES('http://www.w3.org' as "aa"),
34 '/RECSET/aa:REC'
35 PASSING t.xml
36 COLUMNS country NUMBER PATH '/aa:REC/aa:COUNTRY'
37 ,point NUMBER PATH '/aa:REC/aa:POINT'
38 ,user_info XMLTYPE PATH '/aa:REC/*'
39 ) x
40 ,XMLTABLE(XMLNAMESPACES('http://www.w3.org' as "aa"),
41 '/aa:USER_INFO'
42 PASSING x.user_info
43 COLUMNS user_id NUMBER PATH '/aa:USER_INFO/aa:USER_ID'
44 ,target NUMBER PATH '/aa:USER_INFO/aa:TARGET'
45 ,state NUMBER PATH '/aa:USER_INFO/aa:STATE'
46 ,task NUMBER PATH '/aa:USER_INFO/aa:TASK'
47* ) y
SQL> /
COUNTRY POINT USER_ID TARGET STATE TASK
1 1800 1 28 6 12
1 1800 5 19 1 90
2 2400 3 14 7 5p.s. XML questions are better suited in the XML DB forum:
XML DB FAQ -
Error while trying to access a SSWA PLSQL function
Hi,
I am trying to access a report as a web page by defining the function as follows :
Type : SSWA PLSQL FUNCTION
HTML Call : OracleOASIS.RunReport
Parameters : report=EMPDET
This function is attached to the menu and when I try to access the page I get this error.
"Error: The requested URL was not found, or cannot be served at this time.
Incorrect usage."
The URL that shows in the page is as follows(<server:port> I removed the server name and port) :
http://<server:port>/dev60cgi/rwcgi60?GDEV_APPS+DESFORMAT=HTML+SERVER=GDEV_APPS+report=EMPDET+p_session_id=A9C71A70B9B1D9BD2DCC0FC3AF9BC324+p_user_id=1133+p_responsibility_id=50230+p_application_id=800+p_security_group_id=0+p_language_code=US+NLS_LANG=AMERICAN_AMERICA+NLS_DATE_FORMAT=DD-MON-RRRR+NLS_NUMERIC_CHARACTERS=.%2C+NLS_DATE_LANGUAGE=AMERICAN+NLS_SORT=BINARY+paramform=NO
Surprisingly other functions which are defined in this manner work fine. Do I need to register my report anywhere or are there any other settings I need to do for the report to show up.
Can someone let me know.
ThanksHi ;
pelase check below which could be similar error like yours
Troubleshooting of Runtime Errors of Customer Intelligence Reports [ID 284829.1]
Regard
Helios -
Error while consuming PLSQL Webservice through BPEL
HI ,
I have created a simple PLSQL Web service called "HelloWorld" and it got successfully deployed .
When I tried to test this webservice through BPEL Process Manager , its showing me error everytime that ( Could not create object of class 'dimple.HelloWorldWebServiceUser'; nested exception is: java.lang.ClassNotFoundException: dimple.HelloWorldWebServiceUser</summary> ) .
Please anyone help me out with this problem .
Thanks
Prashant DwivediHI ,
I have created a simple PLSQL Web service called "HelloWorld" and it got successfully deployed .
When I tried to test this webservice through BPEL Process Manager , its showing me error everytime that ( Could not create object of class 'dimple.HelloWorldWebServiceUser'; nested exception is: java.lang.ClassNotFoundException: dimple.HelloWorldWebServiceUser</summary> ) .
Please anyone help me out with this problem .
Thanks
Prashant Dwivedi -
The simplest way for plsql procedure to return multiple rows
Hi,
What is the simplest way for plsql procedure to return multiple rows (records). There are many combination of ways to do it but I am looking for a solution that is appropriate for plsql beginners. Many solutions use cursors, cursor variables, collections and more that kind of things that are complex on the face of it. Is it somehow possible to achieve the same with less effort?
Sample query would be: SELECT * FROM EMPLOYEES;
I want to use returned rows in APEX to compose APEX SQL(in that context plsql) report.
It is enough to use just SELECT * FROM EMPLOYEES query in APEX but I want to use plsql procedure for that.
Thank you!Hi,
It depends :-).
With +...that is appropriate for plsql beginners...+ in mind... it still depends!
The list of techniques (ref cursors, cursor variables, collections, arrays, using explict SQL) you have referenced in your post can be made to work. but...
+Is it somehow possible to achieve the same with less effort?+ Less effort : That needs to be defined (measured). Especially in the context of pl/sql beginners (who is a beginner?) .
What is the level of "programming experience" ?
What is the level of understanding of "Relational Result set" as processible in Oracle?
If you are looking for
Process_the_set_of rows_in APEX () kind of capabilitywhich "abstracts/hides" relation database from developers when working on relation database, it may not be the best approach (at least strategically). Because I believe it already is abstracted enough.
I find REF CUROSOR most effective for such use, when the "begginer" has basic understanding of processing SQL result set .
So in a nut shell, the techniques (that you already are familiar with) are the tools available. I am not aware of any alternative tools (in pure Oracle) that will simplify / hide basics from develpers.
vr,
Sudhakar B. -
Generate Query in PLSQL to return Well Formed XML with Multiple records
Hi there
This is very urgent. I am trying to create a PLSQL query that should retrieve all records from oracle database table "tbl_Emp" in a well formed xml format. The format is given below
*<Employees xmlns="http://App.Schemas.Employees" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">*
*<Employee>*
*<First_Name></First_Name>*
*<Last_Name></Last_Name>*
*</Employee>*
*<Employee>*
*<First_Name></First_Name>*
*<Last_Name></Last_Name>*
*</Employee>*
*</Employees>*
To retrieve data in above format, I have been trying to create a query for long time as below
SELECT XMLElement("Employees",
XMLAttributes('http://App.Schemas.Employees' AS "xmlns",
*'http://www.w3.org/2001/XMLSchema-instance' AS "xmlns:xsi"),*
XMLElement("Employee", XMLForest(First_Name, Last_Name)))
AS "RESULT"
FROM tbl_Emp;
But it does not give me the required output. It creates <Employees> tag with each individual record which I don't need. I need <Employees> tag to be the root tag and <Employee> tag to repeat and wrap each individual record. Please help me in this as this is very urgent. Thanks.Hi,
Please remember that nothing is "urgent" here, and repeating that it is will likely produce the opposite effect.
If you need a quick answer, provide all necessary details in the first place :
- db version
- test case with sample data and DDL
That being said, this one's easy, you have to aggregate using XMLAgg :
SELECT XMLElement("Employees"
, XMLAttributes(
'http://App.Schemas.Employees' AS "xmlns"
, 'http://www.w3.org/2001/XMLSchema-instance' AS "xmlns:xsi"
, XMLAgg(
XMLElement("Employee"
, XMLForest(
e.first_name as "First_Name"
, e.last_name as "Last_Name"
) AS "RESULT"
FROM hr.employees e
; -
Business Event not triggering the PLSQL procedure.. What to do?
We need to call a plsql procedure when the GL Approval workflow has ended with approval. I thought i could do this by customizing the relevant business event.
We are on EBS 12.1.3 with RDBMS : 11.2.0.3.0.
I saw that the business event oracle.apps.gl.Journals.journal.approve was disabled currently. I enabled it and created a subscription for it. Subscription was a PLSQL procedure. Currently, for test purpose only thing it is doing is to insert a row into a table.
Business Event Subscription settings:
System: ORDEBS.SYSTEM.COM
Triggering Event
Source Type:Local
Event Filter: oracle.apps.gl.Journals.journal.approve
Execution Condition
Phase: 100
Status: Enabled
Rule Data: Message
Action Type:Custom
On Error: Stop and Rollback
Action
PL/SQL Rule Function: XX_GL_APPROVE_BE_PKG.Get_Attributes
Priority: Normal
Documentation (Not sure what value to be given for these. I went with the below values.)
Owner: Company Name
Owner Tag: Custom Schema
Using the below query i can see that the business event is getting called when the approval happens (One row added each time approval happened). But I cant see any rows in the table where it should insert a row. What could be going wrong? How can i verify that the procedure has been called?
select * from WF_DEFERRED where corrid ='APPS:oracle.apps.gl.Journals.journal.approve'
Procedure:
CREATE OR REPLACE PACKAGE BODY APPS.XX_GL_APPROVE_BE_PKG
AS
PROCEDURE Get_Attributes
IS
BEGIN
INSERT INTO xx.xx_test_table VALUES ('From BE');
COMMIT;
END Get_Attributes;
END XX_GL_APPROVE_BE_PKG;Thanks Alejandro. Now this is working.
Changes i made:
1. Added the WFERROR workflow as a subscription to this event. So i could see that the function i am calling from the event did not have proper signature.
2. Changed the function signature to have standard parameters like:
CREATE OR REPLACE PACKAGE BODY XX_GL_APPROVE_BE_PKG
AS
function subscription(p_subscription_guid in raw,
p_event in out nocopy wf_event_t) return varchar2 is
l_result varchar2(20);
begin
insert into xxvtv.xxvtv_test_table values ('From BE');
commit;
exception
when others then
wf_core.context('XX_GL_APPROVE_BE_PKG','function subscription', p_event.getEventName(), p_event.getEventKey());
wf_event.setErrorInfo(p_event, 'ERROR');
return 'ERROR';
end subscription;
END XX_GL_APPROVE_BE_PKG;
3. Changed the owner name and owner tag both to the custom schema name (XX) -
Difference between empty plsql record and null plsql record
Hi there,
I am kinda getting confused with empty plsql record and null plsql record.
How do I assign plsql record to be empty and to be null?
create type emp_obj as object (enum number, ename varchar2);
CREATE OR REPLACE TYPE emp_type AS TABLE OF emp_obj;
ThanksFirst of all, do not use term PL/SQL record in this context. Record type in PL/SQL is completely different from object type. Secondly, there are 2 states of a nested table:
1. Unintialized:
SQL> create or replace
2 type emp_obj_type as object(enum number, ename varchar2(10));
3 /
Type created.
SQL> create or replace
2 type emp_tbl_type as table of emp_obj_type
3 /
Type created.
SQL> declare
2 v_emp_tbl emp_tbl_type;
3 begin
4 v_emp_tbl.extend;
5 end;
6 /
declare
ERROR at line 1:
ORA-06531: Reference to uninitialized collection
ORA-06512: at line 4
SQL> 2 Empty:
SQL> set serveroutput on
SQL> declare
2 v_emp_tbl emp_tbl_type := emp_tbl_type();
3 begin
4 dbms_output.put_line('Nested table v_emp_tbl has ' || v_emp_tbl.count || ' element(s).');
5 end;
6 /
Nested table v_emp_tbl has 0 element(s).
PL/SQL procedure successfully completed.
SQL> NULL aplies to nested table element, not to nested table itself:
SQL> declare
2 v_emp_tbl emp_tbl_type := emp_tbl_type();
3 begin
4 v_emp_tbl.extend;
5 if v_emp_tbl(1) is null
6 then
7 dbms_output.put_line('Nested table v_emp_tbl first element is NULL.');
8 end if;
9 end;
10 /
Nested table v_emp_tbl first element is NULL.
PL/SQL procedure successfully completed.
SQL> SY. -
How to create APEX report from data in PLSQL table
Hi, I have a procedure that is creating/inserting records into multidimensional pslql table. I want to create a report and graph based on the data stored in plsql table. Can someone please advice how to can I select this data in apex OR point me to any sample code?
Thanks
AaliHi,
try to google something about ORACLE TABLE CAST
SELECT ot.yourcolumn
FROM
TABLE(CAST(yourplsqltablevariable AS userdefinedoracletype)) otE.g.
http://it.toolbox.com/blogs/oracle-guide/using-a-plsql-table-in-sql-11013
Regards,
R. -
Get distinct values from plsql array
Hi,
I have declared a variable as below in plsql proc.
type t_itemid is table of varchar2(10);
inserted set of items in to this using a program
now i want distinct values from that array how can i get it.I am using 9i so i cannot use set operator and more over my problem is that i am declaring the variable inside the plsql block . when i tried i am getting the below errors:
SQL> r
1 declare
2 type t_type is table of varchar2(10);
3 v_type t_type;
4 begin
5 v_type := t_type('toys','story','good','good','toys','story','dupe','dupe');
6 for i in (select column_value from table(v_type)) loop
7 dbms_output.put_line(i.column_value);
8 end loop;
9* end;
for i in (select column_value from table(v_type)) loop
ERROR at line 6:
ORA-06550: line 6, column 41:
PLS-00642: local collection types not allowed in SQL statements
ORA-06550: line 6, column 35:
PL/SQL: ORA-22905: cannot access rows from a non-nested table item
ORA-06550: line 6, column 10:
PL/SQL: SQL Statement ignored
ORA-06550: line 7, column 22:
PLS-00364: loop index variable 'I' use is invalid
ORA-06550: line 7, column 1:
PL/SQL: Statement ignored -
Problem with XMLTABLE and LEFT OUTER JOIN
Hi all.
I have one problem with XMLTABLE and LEFT OUTER JOIN, in 11g it returns correct result but in 10g it doesn't, it is trated as INNER JOIN.
SELECT * FROM v$version;
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
"CORE 11.2.0.1.0 Production"
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
--test for 11g
CREATE TABLE XML_TEST(
ID NUMBER(2,0),
XML XMLTYPE
INSERT INTO XML_TEST
VALUES
1,
XMLTYPE
<msg>
<data>
<fields>
<id>g1</id>
<dat>data1</dat>
</fields>
</data>
</msg>
INSERT INTO XML_TEST
VALUES
2,
XMLTYPE
<msg>
<data>
<fields>
<id>g2</id>
<dat>data2</dat>
</fields>
</data>
</msg>
INSERT INTO XML_TEST
VALUES
3,
XMLTYPE
<msg>
<data>
<fields>
<id>g3</id>
<dat>data3</dat>
</fields>
<fields>
<id>g4</id>
<dat>data4</dat>
</fields>
<fields>
<dat>data5</dat>
</fields>
</data>
</msg>
SELECT
t.id,
x.dat,
y.seqno,
y.id_real
FROM
xml_test t,
XMLTABLE
'/msg/data/fields'
passing t.xml
columns
dat VARCHAR2(10) path 'dat',
id XMLTYPE path 'id'
)x LEFT OUTER JOIN
XMLTABLE
'id'
passing x.id
columns
seqno FOR ORDINALITY,
id_real VARCHAR2(30) PATH '.'
)y ON 1=1
ID DAT SEQNO ID_REAL
1 data1 1 g1
2 data2 1 g2
3 data3 1 g3
3 data4 1 g4
3 data5 Here's everything fine, now the problem:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi
PL/SQL Release 10.2.0.1.0 - Production
"CORE 10.2.0.1.0 Production"
TNS for HPUX: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
--exactly the same environment as 11g (tables and rows)
SELECT
t.id,
x.dat,
y.seqno,
y.id_real
FROM
xml_test t,
XMLTABLE
'/msg/data/fields'
passing t.xml
columns
dat VARCHAR2(10) path 'dat',
id XMLTYPE path 'id'
)x LEFT OUTER JOIN
XMLTABLE
'id'
passing x.id
columns
seqno FOR ORDINALITY,
id_real VARCHAR2(30) PATH '.'
)y ON 1=1
ID DAT SEQNO ID_REAL
1 data1 1 g1
2 data2 1 g2
3 data3 1 g3
3 data4 1 g4As you can see in 10g I don't have the last row, it seems that Oracle 10g doesn't recognize the LEFT OUTER JOIN.
Is this a bug?, Metalink says that sometimes we can have an ORA-0600 but in this case there is no error returned, just incorrect results.
Please help.
Regards.Hi A_Non.
Thanks a lot, I tried with this:
SELECT
t.id,
x.dat,
y.seqno,
y.id_real
FROM
xml_test t,
XMLTABLE
'/msg/data/fields'
passing t.xml
columns
dat VARCHAR2(10) path 'dat',
id XMLTYPE path 'id'
)x,
XMLTABLE
'id'
passing x.id
columns
seqno FOR ORDINALITY,
id_real VARCHAR2(30) PATH '.'
)(+) y ;And is giving me the complete output.
Thanks again.
Regards. -
Problem with CLOB in PLSQL Web Service.
Hi-
I have Oracle Package that accepts CLOB as IN parameter and another CLOB as an OUT parameter. I went thru the tutorial in how to publish a database
PLSQL package as a web service with out any problem. I was able to publish and call successfully my PLSQL web service thru a browser and thru a simple C# application. It's been working fine until I receive an XML file which is bigger than 32766:
java.sql.SQLException: setString can only process strings of less than 32766 chararacters at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:137)]
JDeveloper version: JDeveloper 10g (10.1.2.2.0) Build 1929
Oracle Application Server 10g
I'm newbie in JDeveloper so any help is greatly appreciated.
Thanks!well Shay,
i've used JDev's tools to developer and to deploy the web service: the war and ear files are automatically generates you to the end of the process.
I have included all the files java and the compiled classes, but I do not have files jar.
But don't works: if i create only one java class with all code inside then it works fine!!
Daniele -
hi guru's.
i have a doubt in plsql performnace, i have been using many GTT in my project now, i feel to remove all GTT's intead of i plan to introduce collections.
is it really improve the performance, i am thinking to avoid the context-switch?Memory usage depends mainly on WHAT is processed, and partly by WHICH means it is processed.
So if you process a lot of data, it possible to lead nearly every report to dump.
Your information is much to poor to say more.
Siegfried
Maybe you are looking for
-
Need sample data on AP PO Match
Hi Can some one help on providing sample on AP PO Match A/P PO Match - an A/P invoice matching transaction for which there is a receipt on the correct purchase order but against a different purchase order line.This accrual transaction tells you that
-
Fetch out of Sequence after upgrade oracle 11
Hi, Since we are updating our customers from oracle 8,9 or 10 to oracle 11, we get the error ORA-01002 'fetch out of sequence' alot. There is nothing changed in the database structure or our programming and it occurs on different tables. The only thi
-
N95 and image gallery sorting by filename, not by ...
Hello! In N95, the default sorting of images (and photos) is by date-time. This is stupid and useless, because: - I edit some of my taken photos, so they have different datetime stamps than originals - I always manualy define the order of photos by p
-
Questions Regarding Latest 1.0.2 update
I can't find any info on this update, so can anyone tell me what this latest update is about?
-
Adobe InDesign CS3 ME HEBREW HELP
Hi everyone, I recently got the Middle Eastern edition of InDesign CS3. My problem is, while all English related things work fine, I can't seem to access the Hebrew fonts. Even when I click on "Hebrew" the words stay English. What do I do?