Merge Statement in 10g
Hi all,
The following article shows how one can use Merge for Insert alone:
http://www.oracle-base.com/articles/10g/MergeEnhancements10g.php
in particular:
-- No matched clause, insert only.
MERGE INTO test1 a
USING all_objects b
ON (a.object_id = b.object_id)
WHEN NOT MATCHED THEN
INSERT (object_id, status)
VALUES (b.object_id, b.status)
WHERE b.status != 'VALID';
when I used the same ... in my program ... I am getting the following error:
ERROR at line 1:
ORA-03113: end-of-file on communication channel
can some one give me an idea ... what I am doing wrong?
I am using release 10.2.0.3.0
Thanks
Works fine on 10.2.0.1.0:
SQL> select * from v$version;
BANNER
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
SQL> create table test1 as select object_id, status from all_objects where 1 = 2;
Table created.
SQL> MERGE INTO test1 a
2 USING all_objects b
3 ON (a.object_id = b.object_id)
4 WHEN NOT MATCHED THEN
5 INSERT (object_id, status)
6 VALUES (b.object_id, b.status)
7 WHERE b.status != 'VALID';
50 rows merged.SY.
Similar Messages
-
Can sql merge statement be used in a batch (oracle 10g)?
Hello,
I am trying to insert into an oracle table multiple rows of values selected from a web page. Can I use a merge statement as a preparedStatement to avoid inserting duplicate records?
Does anybody have any examples they would like to share?
Any suggestions are greatly appreciated.
Thank you,
LoganI've implemented this by batch inserting into a temp table then running a merge then dropping the temp table.
public void mergeMethod() {
final String createsql = "CREATE TABLE temp (a INTEGER, b INTEGER, c INTEGER)";
final String insertsql = "INSERT INTO temp (a, b, c) VALUES (?,?,?)";
final String mergesql = "MERGE INTO my_table A " +
"USING temp B ON (A.a = B.a AND A.b = B.b) " +
"WHEN MATCHED THEN UPDATE SET A.c = B.c " +
"WHEN NOT MATCHED THEN INSERT (A.id, A.a, A.b, A.c) " +
"VALUES (my_seq.Nextval,B.a,B.b,B.c)";
final String dropsql = "DROP TABLE temp";
Connection conn = null;
Statement cs = null;
Statement ms = null;
Statement ds = null;
PreparedStatement ps = null;
boolean retValue = false;
try {
conn = getConnection();
conn.setAutoCommit(false);
cs = conn.createStatement();
ms = conn.createStatement();
ds = conn.createStatement();
ps = conn.prepareStatement(insertsql);
for (int i=0; i< 10; i++){
ps.setInt(1, i);
ps.setInt(2, i+1);
ps.setInt(3, i+2);
ps.addBatch();
// create temp table
cs.execute(createsql);
// execute in batch
final int updateCount[] = ps.executeBatch();
// merge the two tables
ms.execute(mergesql);
// drop the temp table
ds.execute(dropsql);
conn.commit();
System.out.println("Rows is updated: " + updateCount.length);
} catch (final SQLException e) {
if (conn != null) {
conn.rollback();
throw e;
} finally {
if (ps != null) {
ps.close();
if (cs != null) {
cs.close();
if (ms != null) {
ms.close();
if (ds != null) {
ds.close();
if (conn != null) {
conn.close();
} -
Hi All,
I am using merge statement to update 30000 records from the tables having 55 lacs records.
But it is taking much time as i have to kill the session after 12 hours,as it was still going on.
If,Same update i m doing using cursors,it will finish in less than 3 hours.
Merge i was using is :-
MERGE INTO Table1 a
USING (SELECT MAX (TO_DATE ( TO_CHAR (contact_date, 'dd/mm/yyyy')
|| contact_time,
'dd/mm/yyyy HH24:Mi:SS'
) m_condate,
appl_id
FROM Table2 b,
(SELECT DISTINCT acc_no acc_no
FROM Table3, Table1
WHERE acc_no=appl_id AND delinquent_flag= 'Y'
AND financier_id='NEWACLOS') d
WHERE d.acc_no = b.appl_id
AND ( contacted_by IS NOT NULL
OR followup_branch_code IS NOT NULL
GROUP BY appl_id) c
ON (a.appl_id = c.appl_id AND a.delinquent_flag = 'Y')
WHEN MATCHED THEN
UPDATE
SET last_contact_date = c.m_condate;
In this query table 1 has 30000 records and table2 and table 3 have 3670955 and 555674 records respectively.
Please suggest,what i am doing wrong in merge,because as per my understanding merge statement is much better than updates or updates using cursors.
Required info is as follows:
SQL> show parameter user_dump_dest
NAME TYPE VALUE
user_dump_dest string /opt/oracle/admin/FINCLUAT/udu
mp
SQL> show parameter optimizer
NAME TYPE VALUE
optimizer_dynamic_sampling integer 2
optimizer_features_enable string 10.2.0.4
optimizer_index_caching integer 0
optimizer_index_cost_adj integer 100
optimizer_mode string ALL_ROWS
optimizer_secure_view_merging boolean TRUE
SQL> show parameter db_file_multi
NAME TYPE VALUE
db_file_multiblock_read_count integer 16
SQL> show parameter db_block_size
NAME TYPE VALUE
db_block_size integer 8192
SQL> column sname format a20
SQL> column pname format a20
SQL> column pval2 format a20
SQL> select
2 sname ,
3 pname ,
4 pval1 ,
5 pval2
6 from
7 sys.aux_stats$;
sys.aux_stats$
ERROR at line 7:
ORA-00942: table or view does not exist
Elapsed: 00:00:00.05
SQL> explain plan for
2 -- put your statement here
3 MERGE INTO cs_case_info a
4 USING (SELECT MAX (TO_DATE ( TO_CHAR (contact_date, 'dd/mm/yyyy')
5 || contact_time,
6 'dd/mm/yyyy HH24:Mi:SS'
7 )
8 ) m_condate,
9 appl_id
10 FROM CS_CASE_DETAILS_ACLOS b,
11 (SELECT DISTINCT acc_no acc_no
12 FROM NEWACLOS_RESEARCH_HIST_AYLA, cs_case_info
13 WHERE acc_no=appl_id AND delinquent_flag= 'Y'
14 AND financier_id='NEWACLOS') d
15 WHERE d.acc_no = b.appl_id
16 AND ( contacted_by IS NOT NULL
17 OR followup_branch_code IS NOT NULL
18 )
19 GROUP BY appl_id) c
20 ON (a.appl_id = c.appl_id AND a.delinquent_flag = 'Y')
21 WHEN MATCHED THEN
22 UPDATE
23 SET last_contact_date = c.m_condate
24 ;
Explained.
Elapsed: 00:00:00.08
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)|
| 0 | MERGE STATEMENT | | 47156 | 874K| | 128K (1)|
| 1 | MERGE | CS_CASE_INFO | | | | |
| 2 | VIEW | | | | | |
| 3 | HASH JOIN | | 47156 | 36M| 5672K| 128K (1)|
| 4 | VIEW | | 47156 | 5111K| | 82339 (1)|
| 5 | SORT GROUP BY | | 47156 | 4236K| 298M| 82339 (1)|
| 6 | HASH JOIN | | 2820K| 247M| 10M| 60621 (1)|
| 7 | HASH JOIN | | 216K| 7830K| | 6985 (1)|
| 8 | VIEW | index$_join$_012 | 11033 | 258K| | 1583 (1)|
| 9 | HASH JOIN | | | | | |
| 10 | INDEX RANGE SCAN | IDX_CCI_DEL | 11033 | 258K| | 768 (1)|
| 11 | INDEX RANGE SCAN | CS_CASE_INFO_UK | 11033 | 258K| | 821 (1)|
| 12 | INDEX FAST FULL SCAN| IDX_NACL_RSH_ACC_NO | 5539K| 68M| | 5382 (1)|
| 13 | TABLE ACCESS FULL | CS_CASE_DETAILS_ACLOS | 3670K| 192M| | 41477 (1)|
| 14 | TABLE ACCESS FULL | CS_CASE_INFO | 304K| 205M| | 35975 (1)|
Note
- 'PLAN_TABLE' is old version
24 rows selected.
Elapsed: 00:00:01.04
SQL> rollback;
Rollback complete.
Elapsed: 00:00:00.03
SQL> set autotrace traceonly arraysize 100
SQL> alter session set events '10046 trace name context forever, level 8';
ERROR:
ORA-01031: insufficient privileges
Elapsed: 00:00:00.04
SQL> disconnect
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> spool off
Edited by: user4528984 on May 5, 2009 10:37 PMFor one thing, alias your tables and use that in the column specifications (table1.column1 = table2.column3 for example)...
SELECT
DISTINCT
acc_no acc_no
FROM Table3, Table1
WHERE acc_no = appl_id
AND delinquent_flag = 'Y'
AND financier_id = 'NEWACLOS'We don't know what your tables look like, what columns come from where. Try and help us help you, assume we know NOTHING about YOUR system, because more likely than naught, that's going to be the case.
In addition to that, please read through this which will give you a better-er idea of how to post a tuning related question, you've not provided near enough information for us to intelligently help you.
HOW TO: Post a SQL statement tuning request - template posting -
FORALL MERGE statement works in local database but not over database link
Given "list", a collection of NUMBER's, the following FORALL ... MERGE statement should copy the appropriate data if the record specified by the list exists on both databases.
forall i in 1..list.count
merge into tbl@remote t
using (select * from tbl
where id = list(i)) s
on (s.id = t.id)
when matched then
update set
t.status = s.status
when not matched then
insert (id, status)
values (s.id, s.status);
But this does not work. No exceptions, but target table's record is unchanged and "sql%rowcount" is 0.
If the target table is in the local database, the exact same statement works:
forall i in 1..list.count
merge into tbl2 t
using (select * from tbl
where id = list(i)) s
on (s.id = t.id)
when matched then
update set
t.status = s.status
when not matched then
insert (id, status)
values (s.id, s.status);
Does anyone have a clue why this may be a problem?
Both databases are on Oracle 10g.
Edited by: user652538 on 2009. 6. 12 오전 11:29
Edited by: user652538 on 2009. 6. 12 오전 11:31
Edited by: user652538 on 2009. 6. 12 오전 11:45Should throw an error in my opinion. The underlying reason for not working is basically because of
SQL> merge into t@remote t1
using ( select sys.odcinumberlist (1) from dual) t2
on (1 = 1)
when matched
then
update set i = 1
Error at line 4
ORA-22804: remote operations not permitted on object tables or user-defined type columnsSame reason as e.g.
insert into t@remote select * from table(sys.odcinumberlist(1,2,3))doesn't work. -
Error in Merge statement for Oracle 10gR2
Hi,
When I use the MERGE statement to copy data across a database link (from 10gR2 to 10gR2 database), if I have both an update and insert clause it works fine, but if I omit the insert clause and have just update on its own, I get error "ORA-02064: distributed operation not supported".
Can anyone help on thisThis came up in a thread last week, the 10g versions of MERGE (without INSERT or with DELETE) did not appear to work over DB links.
-
Returning clause in MERGE statement
Hi ,
I'm using Oracle 10g Version
I tried the below code using UPDATE with Returning Clause & MERGE with Returning Clause .
I found NO errors while working with UPDATE statement . The following is the code with UPDATE statement
DECLARE
TYPE empno_list IS TABLE OF emp.empno%TYPE;
vempno_list empno_list;
BEGIN
UPDATE emp
SET comm = 11
WHERE deptno IN (SELECT deptno FROM dept)
RETURNING empno
BULK COLLECT INTO vempno_list;
FOR i IN vempno_list.FIRST .. vempno_list.LAST
LOOP
DBMS_OUTPUT.put_line ('Values of EMP ' || vempno_list (i));
END LOOP;
END;
But getting the error PL/SQL: ORA-00933: SQL command not properly ended when working with MERGE Statement
declare
type empno_list is table of emp.empno%type;
vempno_list empno_list;
begin
merge into emp tgt
using dept src
on (src.deptno =tgt.deptno)
when matched then
update set tgt.comm=12
returning tgt.empno bulk collect into vempno_list ;
for i in vempno_list.first .. vempno_list.last loop
dbms_output.put_line('Values of EMP '||vempno_list(i) ) ;
end loop;
end;
Please suggest meProbably because the RETURNING INTO clause doesn't belong to MERGE statement. It's available only for INSERT, UPDATE and DELETE. Here is the quote from Oracle Documentation:
The static RETURNING INTO clause belongs to a DELETE, INSERT, or UPDATE statement. The dynamic RETURNING INTO clause belongs to an EXECUTEIMMEDIATE statement.
And here's the link.
RETURNING INTO Clause
Hope it helps.
Ishan -
Merge Statement !!!! difference in Oracle 9i and Oracle XE
Hi All ,
I am using a Merge statement for multiplying a column......which works fine in XE but not in Oracle 9i
CODE
*======*
MERGE INTO MULTIPLY T USING
(SELECT CONV,ITEM FROM MULTIPLY WHERE TYP='P') X ON
(T.ITEM= X.ITEM)
WHEN MATCHED THEN UPDATE SET T.CONV =X.CONV * T.CONV WHERE TYP!='P'
What shud I need to do in order to get the same result in Oracle 9i.....
I understand that I used use one more line WHEN NOT MATCHED ..... but I am getting an Error in the Update statement where clause , whether it is not possible to combine where clause in the Merge statement
Sample data:
ITM CONV TYP
===============
A 2
A 5
A 4 P
A 2
Output; which I am getting in Oracle XE but not in Oracle 9i
======================================
ITM CONV TYP
=== ==== =====
A 2 *4
A 5 *4
A 4 P
A 2*4
BANNER
==========
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
BANNER_
Oracle9i Enterprise Edition Release 9.2.0.5.0 - Production
PL/SQL Release 9.2.0.5.0 - Production
CORE 9.2.0.6.0 Production
TNS for 32-bit Windows: Version 9.2.0.5.0 - Production
NLSRTL Version 9.2.0.5.0 - Production
Can you please guide me on this
Thanks
Ananda
Edited by: Ananda on Nov 13, 2008 3:49 PM
Edited by: Ananda on Nov 13, 2008 8:56 PMHi ,
Thanks for ur reply....
I am getting an Error as Missing Keyword and points to the WHERE in the update statement ..............
Am i doin anything wrong here in the syntax ...........but if i do the same without the where statement in Update ....... Merge works fine but with wrong output
Thanks
Ananda
Edited by: Ananda on Nov 13, 2008 4:06 PM -
Oracle 11g merge statement not working properly
HI I have recently my oracle version to 11.2.0.3 -64 bit . My merge statement is geeting failied saying that invlid identfier at line number 18
MERGE INTO peer_index indx USING staging.stg_peer_filing stg ON (indx.peer_element_code = stg.fund_code and indx.index_effective_date = trunc(stg.pricing_date)) WHEN MATCHED THEN UPDATE SET indx.filing_date = trunc(stg.filing_date), indx.reported_net_assets = stg.net_assets, indx.active_flag = 'N', indx.parent_index_code = NULL, indx.update_datetime = systimestamp, indx.last_update_user_id = user WHEN NOT MATCHED THEN INSERT (index_code, peer_element_code, filing_date, index_effective_date, reported_net_assets, active_flag ) VALUES ((SELECT pe.index_code_prefix || to_char(stg.pricing_date,'MMRR') FROM fi_benchmark.peer_element pe WHERE pe.peer_element_code = stg.fund_code), stg.fund_code, trunc(stg.filing_date), trunc(stg.pricing_date), stg.net_assets, 'N' );
please help why this is happening .Same query works fine in 10g .which line is the line that has the error?
merge INTO peer_index indx
USING staging.stg_peer_filing stg
ON (indx.peer_element_code = stg.fund_code AND indx.index_effective_date = Trunc
(stg.pricing_date))
WHEN matched THEN
UPDATE SET indx.filing_date = Trunc(stg.filing_date),
indx.reported_net_assets = stg.net_assets,
indx.active_flag = 'N',
indx.parent_index_code = NULL,
indx.update_datetime = systimestamp,
indx.last_update_user_id = USER
WHEN NOT matched THEN
INSERT (index_code,
peer_element_code,
filing_date,
index_effective_date,
reported_net_assets,
active_flag )
VALUES ((SELECT pe.index_code_prefix
|| To_char(stg.pricing_date, 'MMRR')
FROM fi_benchmark.peer_element pe
WHERE pe.peer_element_code = stg.fund_code),
stg.fund_code,
Trunc(stg.filing_date),
Trunc(stg.pricing_date),
stg.net_assets,
'N' ); -
Is anyone aware of how to "add a contraint" to the update section of the merge statement to constrain which records are updated? The "on" statement is basically a join, but in typical update statements, you can add a "where" to constrain which records.
No, AFAIK that's the downside of MERGE (until 10g where it gets additional syntax) - you can get a lot of unwanted updates where everything already matched. The only workaround I know of is to include a MINUS or equivalent in the USING query, i.e. limit the incoming rowset to exclude rows already matching. (You should also be able to update an updateable inline view, now I think of it, but can't test right now.)
-
Syntax for Merge statement to insert into target and update source
Hello All,
I want to use Merge statement to insert records when not matched in my target and update records in source when matched. Is it possible to do using Merge statement.
create table a (aa number)
create table b (bb number)
alter table a add flg char(1)
merge b as target
using a as source
on (target.bb = source.aa)
when matched then
update set source.flg = 'Y'
WHEN NOT MATCHED THEN
insert (target.bb)
values
(source.aa)
Thanks.Hi,
I have no idea about the version of DB, else some new features with respect version can be specified - just for informaitve purpose and to post across the verison of DB in future posts.
Coming to your issue and requirement.
if you check the syntax and functionality , then its on Merge on target base only - with respect to Update (matched o columns) and insert (for unmatched columns). Source - as the term is clear. It might not work out on source table.
- Pavan Kumar N
- ORACLE OCP - 9i/10g
https://www.oracleinternals.blogspot.com -
Two parallel hints in a merge statement
I am not sure if using the parallel hint in such a way as below would be helpful in parallelizing the query run. Can a parallel hint be used for two different tables in a merge statement like mentioned below?
MERGE INTO /*+ parallel (TABLE_A,8) */ TABLE_A A
USING( SELECT /*+ parallel (TABLE_B,8) */
col1,
col2
FROM TABLE_B
) B
ON A.col1 = B.col1
WHEN MATCHED THEN
UPATE ....
WHEN NOT MATCHED THEN
INSERT ...
I am using Oracle 10g.
ThanksThis does make sense (allowing for "someone else"'s observation about aliases); however MERGE is DML, so you couldn't get the merge phase working in parallel if you didn't also execute
alter session enable parallel dml;
Regards
Jonathan Lewis -
Converting MERGE Statements into Mappings
Hello All,
I am an Oracle DBA. New to Oracle Warehouse Builder.
Now working in Oracle Warehouse Builder 10G R2.
We have merge statements which needs to be converted into Oracle Warehouse Builder Mappings.
I created mappings and process flows and deployed the same.
When i start the process flow it inserted say 150 records to the target table. But when i start the process flow again the number of records becames double.
How can i use the functionality of merge statement in this case.
Thanks,
Salih KMHi,
When you click on the target table, on the left side panel you will have the option to choose whether to use one of the available constraints on the target table to match on while merging.
If you do not hav any constraint defined, then choose "No Constraints". Then you have to click on each of the attribute you need to match on, and then from the left panel, select Yes for "Match while updating".
That should do it.
HTH
Mahesh -
i would like to know if it is possible to identify the row that is causing the problem when you use a merge statement in pl/sql. i know if you create a cursor and then loop through the data you can identify the column but what about if i have only a merge that will either insert or update. is it possible to identify which row of data cause the problem? thanks
You can use an Error Logging Table<br>
<br>
Nicolas. -
Hi
I am using a merge statement where i am updating and inserting records in table 2 from table 1.
I want to log the no. of rows updated and new rows inserted in the log table.
If i am not wrong, we can use sql%rowcount but i need help as how to use this statement.
Please suggest a solution.
Thanksuser11018028 wrote:
Will the sql%rowcount will give the no. of updated rows OR no. of newly inserted rows OR the sum of both in case of a merge statement.Total number of rows that changed (SUM). -
Question on passing string values to Partition clause in a merge statement
Hello All,
I am using the below code to update specific sub-partition data using oracle merge statements.
I am getting the sub-partition name and passing this as a string to the sub-partition clause.
The Merge statement is failing stating that the specified sub-partition does not exist. But the sub-partition do exists for the table.
We are using Oracle 11gr2 database.
Below is the code which I am using to populate the data.
declare
ln_min_batchkey PLS_INTEGER;
ln_max_batchkey PLS_INTEGER;
lv_partition_name VARCHAR2 (32767);
lv_subpartition_name VARCHAR2 (32767);
begin
FOR m1 IN ( SELECT (year_val + 1) AS year_val, year_val AS orig_year_val
FROM ( SELECT DISTINCT
TO_CHAR (batch_create_dt, 'YYYY') year_val
FROM stores_comm_mob_sub_temp
ORDER BY 1)
ORDER BY year_val)
LOOP
lv_partition_name :=
scmsa_handset_mobility_data_build.fn_get_partition_name (
p_table_name => 'STORES_COMM_MOB_SUB_INFO',
p_search_string => m1.year_val);
FOR m2
IN (SELECT DISTINCT
'M' || TO_CHAR (batch_create_dt, 'MM') AS month_val
FROM stores_comm_mob_sub_temp
WHERE TO_CHAR (batch_create_dt, 'YYYY') = m1.orig_year_val)
LOOP
lv_subpartition_name :=
scmsa_handset_mobility_data_build.fn_get_subpartition_name (
p_table_name => 'STORES_COMM_MOB_SUB_INFO',
p_partition_name => lv_partition_name,
p_search_string => m2.month_val);
DBMS_OUTPUT.PUT_LINE('The lv_subpartition_name => '||lv_subpartition_name||' and lv_partition_name=> '||lv_partition_name);
IF lv_subpartition_name IS NULL
THEN
DBMS_OUTPUT.PUT_LINE('INSIDE IF => '||m2.month_val);
INSERT INTO STORES_COMM_MOB_SUB_INFO T1 (
t1.ntlogin,
t1.first_name,
t1.last_name,
t1.job_title,
t1.store_id,
t1.batch_create_dt)
SELECT t2.ntlogin,
t2.first_name,
t2.last_name,
t2.job_title,
t2.store_id,
t2.batch_create_dt
FROM stores_comm_mob_sub_temp t2
WHERE TO_CHAR (batch_create_dt, 'YYYY') = m1.orig_year_val
AND 'M' || TO_CHAR (batch_create_dt, 'MM') =
m2.month_val;
ELSIF lv_subpartition_name IS NOT NULL
THEN
DBMS_OUTPUT.PUT_LINE('INSIDE ELSIF => '||m2.month_val);
MERGE INTO (SELECT *
FROM stores_comm_mob_sub_info
SUBPARTITION (lv_subpartition_name)) T1
USING (SELECT *
FROM stores_comm_mob_sub_temp
WHERE TO_CHAR (batch_create_dt, 'YYYY') =
m1.orig_year_val
AND 'M' || TO_CHAR (batch_create_dt, 'MM') =
m2.month_val) T2
ON (T1.store_id = T2.store_id
AND T1.ntlogin = T2.ntlogin)
WHEN MATCHED
THEN
UPDATE SET
t1.postpaid_totalqty =
(NVL (t1.postpaid_totalqty, 0)
+ NVL (t2.postpaid_totalqty, 0)),
t1.sales_transaction_dt =
GREATEST (
NVL (t1.sales_transaction_dt,
t2.sales_transaction_dt),
NVL (t2.sales_transaction_dt,
t1.sales_transaction_dt)),
t1.batch_create_dt =
GREATEST (
NVL (t1.batch_create_dt, t2.batch_create_dt),
NVL (t2.batch_create_dt, t1.batch_create_dt))
WHEN NOT MATCHED
THEN
INSERT (t1.ntlogin,
t1.first_name,
t1.last_name,
t1.job_title,
t1.store_id,
t1.batch_create_dt)
VALUES (t2.ntlogin,
t2.first_name,
t2.last_name,
t2.job_title,
t2.store_id,
t2.batch_create_dt);
END IF;
END LOOP;
END LOOP;
COMMIT;
end;
Much appreciate your inputs here.
Thanks,
MK.I've not used partitioning, but I do not see MERGE supporting a variable as a partition name in
MERGE INTO (SELECT *
FROM stores_comm_mob_sub_info
SUBPARTITION (lv_subpartition_name)) T1
USING ... I suspect it is looking for a partition called lv_subpartition_name.
I also don't see why you need that partition name - the ON clause should be able to identify the partition's criteria.
Maybe you are looking for
-
Custom Branding Using the AJAX Framework L-Shape APIs
Hello folks, i want to do this Tutorial (How To Apply Custom Branding Using the AJAX Framework L-Shape APIs) but i'm missing the source code. Can anyone of you provide me with the necessary files?! It was once located in Sap Code-Exchange (https://co
-
Firefox crashes when I try to watch a movie type youtube, has just installed nero and Nikon software on my computer. This began shortly after I installed my new CD burner with Nero 9 burning software, about the same time I also installlerade my new N
-
DML visibility in stored procedures called via JDBC
Hello, I have two stored procedures, A and B. Proc A inserts Q into table X. Proc B selects Q from table X to insert it into table Y. Neither procedure does a COMMIT. My Java class executes Proc A and then Proc B within a transaction (autocommit is f
-
I have 'Do Not Disturb' on, but I'm still being disturbed.
Title pretty much says it all, but here are some particulars... * iPad mini, 32 GB, iOS 6.1.3 * Do Not Disturb is set to ON in settings. * It is it not on a schedule. It is simply set to ON. * Ordinarily, I will just turn the switch on the side of th
-
Error installing OEM Grid 10.2.0.1 on VM machine
Hello, I am trying to install OEM Grid 10.2.0.4, instruction said to install 10.2.0.1 first and then patch up to 10.2.0.4. I am installing 10.2.0.1 on a VM machine, SUSE 9. Installation is going fine until "OMS Configuration". Error file in /u01/app/