UPDATE COLUMNS USING MAPPINGS
I have to migrate data from one table to another where one of the columns is the same in both tables. e.g. ID COLUMN
Is there a way to migrate data such that I can update all rows in the ID column in table 2 with corresponding values from ID column in table 1 using one update statement?
i.e.
TABLE 1 || TABLE 2
ID || ID
2 || 5
5 || 9
8 || 4
34 || 98
67 || 762
89 || 99
I want to use 1 update statement if possible to update all rows in ID column table 2 with values in ID column in table 1
Thanks
Edited by: 331991 on Feb 4, 2010 11:04 PM
Hi,
You can do this by using cursor.
At First you have to save the id mapping relationship in a temp table, for example MAPPING_TABLE.
Then you can do this as follow:
Declare
Cursor TO_UPDATE IS
SELECT NEW.ID MEW_ID, NEW.COL1, NEW COL2,...., MAP.OLD_ID
FROM NEW_TABLE NEW,
MAPPING_TABLE MAP
WHERE NEW.ID=MAP.NEW_ID
ORDER BY OLD_ID;
Begin
FOR REC IN TO_UPDATE LOOP
UPDATE OLD_TABLE
SET ID=REC.NEW_ID,COL1=REC.COL1, COL2=REC.COL2, ....
WHERE ID=REC.OLD_ID;
END LOOP;
COMMIT;
End; The better way, that you may let a column for control issue.
IF ATTRIBUTE1 is NULL for EACH ROW
Declare
Cursor TO_UPDATE IS
SELECT NEW.ID MEW_ID, NEW.COL1, NEW COL2,...., MAP.OLD_ID
FROM NEW_TABLE NEW,
MAPPING_TABLE MAP
WHERE NEW.ID=MAP.NEW_ID
ORDER BY OLD_ID;
Begin
FOR REC IN TO_UPDATE LOOP
UPDATE OLD_TABLE
SET ID=REC.NEW_ID,COL1=REC.COL1, COL2=REC.COL2, ...., ATTRIBUTE1 = REC.OLD_ID
WHERE ID=REC.OLD_ID
AND ATTRIBUTE1 IS NULL;
END LOOP;
COMMIT;
End; Best regards,
Zhxiang
Edited by: zhxiangxie on Feb 5, 2010 12:19 PM
Similar Messages
-
Update column using a calculation based on a query
Hi,
I need to update an empty column I have created in my table. I have created a query that returns the variables I will need in the calculation but I'm not sure how to link it.
This query works fine.
Select z.seq_no
, z.Day_X
, z.Day_Y
, x.Night_X
, x.Night_Y
from
(select seq_no, ga.centre_x Day_X, ga.centre_y Day_Y
from MICHAELC_Nov_01_final ff, rbn_gis_area ga
where ff.day_addr_code = ga.sp_code) z
,(select seq_no, ga.centre_x Night_X, ga.centre_y Night_Y
from MICHAELC_Nov_01_final ff, rbn_gis_area ga
where ff.risk_addr_code = ga.sp_code) x
where z.seq_no = x.seq_noWhat I require is my column called Distance_to_work to be calculated as follows:
Distance_to_work = (100 * sqrt (power ( (Day_X - Night_X), 2) + power ( (Day_Y - Night_Y), 2)))This is what I have tried to no avail:
UPDATE MICHAELC_Nov_01_final ff
SET
Distance_to_work = (select (100 * sqrt (power ( (Day_X - Night_X), 2) + power ( (Day_Y - Night_Y), 2))))
from
(Select z.seq_no
, z.Day_X
, z.Day_Y
, x.Night_X
, x.Night_Y
from
(select seq_no, ga.centre_x Day_X, ga.centre_y Day_Y
from MICHAELC_Nov_01_final ff, rbn_gis_area ga
where ff.day_addr_code = ga.sp_code) z
,(select seq_no, ga.centre_x Night_X, ga.centre_y Night_Y
from MICHAELC_Nov_01_final ff, rbn_gis_area ga
where ff.risk_addr_code = ga.sp_code) x
where z.seq_no = x.seq_no) w
where ff.sp_code = w.sp_codeAny assistance would be appreciated.
Banner:
Oracle Database 11g Release 11.2.0.2.0 - 64bit Production
PL/SQL Release 11.2.0.2.0 - Production
"CORE 11.2.0.2.0 Production"
TNS for Linux: Version 11.2.0.2.0 - Production
NLSRTL Version 11.2.0.2.0 - ProductionHi,
885178 wrote:
... with Temp_table
as
select 77317027 sp_code, 28.137 x_day, 28.244 x_night, -26.179 y_day, -26.092 y_night, 13.7905 distance_to_work from dual
union all
select 57218000 sp_code, 30.897 x_day, 30.851 x_night, -30.022 y_day, -29.884 y_night, 14.54647 distance_to_work from dual
union all
select 70406009 sp_code, 28.131 x_day, 28.192 x_night, -26.316 y_day, -25.837 y_night, 48.28685 distance_to_work from dual
select *
from Temp_table
What is temp_table? What role does it play in this problem?
with michaelc_nov_01_final2
as
select 77317027 sp_code, 77317029 risk_addr_code, 77303000 day_addr_code, 1274799 seq_no, 13.7905 distance_to_work from dual
union all
select 57218000 sp_code, 57271032 risk_addr_code, 57218000 day_addr_code, 1624223 seq_no, 14.54647 distance_to_work from dual
union all
select 70406009 sp_code, 77603008 risk_addr_code, 77301006 day_addr_code, 2240402 seq_no, 48.28685 distance_to_work from dual
select *
from michaelc_nov_01_final2What is micahealc_nov_01_final2? Do you want micahealc_nov_01_final to be changed so that it is just like micahealc_nov_01_final2? Can't you just post the results you want, like this:
` SP_CODE RISK_ADDR_CODE DAY_ADDR_CODE SEQ_NO DISTANCE_TO_WORK
77317027 77317029 77303000 1274799 13.7905765
57218000 57271032 57218000 1624223 14.5464772
70406009 77603008 77301006 2240402 48.2868512?
The data above is what michaelc_nov_01_final looks like after running the MERGE statement below. Distance_to_work isn't exactly what it is in michaelc_nov_01_finalw, but it looks like you're just rounding differently.
The rbn_gis_area is versioned. There is a column called version and the latest version = 10. This will bring back unique rows. There's no version column in the code above.
with rbn_gis_area
as
select 77303000 sp_code, 28.137 centre_x, -26.179 centre_y from dual
union all ...
Also note that an sp_code can be day_addr_code as seen in the above example. Seq no. is not unique. There is a column in michaelc_nov_01_final called cla_case which is unique.There's no cla_case column in the code above.
with michaelc_nov_01_final
as
select 77317027 sp_code, 77317029 risk_addr_code, 77303000 day_addr_code, 1274799 seq_no, '' distance_to_work from dual
union all ...The following assumes that seq_no is unique:
MERGE INTO michaelc_nov_01_final dst
USING (
SELECT ff.seq_no
, MIN (d.centre_x) AS day_x
, MIN (d.centre_y) AS day_y
, MIN (n.centre_x) AS night_x
, MIN (n.centre_y) AS night_y
FROM michaelc_nov_01_final ff
JOIN rbn_gis_area d ON ff.day_addr_code = d.sp_code
JOIN rbn_gis_area n ON ff.risk_addr_code = n.sp_code
GROUP BY ff.seq_no
) src
ON (src.seq_no = dst.seq_no)
WHEN MATCHED THEN
UPDATE SET dst.distance_to_work = 100 * SQRT ( POWER (src.day_x - src.night_x, 2)
+ POWER (src.day_y - src.night_y, 2)
;If cla_case unique in your real table, then use cla_case instead of seq_no above.
I used GROUP BY TO get (at most) one row in src for every row in dst. If you have a version column, you can use that instead or GROUP BY, just make sure that each row in src matches (at most) one row in dst. -
Hi,
We have a requirement to update a column value once the item has been approved.
Following settings have been made in the publishing articles list:
Require content approval for submitted items : yes
Create major and minor (draft) versions
Who should see draft items in this document library? :Only users who can edit items
Require documents to be checked out before they can be edited? : yes
I have createdatu a Sharepoint 2013 workflow to check if Approval sts of current item = 0 i.e. Approved , then check out and update the item and finally checkin the item. Everything works fine till this point except that the minor version of the item is
checked in. Due to this the updated columns are not published to others.
Also, I created a Sharepoint 2010 workflow to SET CONTENT APPROVAL = APPROVED and started this workflow from my list workflow above, but the item does not get checked-in and always shows "In Progress" status with comment "The item is currently
locked for editing. Waiting for item to be checked in or for the lock to be released.".
Please let me know where I am missing out so that once the item is approved, column value gets updated and current item is still in Approved status.
ThanksHi,
According to your post, my understanding is that you want to update Column value after current item is Approved and then publish major version using Sharepoint 2013 designer workflow.
You will get into this kind of Catch-22 situation trying to set the Content Approval Status in SharePoint Designer workflow:
- You must check out the document before you can change the Content Approval Status
- You can't change the Content Approval Status once the document in checked out
Since you set the Require documents to be checked out before they can be edited=Yes, you will need to check out the document when run the workflow on the item. But you cannot approve a document when it is checked
out. So the logic in workflow conflicts.
As a workaround, you can use the Start Another Workflow action to start the normal Approval workflow on the document. The built-in Approval workflow can work with a document that’s not checked out.
The designer approval workflow also can work with a document that’s not checked out.
You can create two workflow using SharePoint Designer 2013.
First, create a SharePoint 2010 platform workflow.
Then, create a SharePoint 2013 platform workflow.
Then when the SharePoint 2013 platform workflow start, it will start the SharePoint 2010 platform workflow to set content approval status, then the SharePoint 2013 platform workflow will update current item value.
More information:
SharePoint Designer Workflow Content Approval Issue
SharePoint 2010 Approval Workflow with Content Approval
Best Regards,
Linda Li
Linda Li
TechNet Community Support -
Update some columns using case....
Hi ,
Is it possible to update some columns using case statement...????
For example when col1 is null then update to a value 'x' else update it to the value '*' , when col2 is null then update to a value y else update it to compute the running total up to that time....
This update statement is contained in db packaged procedure and it receives the values...as parameters....
How can i write down this update statement...?????
Many thanks,
SimonHi ,
Cant' it be used for two or more columns that have to be updated....????
i mean
update table set col_a = case when col_a is null then col_a else '*',
col_b = case when col_b is null then col_b else col_b+col_b_var
end
where .....The above in bold is running total.... This update is defined in a procedure and it receives numbers as parameters, so the need is to add them for every record it receives...., that's why i set above col_b+col_b_var... where col_b_var is the parameter of the procedure....
SORRY...IT IS POSSIBLE.....
Thanks , a lot
Simon
Message was edited by:
sgalaxy -
Using cursor to update column, is this inefficient or illegal?
I have declared a cursor as follows in a PL/SQL procedure:
cursor C is SELECT a FROM t
FOR UPDATE;
Later on in the procedure, I've written the following:
update t
set b = 'text'
where current of C;
My question is, am I allowed to do this when the column I am updating is not the one which I have selected in the cursor? If this is indeed legal, are there any performance issues involved?
Thanks,
PeterPeter,
As it is confirmed by our folks that it is LEGAL to update columns that are not
fetched in the CURSOR, I am just going to talk about other things.
CURSOR is a read only resultset in PL/SQL which just gives you a handle to each of the rows that you are fetching from one or more table(s), based on the columns that you select in CURSOR. It is advised that you select the ID columns of the table(s) like PK if available from those tables so that you would not run into updating rows more than what is actually required. If we are not fetching the rows based on UNIQUE value and we use these values in UPDATE statements inside, we may get into trouble. Alternative and proves very good with performance is ROWID. I have used ROWID in CURSOR fetches and it works great.DECLARE
CURSOR empCur IS
SELECT ROWID unique_col, ename, job, sal FROM EMP
WHERE sal > 1000;
BEGIN
FOR empRec IN empCUR
LOOP
UPDATE emp SET job = 'Tech Lead'
WHERE ROWID = empRec.unique_col;
END LOOP;
END;Andrew,
Just curious, could you educate me on MVP status from Brainbech?
Thx,
SriDHAR -
How to update a column using hibernate
how to update a particular column using hibernate..
iam using oracle databaseI think you didn't get the point. This is a generic Java forum... not a Hibernate forum.
-
Mass Update Column In Tabular Form
Hi,
I'm trying to create a tabular form that has a mass update column function. i.e. the tabular form will be displayed as normal but at the top of certain columns will be a text box or lov and what ever is entered into those boxes will be cascaded into the empty values in that column without refreshing the page.
Hope that makes sense.
I've search the forum but cant find reference, is this possible.
Thanks AndyHi,
Just wondering if anyone had any thoughts on this.
I can get the text to populate another cell e.g.
http://mlw-mis-2/dev/apex/f?p=174:4
But how can i get it to reference a column, this is what I'm using to reference another item
onKeyUp="f_getTextUpper('P4_COL1','P4_TEXT')"
and I've tried changing the P4_TEXT to other things like
apex_application.g_f03 (vRow)
apex_application.g_f03 (i)
apex_application.g_f03
But with no luck -
Loading complex report data into a direct update DSO using APD
Dear All,
Recently, I had a requirement to download the report data into a direct update DSO using an APD. I was able to perform this easily when the report was simple i.e it has few rows and columns. But I faced problems If the report is a complex one. Summing up, I would like to know how to handle the scenarios in each of the following cases:
1. How should I decide the key fields and data fields of the direct update DSO ? Is it that the elements in ROWS will go to the
key fields of DSO and the remaining to the data fields? Correct me.
2. What if the report contains the Restricted KFs and Calculated KFs? Do I have to create separate infoobjects in the BI
system and then include these in the DSO data fields to accommodate the extracted data ?
3. How do I handle the Free Characteristics and Filters ?
4. Moreover, I observed that if the report contains selection screen variables, then I need to create variants in the report and
use that variant in the APD. So, if I have 10 sets of users executing the same report with different selection conditions, then
shall I need to create 10 different variants and pass those into 10 different APDs, all created for the same report ?
I would appreciate if someone can answer my questions clearly.
Regards,
D. Srinivas RaoHi ,
PFB the answers.
1. How should I decide the key fields and data fields of the direct update DSO ? Is it that the elements in ROWS will go to the
key fields of DSO and the remaining to the data fields? Correct me.
--- Yes , you can use the elements in the ROWS in the Key fields, but in case you get two records with same value in the ROWS element the data load will fail. So you basically need to have one value that would be different for each record.
2. What if the report contains the Restricted KFs and Calculated KFs? Do I have to create separate infoobjects in the BI
system and then include these in the DSO data fields to accommodate the extracted data ?
Yes you would need to create new Infoobjects for the CKF's and RKF's in the Report and include them in your DSO.
3. How do I handle the Free Characteristics and Filters ?
The default filters work in the same way as when you yourself execute the reoprt. But you cannot use the Free characterisitics in the APD. only the ROWS and cloumns element which are in default layout can be used.
4. Moreover, I observed that if the report contains selection screen variables, then I need to create variants in the report and
use that variant in the APD. So, if I have 10 sets of users executing the same report with different selection conditions, then
shall I need to create 10 different variants and pass those into 10 different APDs, all created for the same report ?
--- Yes you would need to create 10 different APD's. Its very simple to create, you can copy an APD. but it would be for sure a maintance issue. you would have to maintain 10 APD's.
Please revert in case of any further queries. -
Sharepoint 2013 web service to update column content
I have a folder in a sharepoint list. Folder have columns ie Title, modified by, modified date, details. I am trying to update details column content with csharp code for that folder. I am trying to find sharepoint service method to update a column content
for a list item.
Added my sp site service ex: http://mysite/_vti_bin/Lists.asmx as reference
I included service reference in my project and create object.
I am referrring the below service to check if I can use any method from it but unable to find it. Do we have any method to
https://msdn.microsoft.com/en-us/library/ms774680(v=office.12).aspx
SriHi Sri,
Per my understanding, you might want to update item using Lists Web Service.
In Lists.asmx, the methods available are as below:
https://msdn.microsoft.com/en-us/library/lists.lists_members(v=office.12).aspx
I suggest you follow the documentation below about updating list item using Lists Web Service for a try in your environment:
https://msdn.microsoft.com/en-us/library/office/ms440289(v=office.14).aspx
Thanks
Patrick Liang
TechNet Community Support
Please remember to mark the replies as answers if they help, and unmark the answers if they provide no help. If you have feedback for TechNet Support, contact
[email protected] -
Get OLD&NEW value of an UPDATED column selected dynamically in a Trigger
Hi All,
I am writting a trigger which take column name dynamically. And on the basis of that column it should give me old value as well as updated value of a column corresponding to a modified row.
OOO_SCHEDULE is my table name;
Note: This is only for test so I am writting only for update not for insert and delete.
create or replace trigger "OOO_SCHEDULE_AUDIT"
BEFORE
insert or update or delete on "OOO_SCHEDULE"
for each row
begin
DECLARE
v_username varchar2(30);
AUDIT_EMP_ID varchar2(30);
AUDIT_EMP_ID_NEW varchar2(30);
v_Column_name VARCHAR(30);
v_stmt1 VARCHAR(40);
v_stmt2 VARCHAR(40);
CURSOR C1 is
select COLUMN_NAME from user_tab_columns where table_name='OOO_SCHEDULE';
BEGIN
OPEN c1;
LOOP
FETCH c1 into v_Column_name;
EXIT WHEN c1%NOTFOUND;
v_stmt1:=('OLD.'||v_Column_name);
v_stmt2:=('NEW.'||v_Column_name);
AUDIT_EMP_ID:=v_stmt1;
AUDIT_EMP_ID_NEW:=v_stmt2;
INSERT INTO TEMPTEST VALUES(v_stmt1);
INSERT INTO TEMPTEST VALUES(AUDIT_EMP_ID);
END LOOP;
CLOSE c1;
END;
end;
Suppose OOO_EMP_NAME is the column name where user made the change.
If i do like this..
AUDIT_EMP_ID:=OLD.OOO_EMP_NAME;
AUDIT_EMP_ID_NEW:=NEW.OOO_EMP_NAME;
Then it is working fine because I have given column name statically. But I want the column name to be selected dynamically and I am able to do it through cursor. Also I am able to fetch all column names in v_Column_name variable one by one dyanamically for the cursor.
But by executing these statements
AUDIT_EMP_ID:=v_stmt1;
AUDIT_EMP_ID_NEW:=v_stmt2;
I am getting OLD.OOO_EMP_NAME and NEW.OOO_EMP_NAME rather then old and new values of the updated column.
Please help me identifying the problem, where I am doing the mistake? What is the correct way to execute these statements? So that I can get old and new values of the column (updated column).
I have tried it by passing in a procedure also but don't know how to execute this dynamic statement to get the old and new values.
Thanks,
Ishrat.In the given link, column name has been selected statically. But i want that column name should be selected daynamically throgh loop and then check the
condition for any update corresponding to that column value. I don't want to write as many if condition as the no. of column name. I just want one if condition for all column namesDon't be lazy. Write all column names into your trigger. Or use a way to create the trigger "dynamically".
What is the problem that you have with static column names? "I don't want to write many..." is not a problem, but an opinion. -
How to insert a blank value in not nul column using transform activity
can anyone help me on how to insert blank values in a not null column using transform activity or however possible..This is a requirement in my project ..
vidya
In DB adapter or-mappings.xml , did you made any changes. If not the open that file in any notepad editor and change the following
<attribute-mapping xsi:type="direct-mapping">
<attribute-name>director</attribute-name>
<field table="MYTABLE" name="MAKE_IT_BLANK_NOT_NULL" xsi:type="column"/>
<attribute-classification>java.lang.String</attribute-classification>
</attribute-mapping>You can try to add this:
<attribute-mapping xsi:type="direct-mapping">
<attribute-name>director</attribute-name>
<field table="MYTABLE" name="MAKE_IT_BLANK_NOT_NULL" xsi:type="column"/>
<null-value></null-value>
<attribute-classification>java.lang.String</attribute-classification>
</attribute-mapping>Refer below link for details
Re: Insertion of Blank value to a Not Null varchar column in SQL server table
Thanks
AJ -
How to add a new record in updatable report using apex_item
Hi,
i am using an updatable report using the following select
select
aPEX_ITEM.POPUP_FROM_QUERY(2,emp_code,
' SELECT emp_surname, emp_code FROM hrm_employee ' ,null,null,null,null,null,'onchange="f_set_multi_items_tabular(this.value ''#ROWNUM#'''
|| ')"',null,null,null) PF_No,
apex_item.text (32,
NULL,
80,
100,
'style="width:190px" ',
'f11_' || '#ROWNUM#'
) Name,
" REST_DATE",
"REMARKS",
from "roster"
when i click on the button add row , only the column rest_date and the remarks are enable.
why is the apex_item.text and apex_item_popup_from_query is disable ? and how i can make it enable.
thanks
regards
jerryI could see that you are using the addRow() function to generate new blank row.
I guess, this function(used by the builtin tabular form s) , identifies editable columns when they are marked so at the report column attributes.
When you use apex_item API, it expects the columns to be standard report column and hence render the new rows as such.
Some one from the development team might be able to give a better answer on that.
As for avoiding this issue
<li>One method , would be to define the columns editable(and display types) in report column attributes.
<li> You can duplicate the last row using jQuery( *$('tr.highlight-row:last).after( $('tr.highlight-row:last).clone() )* ) and removing the field values, but events(for example datepicker) would remain attached to the original row , so it isn't very straightforward either.
<li>If you want to use apex_item you would have to use a pseudo union to DUAL for generating a blank row and re-render the report either by a page load or a Dynamic Action. Sounds like a nice idea for a plugin.
Now , if you want to add rows multiple times without saving them, then you would need to store the values in a collection at load and update the collection before adding the row. -
Error inserting a row into a table with identity column using cfgrid on change
I got an error on trying to insert a row into a table with identity column using cfgrid on change see below
also i would like to use cfstoreproc instead of cfquery but which argument i need to pass and how to use it usually i use stored procedure
update table (xxx,xxx,xxx)
values (uu,uuu,uu)
My component
<!--- Edit a Media Type --->
<cffunction name="cfn_MediaType_Update" access="remote">
<cfargument name="gridaction" type="string" required="yes">
<cfargument name="gridrow" type="struct" required="yes">
<cfargument name="gridchanged" type="struct" required="yes">
<!--- Local variables --->
<cfset var colname="">
<cfset var value="">
<!--- Process gridaction --->
<cfswitch expression="#ARGUMENTS.gridaction#">
<!--- Process updates --->
<cfcase value="U">
<!--- Get column name and value --->
<cfset colname=StructKeyList(ARGUMENTS.gridchanged)>
<cfset value=ARGUMENTS.gridchanged[colname]>
<!--- Perform actual update --->
<cfquery datasource="#application.dsn#">
UPDATE SP.MediaType
SET #colname# = '#value#'
WHERE MediaTypeID = #ARGUMENTS.gridrow.MediaTypeID#
</cfquery>
</cfcase>
<!--- Process deletes --->
<cfcase value="D">
<!--- Perform actual delete --->
<cfquery datasource="#application.dsn#">
update SP.MediaType
set Deleted=1
WHERE MediaTypeID = #ARGUMENTS.gridrow.MediaTypeID#
</cfquery>
</cfcase>
<cfcase value="I">
<!--- Get column name and value --->
<cfset colname=StructKeyList(ARGUMENTS.gridchanged)>
<cfset value=ARGUMENTS.gridchanged[colname]>
<!--- Perform actual update --->
<cfquery datasource="#application.dsn#">
insert into SP.MediaType (#colname#)
Values ('#value#')
</cfquery>
</cfcase>
</cfswitch>
</cffunction>
my table
mediatype:
mediatypeid primary key,identity
mediatypename
my code is
<cfform method="post" name="GridExampleForm">
<cfgrid format="html" name="grid_Tables2" pagesize="3" selectmode="edit" width="800px"
delete="yes"
insert="yes"
bind="cfc:sp3.testing.MediaType.cfn_MediaType_All
({cfgridpage},{cfgridpagesize},{cfgridsortcolumn},{cfgridsortdirection})"
onchange="cfc:sp3.testing.MediaType.cfn_MediaType_Update({cfgridaction},
{cfgridrow},
{cfgridchanged})">
<cfgridcolumn name="MediaTypeID" header="ID" display="no"/>
<cfgridcolumn name="MediaTypeName" header="Media Type" />
</cfgrid>
</cfform>
on insert I get the following error message ajax logging error message
http: Error invoking xxxxxxx/MediaType.cfc : Element '' is undefined in a CFML structure referenced as part of an expression.
{"gridaction":"I","gridrow":{"MEDIATYPEID":"","MEDIATYPENAME":"uuuuuu","CFGRIDROWINDEX":4} ,"gridchanged":{}}
ThanksIs this with the Travel database or another database?
If it's another database then make sure your columns
allow nulls. To check this in the Server Navigator, expand
your DataSource down to the column.
Select the column and view the Is Nullable property
in the Property Sheet
If still no luck, check out a tutorial, like Performing Inserts, ...
http://developers.sun.com/prodtech/javatools/jscreator/learning/tutorials/index.jsp
John -
Int Server (ABAP Cache) - Cache Updated column shows "red"
...long read, appreciate your patience...
In the IB:Config, under Cache Notifications, I'm getting the red square in the Cache Updated column for all "ABAP Cache" entries (green for notification). The "Java Cache" and "Central Adapter Engine" entries are green all the way through.
I've read a bunch of other threads here, and I've read and worked through the entire "How to Handle Caches" document. I ran in to a couple issues, but I don't know how to solve them.....
1) When I run SXI_CACHE, I receive the following messages:
<green> "Cache contents are up to date"
<red> "Error during last attempt to refresh cache"
--->double-clicking shows: Error ID = BUSINESS_SYSTEM, Message = LCR_GET_OWN_BUSINESS_SYSTEM - NO_BUSINESS_SYSTEM
--->Running the LCR... fxn via SE37 is successful, so I don't understand why SXI_CACHE has a problem running it.
2) When I run the Cache Connectivity Test where the Yellow triangle is displayed for the IS-ABAP with message "Attempt to fetch cache data from Integration Directory not yet started or still in progress".
3) When I try to load http://<host>:<port>/CPACache/refresh?mode=delta or full, I get a "403 Forbidden - You are not authorized to view the requested resource." But I'm never prompted for a user/pw? Since I'm the only user in this XI box, I do have some of my logons saved in Internet Explorer - could it be using one of those without prompting me?
Note:
I have been experiencing on and off network issues, and the machine we have XI installed on is slow. I don't know if that could affect anything or not.
Thanks for taking the time to read this...
Brian
Message was edited by: Brian VanderwielThanks for the replies...
Prashanth,
I think SXI_CACHE is for items in the Java stack only (correct me if I'm wrong). The main problem I have is with items in the ABAP stack not making it in to the cache.
Moorthy,
I walked through the Readiness Check - everything passed except for the items I already mentioned (Cache test shows yellow). The document is a nice gathering of tests, but it doesn't offer any ideas has to how to correct problems encountered.
Integration_directory_hmi tested successfully, and I read through the other OSS Notes, but none solved the issue. -
We have an update query recently brought to my attention that is running extremely slow on Oracle 11.2.0.1 against a secure file binary XML table using
update /*+ NO_XML_DML_REWRITE */croutreach.action set object_value = :1 where actn_id = :2 .
I am told the majority/near majority of the ~ 16 fields are updated. Also this table has numerous predefined virtual columns with fn based indexes on them.
My first inclination was to recast this using the Oracle updatexml function. I was told, the /*+ NO_XML_DML_REWRITE */ hint would also be necessary here.
update /*+ NO_XML_DML_REWRITE */
<tble_name> a
set a.object_value = updatexml(a.object_value ...).
Last year our dba's were instructed by Oracle Support to use this hint, as the update wasn't updating any records w.o any error msgs.
+1. Hoping to find out if anyone has run across using this hint in some capacity and what was their experience?+
In trying to optimizie this update statement, I'll start from scratch not using the /*+ NO_XML_DML_REWRITE */ hint and will commence with using the updatexml function with setting up an xmlindex.
+2. Hoping to receive some suggestions on creating the proper xmlindex - figuring an unstructured index. If get some good performance with the xmlindex; hoping to retire some of the virtual column usage.+
+3. Any suggestions on living with virtual columns in conjunction with xmlindexes? See the action table definition and associated ivirtual columns and indexes. This table seems over indexed...+
REATE
TABLE "CROUTREACH"."ACTION" OF XMLTYPE
CONSTRAINT "ACTN_ID_PK" PRIMARY KEY ("ACTN_ID") USING INDEX PCTFREE 10
INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT
1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1
FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE
DEFAULT) TABLESPACE "ACME_DATA" ENABLE
XMLTYPE STORE AS SECUREFILE BINARY XML
TABLESPACE "ACME_DATA" ENABLE STORAGE IN ROW CHUNK 8192 CACHE READS LOGGING
NOCOMPRESS KEEP_DUPLICATES STORAGE(INITIAL 106496 NEXT 1048576 MINEXTENTS 1
MAXEXTENTS 2147483645 PCTINCREASE 0 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT)
ALLOW NONSCHEMA ALLOW ANYSCHEMA VIRTUAL COLUMNS
*"ACTION_DEF_URN"* AS (CAST(SYS_XQ_UPKXML2SQL(SYS_XQEXVAL(XMLQUERY(
'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03"; (::)
/action/srvContextPointer/outreachActionDefInfo/@actionDefUrn
PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
16777216,0),50,1,2) AS VARCHAR2(50))),
*"STAT_DT"* AS (SYS_EXTRACT_UTC(CAST(TO_TIMESTAMP_TZ(SYS_XQ_UPKXML2SQL(
SYS_XQEXVAL(XMLQUERY(
'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03"; (::)
/action/@status_dt'
PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
16777216,0),50,1,2),'SYYYY-MM-DD"T"HH24:MI:SS.FFTZH:TZM') AS TIMESTAMP
WITH
TIME ZONE))),
*"ACT_DEF_ID"* AS (CAST(SYS_XQ_UPKXML2SQL(SYS_XQEXVAL(XMLQUERY(
'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03"; (::)
/action/srvContextPointer/outreachActionDefInfo/@actionDefId'
PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
16777216,0),50,1,2) AS VARCHAR2(20))),
*"CORRL_ID"* AS (CAST(SYS_XQ_UPKXML2SQL(SYS_XQEXVAL(XMLQUERY(
'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03"; (::)
/action/correlationId'
PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
16777216,0),50,1,2) AS VARCHAR2(50))),
*"STAT_RSN"* AS (CAST(SYS_XQ_UPKXML2SQL(SYS_XQEXVAL(XMLQUERY(
'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03"; (::)
/action/statusReason'
PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
16777216,0),50,1,2) AS VARCHAR2(30))),
*"ACT_APPNT_DT"* AS (SYS_EXTRACT_UTC(CAST(TO_TIMESTAMP_TZ(SYS_XQ_UPKXML2SQL(
SYS_XQEXVAL(XMLQUERY(
'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03"; (::)
/action/actionAppointment/appointment_dt'
PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
16777216,0),50,1,2),'SYYYY-MM-DD"T"HH24:MI:SS.FFTZH:TZM') AS TIMESTAMP
WITH
TIME ZONE))),
*"UPDT_DT"* AS (SYS_EXTRACT_UTC(CAST(TO_TIMESTAMP_TZ(SYS_XQ_UPKXML2SQL(
SYS_XQEXVAL(XMLQUERY(
'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03"; (::)
/action/@update_dt'
PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
16777216,0),50,1,2),'SYYYY-MM-DD"T"HH24:MI:SS.FFTZH:TZM') AS TIMESTAMP
WITH
TIME ZONE))),
*"CRET_DT"* AS (SYS_EXTRACT_UTC(CAST(TO_TIMESTAMP_TZ(SYS_XQ_UPKXML2SQL(
SYS_XQEXVAL(XMLQUERY(
'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03"; (::)
/action/@create_dt'
PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
16777216,0),50,1,2),'SYYYY-MM-DD"T"HH24:MI:SS.FFTZH:TZM') AS TIMESTAMP
WITH
TIME ZONE))),
*"ACT_SEQ"* AS (CAST(TO_NUMBER(SYS_XQ_UPKXML2SQL(SYS_XQEXVAL(XMLQUERY(
'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03"; (::)
/action/srvContextPointer/outreachActionDefInfo/@sequence'
PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
16777216,0),50,1,2)) AS NUMBER(10))),
*"SERVICE_DEF_URN"* AS (CAST(SYS_XQ_UPKXML2SQL(SYS_XQEXVAL(XMLQUERY(
'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03";
/action/srvContextPointer/serviceDefUrn'
PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
16777216,0),50,1,2) AS VARCHAR2(100))),
*"ASSIGN_TEAM_CD"* AS (CAST(SYS_XQ_UPKXML2SQL(SYS_XQEXVAL(XMLQUERY(
'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03"; (::)
/action/assignment/@teamCategoryCode'
PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
16777216,0),50,1,2) AS VARCHAR2(50))),
*"ASSIGN_STAFF_ID"* AS (CAST(SYS_XQ_UPKXML2SQL(SYS_XQEXVAL(XMLQUERY(
'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03"; (::)
/action/assignment/staffProfileId'
PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
16777216,0),50,1,2) AS VARCHAR2(50))),
*"ACTION_TYPE"* AS (CAST(SYS_XQ_UPKXML2SQL(SYS_XQEXVAL(XMLQUERY(
'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03"; (::)
declare namespace xsi="http://www.w3.org/2001/XMLSchema-instance"; (::)
local-name-from-QName(QName("http://www.cigna.com/acme/domains/actions/2010/03",/action/@xsi:type))
PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
16777216,0),50,1,2) AS VARCHAR2(50))),
*"ACTN_ID"* AS (CAST(SYS_XQ_UPKXML2SQL(SYS_XQEXVAL(XMLQUERY(
'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03";/action/@id'
PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
16777216,0),50,1,2) AS VARCHAR2(50))),
*"STATUS"*AS (CAST(SYS_XQ_UPKXML2SQL(SYS_XQEXVAL(XMLQUERY(
'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03";/action/@status'
PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
16777216,0),50,1,2) AS VARCHAR2(20))),
*"ACME_MBR_ID"* AS (CAST(SYS_XQ_UPKXML2SQL(SYS_XQEXVAL(XMLQUERY(
'declare default element namespace "http://www.cigna.com/acme/domains/actions/2010/03";/action/acmeMemberId'
PASSING BY VALUE SYS_MAKEXML(128,"XMLDATA") RETURNING CONTENT ),0,0,
16777216,0),50,1,2) AS VARCHAR2(50)))
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE
INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0
FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
TABLESPACE "ACME_DATA" ;
CREATE UNIQUE INDEX *"CROUTREACH"."SYS_C0014547"* ON "CROUTREACH"."ACTION"
"SYS_NC_OID$"
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE
INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0
FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
TABLESPACE "ACME_DATA" ;
CREATE UNIQUE INDEX *"CROUTREACH"."SYS_IL0000082156C00003$$"* ON "CROUTREACH".
"ACTION"
PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576
MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST
GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "ACME_DATA" PARALLEL (DEGREE 0 INSTANCES 0) ;
CREATE UNIQUE INDEX *"CROUTREACH"."ACTN_ID_PK"* ON "CROUTREACH"."ACTION" (
"ACTN_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(
INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0
FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT) TABLESPACE "ACME_DATA" ;
CREATE
INDEX *"CROUTREACH"."ACTION_STAT_RSN_IDX"* ON "CROUTREACH"."ACTION"
"STAT_RSN"
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE
INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE
0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
TABLESPACE "ACME_DATA" ;
CREATE
INDEX *"CROUTREACH"."ACTION_UPDT_DT_IDX"* ON "CROUTREACH"."ACTION"
"UPDT_DT"
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE
INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE
0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
TABLESPACE "ACME_DATA" ;
CREATE
INDEX *"CROUTREACH"."ACTION_CRET_DT_IDX"* ON "CROUTREACH"."ACTION"
"CRET_DT"
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE
INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE
0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
TABLESPACE "ACME_DATA" ;
CREATE
INDEX *"CROUTREACH"."ACTION_STAT_DT_IDX"* ON "CROUTREACH"."ACTION"
"STAT_DT"
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE
INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE
0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
TABLESPACE "ACME_DATA" ;
CREATE
INDEX *"CROUTREACH"."ACTION_MBRID_TYP_STAT_IDX"* ON "CROUTREACH"."ACTION"
"ACME_MBR_ID",
"ACTION_TYPE",
"STATUS"
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE
INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE
0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
TABLESPACE "ACME_DATA" ;
CREATE
INDEX *"CROUTREACH"."ACT_ACTDEF_URN_IDX"* ON "CROUTREACH"."ACTION"
"ACTION_DEF_URN"
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE
INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE
0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
TABLESPACE "ACME_DATA" ;
CREATE
INDEX *"CROUTREACH"."ACTION_ACT_DEF_ID_STATUS_IDX"* ON "CROUTREACH"."ACTION"
"ACT_DEF_ID",
"STATUS"
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE
INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE
0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
TABLESPACE "ACME_DATA" ;Any suggestions much appreciated.
Regards,
Richard Blanchardodie 63
update /*+ NO_XML_DML_REWRITE */croutreach.action set object_value = :1 where actn_id = :2 .
This update pattern is used in the production environment and is slowing the environment down as more xml content is increased. In a new release build, this update pattern against the action table described earlier, is particularly problematic.
Have some more information on the /*+ NO_XML_DML_REWRITE */ hint. It turns out, last year, updates statements would intermittently fail to correctly update silently failing. An Oracle Service Request was created. Over the span of about 5 mnths, Oracle determined a very low level Oracle kernel bug was the culprit. Oracle As a result of this SR, Oracle SUpport created BUG 11939507 <ORA-08102: index key not found during update on xmltable with a virtual column>. This bug is viewable on metalink. Oracle claims this bug has only been oberved on In the interim to 11.2.0.3, Oracle Support mentioned to use /*+ NO_XML_DML_REWRITE */; thus disabling piecewise update.
Here's preface information on this bug:
Bug 11939507: ORA-08102: INDEX KEY NOT FOUND DURING UPDATE ON XMLTABLE WITH VIRTUAL COLUMN
Bug Attributes
Type B - Defect Fixed in Product Version 12.1
Severity 2 - Severe Loss of Service Product Version 11.2.0.1
Status 80 - Development to Q/A Platform 23 - Oracle Solaris on SPARC (64-bit)
Created 30-Mar-2011 Platform Version 10
Updated 13-Feb-2012 Base Bug -
Database Version 11.2.0.1
Affects Platforms Generic
Product Source Oracle
Hdr: 11939507 11.2.0.1 XDB 11.2.0.1 BINARY PRODID-5 PORTID-23
Abstract: ORA-8102: INDEX KEY NOT FOUND DURING UPDATE ON XMLTABLE WITH VIRTUAL COLUMN*** 03/30/11 12:22 pm ***
BUG TYPE CHOSEN =============== code
Component: XML Database =======================
DETAILED PROBLEM DESCRIPTION ============================
The issue happens intermittently when running a batch program with 50 concurrent sessions that involves high concurrent updates.
DIAGNOSTIC ANALYSIS =================== reproducible testcase on customer dummy data reproduced by Thomas.
WORKAROUND? =========== No
TECHNICAL IMPACT ================ Customer is experiencing this error which is critical to the application because it causes a home health care provider to possibly lose a couple hours worth of work and have to start from scratch. The condition has only accessed concurrently from about 40 threads
RELATED ISSUES (bugs, forums, RFAs) =================================== Bug 8514561 - ORA-8102 WHEN UPDATING TABLE
HOW OFTEN DOES THE ISSUE REPRODUCE AT CUSTOMER SITE? ==================================================== Intermittent
DOES THE ISSUE REPRODUCE INTERNALLY? ==================================== Intermittent
IS A TESTCASE AVAILABLE? ======================== Yes The good news is, this bug is corrupting a virtual index column.
I'll try test cases using the update pattern; 'update /*+ NO_XML_DML_REWRITE */croutreach.action set object_value = :1 where actn_id = :2 ' - substituting actual values for the bind variables and removing interfering virtual columns. Wil lcompare with and w/o the hint.
This wil address your; "Where does the new values come from? Individual variables?" - and provide sample data.
Presently, this update pattern is used 'blindly' in that when no xml relevent changes are identified, only a couple of the roughly 16 fields are updated - yet the whole document gets updated with this update pattern. When changes occur, the whole document is updated. Will work with updating 1 or 2 fields using updatexml and try the xmlexists function for the predicate.
04/25/12 Update:
odie 63,
Here's a sample xml record from the action securefile binary xml table:
<?xml version = '1.0' encoding = 'UTF-8' standalone = 'yes'?><action xsi:type="AssessmentActionType" status_dt="2012-01-18T19:38:21.077Z" status="not applicable" create_dt="2012-01-17T23:10:16.173Z" id="dfdfdfdfdfddfdfdfdfdfdf" xmlns:ns5="http://www.xxxxx.ddd/exception/definition/schema/2010/01" xmlns="http://www.xxxxxx.ddd/mmm/domains/actions/2010/03" xmlns:ns6="http://www.xxxxx.ddd/mmm/domains/utility/outcome/2010/03" xmlns:ns7="http://www.xxxxxx.ddd/mmm/domains/common/2010/03" xmlns:ns2="http://www.xxxxx.ddd/mmm/messages/actions/2010/03" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns3="http://www.xxxxx.ddd/mmm/domains/workforce/2010/03" xmlns:ns4="http://www.xxxxxx.ddd/mmm/domains/entitlement/2011/11">
<acmeMemberId>abcdefghijklmnop</acmeMemberId>
<advocacyPlanId>qrstuvwxyz</advocacyPlanId>
<srvContextPointer>
<serviceDefUrn>urn:coderunner:Medical:Definition:ServiceService:11111:7</serviceDefUrn>
<outreachActionDefInfo sequence="1" actionDefUrn="urn:xxxxxxxxxx:Medical:Definition:Action:50813:2" actionDefId="xxxxxx">
<srvContextPath>Access Profile~Why did you access the profile?~Reason for access?</srvContextPath>
</outreachActionDefInfo>
</srvContextPointer>
</action>Started out using this update statement against the virtual column a.actn_id. This column is also indexed as a fbi.
UPDATE /*+ NO_XML_DML_REWRITE */ action A
SET A.object_value = updatexml(A.object_value,'/action/@status','triggered','xmlns="http://www.xxxx.vvv/yyy/domains/actions/2010/03"')
where a.actn_id='888a80be-d69f-464d-b3f7-85b6209f918e';
This statment updates fine with and w/o the hint. This hint takes away the piecewise update of the xml document and relies upon the a.actn_id virtual column.
Then removed the reliance on the virtual column using the xmlexists fn.
First did an alter index 'actn_id_pk invisible' to take the virtual column out of consideration by the optimizer.
UPDATE /*+ NO_XML_DML_REWRITE */ action A
SET A.object_value = updatexml(A.object_value,'/action/@status','triggered','xmlns="http://www.xxxx.vvv/yyy/domains/actions/2010/03"')
where xmlexists('$p/action[@id="'888a80be-d69f-464d-b3f7-85b6209f918e'"]' PASSING object_value as "p");
This update runs but doesn't update any columns - with or without the hint.
Also created a basic unstructured xmlindex to remove the full table scan - which worked fine execution plan-wise.
create index action_xmlindex_ix on action (object_value) indextype is xdb.xmlindex;Per the SR on this, the /*+ NO_XML_DML_REWRITE */ disables piecewise update and is a workaround for the bug surrounding virtual column index usage when having many concurrent sessions and updates against a table with millions of xml documents. Getting rid of the virtual column in the predicate removes the need for the workaround hint.
My problem is This update runs but doesn't update any columns. Maybe am missing something or doing a syntax/semantic error ?
Any assistance much appreciated...
Regards,
Rick Blanchard
Edited by: RickBlanchardSRSCigna on Apr 25, 2012 12:52 PM
Maybe you are looking for
-
Hi all, I am not able to drilldown to lowest level of my dimension. There is no actually error message and only thing that remains forever on the screen is " Searching... To cancel, click here.". I have found connection between number of used filters
-
Using a MacBook Pro and Adobe CS2 and Macromedia Studio
I was planning on buying a MacBook Pro. Right now my Dell desktop has a 2.4ghz Celeron and I really want to get my first Mac. I'm sick of Windows!! I was wondering how Studio and CS2 (especially Photoshop, Dreamweaver, and Flash Pro) will run under R
-
Can I establish a symbol to type a phrase
how many times to I type my email address? Can I establish a symbol that when tapped will print my email address?
-
Are there any examples for programmatically creating OBR 11g rules?
I am looking for some examples about how to use the API to create rules from Java code as the SDK documentation is very terse. Are there examples out there for creating rules?
-
Why has the same album been paid for twice??
Hi Can someone point me in the right direction re iTunes store and an album purchase I've now seemingly paid for twice? It seems my daughter has downloaded the same album twice on two separate devices (iPhone 5c and iMac), both logged into the same i