I have a sql that looks more or less something like the below one -
declare some_Date date; begin select sysdate into some_Date from dual ; merge into (SELECT cola, colb, colc FROM TableA WHERE status='A' AND some_id = 101) P USING ( select some_Date as cola from dual ) S ON (P.cola=S.cola) WHEN MATCHED THEN UPDATE SET P.status = 'D' WHEN NOT MATCHED THEN INSERT ( cola, colb, colc ) VALUES ( xxx, xxx, xxx ); end ;
When I run the above query by replacing the some_date with sysdate directly, it executes with no error. But I replace the sysdate inside the using clause and try to use it dynamically I get the following error. I get an exception as following -
Error report: ORA-00600: internal error code, arguments: [qcsfbdnp:1], [B1], [], [2], [], [], [], [], [], [], [], [] ORA-06512: at line 5 00600. 00000 - "internal error code, arguments: [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s]" *Cause: This is the generic internal error number for Oracle program exceptions. This indicates that a process has encountered an exceptional condition. *Action: Report as a bug - the first argument is the internal error number
Is this a know bug in oracle? What would be the alternate?
Update: Fixed a typo!
cola
? In the statement above it's returning a column namedcala
. Probably just a typo but perhaps worth mentioning... – Bob Jarvis - Reinstate Monica