ORA-14451 : Can't do DML inside a select : PL/SQL Question
I was just wondering if anyone had an answer to this little conundrum.
I've got a PL/SQL function in a package which has an insert statement inside it which I only
want to perform the insert if it's called from another PL/SQL procedure or function
but not do the insert if it's used in a select statement.
Does anyone know if you can work out the context in which a function is being called within
the function as it would generally be cleaner if I only had one implementation rather than one
for each context.
Not desparately important but it would be nice to know....
Thanks,
Rob
I don't know what the fuss it about -- but -- it seems to work for me. And I can think of a place where this would be useful. In an Oracle (ERP) Applications Alert. Alerts are limited and being able to SELECT and UPDATE a table, from inside the SELECT is useful. SQL Rules are for people who follow rules [HA :) ]
SQL> CREATE TABLE TEST
2 ( Id Number
3 , Num1 NUMBER
4 );
Table created.
SQL> CREATE TABLE TEST2
2 ( Id Number
3 , Num1 NUMBER
4 );
Table created.
SQL>
SQL> INSERT INTO TEST ( Id, Num1 ) VALUES ( 1, 1 );
1 row created.
SQL> INSERT INTO TEST ( Id, Num1 ) VALUES ( 2, 2 );
1 row created.
SQL> INSERT INTO TEST ( Id, Num1 ) VALUES ( 3, 3 );
1 row created.
SQL>
SQL> CREATE OR REPLACE PACKAGE TEST_PK
2 IS
3 FUNCTION Return_X RETURN VARCHAR2;
4 END;
5 /
Package created.
SQL> show errors package test_pk;
No errors.
SQL>
SQL> CREATE OR REPLACE PACKAGE BODY TEST_PK
2 IS
3 FUNCTION Return_X
4 RETURN VARCHAR2
5 IS
6 PRAGMA AUTONOMOUS_TRANSACTION;
7 BEGIN
8 INSERT INTO TEST2 ( Id, Num1 ) VALUES ( 21, 21 );
9 COMMIT;
10 RETURN 'X';
11 END Return_X;
12
13 END;
14 /
Package body created.
SQL> show errors package body test_pk;
No errors.
SQL>
SQL> SELECT TEST_PK.Return_X AS Test_Thing FROM TEST;
TEST_THING
X
X
X
SQL>
SQL> SELECT * FROM TEST2;
ID NUM1
21 21
21 21
21 21
Similar Messages
-
ORA-14551 when using rules manager inside a SELECT * FROM TABLE(myFunction)
Hello
I want to return rows from a pipelined function, and map this to a view, or a BC4J an query this in my application.
I want to populate the rows based on many evaluations, to achieve this, I want to include the rules manager functionality.
I have defined my event, rule class and result view successfully, but... when I run my query, I have the following error:
ORA-14551: cannot perform a DML operation inside a query
We believe this is caused when the engine tries to populate the results view with the matching rules.
Is there a workaround for this?
Please help
Thnks in advance.
Alex.Alex,
I cannot think of any workaround that would allow you to evaluate the rules and return the results with a single query. A Rules Manager application with composite events modifies the state of the database (for maintaining incremental state as well as the results view) when some events are processed. So, you will not be able to pipeline the results to a SQL query. If you can at least separate the ADD_EVENTS call from the rest of the logic this may be possible.
Hope this helps,
-Aravind. -
ORA-14551: cannot perform a DML operation inside a query
I have a Java method which is deployed as a Oracle function.
This Java method parses a huge XML & populates this data
into a set of database tables.
I have to call this Oracle function in a unix shell script using sqlplus.
Value returned by this function will be used by the shell script to decide
what to do next.
I am calling the Oracle Java function as follows in the shell script:
echo "SELECT XML_TABLES.RUN_XML_LOADER('$P1','$P2','$P3','$P4') FROM DUAL;\n" | sqlplus $DB_USER > $LOG
This gives error - "ORA-14551: cannot perform a DML operation inside a query".
If I have to add a AUTONOMOUS_TRANSACTION pragma to this Java function,
where to I add it considering, that the definition of the function is in a Java class.
Can we do it in call spec?
create or replace package XML_TABLES is
function RUN_XML_LOADER(xmlFile IN VARCHAR2,
xmlType IN VARCHAR2,
outputDir IN VARCHAR2,
logFileDir IN VARCHAR2) RETURN VARCHAR2 AS
LANGUAGE JAVA NAME 'XmlLoader.run
(java.lang.String, java.lang.String, java.lang.String, java.lang.String)
return java.lang.String';
end XML_TABLES;
If not is there any other way to acheive this?
Thanks in advance.
Sunitha.If I have to add a AUTONOMOUS_TRANSACTION pragma to this Java function,You'd have to write a PL/SQL function that calls the JSP. But I would caution you about using that pragma. It does introduce tremendous complexity into processing.
As I see it you only need a function to return the result code so why not use a procedure with an OUT parameter?
Cheers, APC
Of course Yoann's suggestion of using an anonymous block would work too.
Message was edited by:
APC -
Probelm regarding function ( can not perform dml openration inside a query
hi all,
i have created on function which is used for delete rows and insert new rows ( records) but when i run i got
ora-14551 -can not perform a DML operation inside a query
0ra-06512 - fn_brok_upfdate_dtltbl , line no 21
this error
following are my code please help me
CREATE OR REPLACE FUNCTION Fn_Brok_Update_Dtltbl
(fnBROK_TYPE VARCHAR2,fnSLAB_ID VARCHAR2, fnINV_TYPE_CODE VARCHAR2)
RETURN NUMBER
AS
fnCOUNT PLS_INTEGER;
fnTBLNAME VARCHAR2(40);
fnTMPINV_TYPE_CODE VARCHAR2(1000);
fnTMPINVCODE VARCHAR2(50);
fnMYQUERY VARCHAR2(4000);
BEGIN
IF UPPER(fnBROK_TYPE) = 'UPFRONT' THEN
fnTBLNAME :='UPFRONT_RECD_DTL';
END IF ;
IF fnSLAB_ID IS NOT NULL AND fnINV_TYPE_CODE IS NOT NULL THEN
fnTMPINV_TYPE_CODE := fnINV_TYPE_CODE ;
fnMYQUERY := 'SELECT COUNT(*) FROM '||fnTBLNAME||' WHERE SLAB_ID = '''||fnSLAB_ID||'''' ;
EXECUTE IMMEDIATE fnMYQUERY INTO fnCOUNT ;
IF fnCOUNT > 0 THEN
DELETE FROM UPFRONT_RECD_DTL WHERE slab_id = fnslab_id ;
END IF ;
WHILE fnTMPINV_TYPE_CODE IS NOT NULL
LOOP
SELECT CASE WHEN INSTR(fnTMPINV_TYPE_CODE,',')= 0 THEN fnTMPINV_TYPE_CODE
ELSE Strsplit(fnTMPINV_TYPE_CODE,1,INSTR(fnTMPINV_TYPE_CODE,',') - 1 ) END INTO fnTMPINVCODE FROM DUAL ;
fnMYQUERY := 'INSERT INTO '||fnTBLNAME||'(SLAB_ID, INV_TYPE_CODE)
VALUES ('''||fnSLAB_ID||''','||fnTMPINVCODE||') ' ;
EXECUTE IMMEDIATE fnMYQUERY ;
SELECT CASE WHEN INSTR(fnTMPINV_TYPE_CODE,',')= 0 THEN NULL
ELSE Strsplit(fnTMPINV_TYPE_CODE,INSTR(fnTMPINV_TYPE_CODE,',')+ 1 , LENGTH(fnTMPINV_TYPE_CODE)) END
INTO fnTMPINV_TYPE_CODE FROM DUAL ;
END LOOP ;
fnCOUNT := 1 ;
RETURN fnCOUNT ;
END IF ;
END ;
[\pre]How did you call this function ? from SQL Statement ? Then No way .. . .
ORA-14551: cannot perform a DML operation inside a query
Cause: DML operation like insert, update, delete or select-for-update cannot be performed inside a query or under a PDML slave.
Action: Ensure that the offending DML operation is not performed or use an autonomous transaction to perform the DML operation within the query or PDML slave -
Getting error SQL Error : ORA-14551: cannot perform a DML operation inside a query
Hi gurus ,
Your help is greatly appreciated ..
I am doing some changes in the fucntion for an existing package .Introducing the new below check , am updating one of the tables based on a if condition ..
IF numALLOWED_COUNT >= numLAST_COUNT_ADDED+1 THEN
blnGDS_Allowed :=True;
varSTMT := 'UPDATE PROD.TMS_PROCESS_COUNTER ';
varSTMT := varSTMT ||' SET last_count_added = last_count_added+1';
varSTMT := varSTMT ||' WHERE process_name = ''DAILY_GDS_COUNT''';
varSTMT := varSTMT ||' AND COUNTER_IND = ''750FD130''';
PROC_LOG('Update Tms_Process_counter varSTMT --' || varSTMT);
IF INSERT_BATCH(99,varSTMT) > 0 THEN
NULL;
END IF;
Function for insert_batch :
UNCTION INSERT_BATCH(numTABLE_ID IN NUMBER, varSQL_STATEMENT IN VARCHAR2) RETURN NUMBER IS
varINSERT_BATCH_STMT VARCHAR2(32767) := NULL;
varADD_REC_TYPE BATCH_TABLES.ADD_REC_TYPE%TYPE;
BEGIN
PROC_LOG( 'INSIDE INSERT_BATCH IRC : ' || varSQL_STATEMENT ); --IRC 9/20 UC
INSERT INTO BATCH_STATEMENT(QUEUE_ID,TABLE_ID,STATEMENT,QUEUE_SEQUENCE_ID)
VALUES (numQUEUE_ID,numTABLE_ID,varSQL_STATEMENT,1);
RETURN 1;
EXCEPTION WHEN OTHERS THEN
PROC_LOG('Failed in INSERT_BATCH');
PROC_LOG('SQL Error : ' || SUBSTR(SQLERRM,1,1000));
RETURN -1;
END INSERT_BATCH;
desc PROD.BATCH_STATEMENT
QUEUE_ID NUMBER(15) NOT NULL
TABLE_ID NUMBER(2) NOT NULL
STATEMENT VARCHAR2(4000 BYTE) NOT NULL
QUEUE_SEQUENCE_ID NUMBER(5) NOT NULL
Some how when its calling the insert_batch , its giving me the error in the logs as below:
04:01:41 - Update Tms_Process_counter varSTMT --UPDATE PROD.TMS_PROCESS_COUNTER SET last_count_added = last_count_added+1 WHERE process_name = 'DAILY_GDS_COUNT' AND COUNTER_IND = '750FD130'
04:01:41 - INSIDE INSERT_BATCH IRC : UPDATE PROD.TMS_PROCESS_COUNTER SET last_count_added = last_count_added+1 WHERE process_name = 'DAILY_GDS_COUNT' AND COUNTER_IND = '750FD130'
04:01:41 - Failed in INSERT_BATCH
04:01:41 - SQL Error : ORA-14551: cannot perform a DML operation inside a querySome how when its calling the insert_batch , its giving me the error in the logs as below:
04:01:41 - SQL Error : ORA-14551: cannot perform a DML operation inside a query
Yes - and the exception is telling you EXACTLY what the problem is. You have a query
IF INSERT_BATCH(99,varSTMT) > 0 THEN
And you are performing a DML operation inside that query:
INSERT INTO BATCH_STATEMENT(QUEUE_ID,TABLE_ID,STATEMENT,QUEUE_SEQUENCE_ID)
VALUES (numQUEUE_ID,numTABLE_ID,varSQL_STATEMENT,1);
Like the exception says: you can't do that.
You need to call the function using PL/SQL and capture the return value into a variable. Then test that variable:
myVar := INSERT_BATCH(99,varSTMT);
if myVar > 0 THEN -
ORA-38301: can not perform DDL/DML over objects in Recycle Bin
Oracle 10.2.0.4:
When performing DDL on a table I get the error "ORA-38301: can not perform DDL/DML over objects in Recycle Bin". I ran purge recyclebin but didn't help. I then ran following sql (below) and it returned whole bunch of rows for that user. Does it mean that purfe recyclebin didn't work? What should I do?
select r.obj#, r.original_name, u.username from recyclebin$ r, dba_users u where r.owner#=u.user_idI ran purge recyclebin but didn't helpis this a rac env?
check the metalink note performing DML/DDL operation over object in bin ORA-38301 - 578075.1
Bug 4760728 - ORA-38301 during DROP TABLE when already dropped from a different node 4760728.8 -
ORA-01461: can bind a LONG value only for insert into a LONG colu
Hello - I have a variable defined in a package as VARCHAR2(32720). This is not a table column. I am building a string inside the vairable, loading in invoice data in sections one at a time. It seems that once I get a larger number of invoices (say 100+) to load in, I get the "ORA-01461: can bind a LONG value only for insert into a LONG column" error. I am not trying to insert into a table column; just stringing together data in this large variable.
Why would I be getting this error ? And is there a workaround ? The variable is read back out iin 80 byte strings which are then loaded to a table column that is varchar2(80).
Thanks !!
Jim Ernst
Invacare CorporationHere is the definition of the field:
l_EDI820_Data VARCHAR2(32720);
And here is the loop used to populate the field. As i mentioned, it seems that once the process gets over 100 invoices coming in that the field hits the error; seems as if we are hitting say 4000 characters or near it at that point...
FOR r_INVOICE_DETAIL IN cr_INVOICE_DETAILS LOOP
l_EDI820_Data := l_EDI820_Data
||l_RMR_Statement
||r_INVOICE_DETAIL.INVOICE_NUM
||'*PI*'
||LTRIM(TO_CHAR(NVL(r_INVOICE_DETAIL.PAYMENT_AMOUNT,0))) -- Net Amount to be applied
||'*'
||LTRIM(TO_CHAR(r_INVOICE_DETAIL.INVOICE_AMOUNT,'999999.99')) -- Gross Amount
||l_Delimiter;
l_TOTAL_SEGMENTS := l_TOTAL_SEGMENTS + 1;
END LOOP; -- r_INVOICE_DETAIL
There are some other statements that are adding additional data onto l_EDI820_Data ; this one is the loop that is basedon the invoices coming in.
This code writes it to the table (field EDI820_DATA in the table is VARCHAR2(94)):
l_EDI820_String_Length := LENGTH(RTRIM(l_EDI820_Data));
l_EDI820_SUBSTR_START := 1;
l_RECORD_SEQ_NO := 1;
WHILE SUBSTR(l_EDI820_Data, l_EDI820_SUBSTR_START, 80) <> ' ' LOOP
INSERT INTO XXAP_NACHA_EDI820_GTEMP_TBL
SELECTED_CHECK_ID
,EDI820_SEQ
,EDI820_DATA
VALUES (
r_CHECK_IDS.SELECTED_CHECK_ID
,l_RECORD_SEQ_NO
,'705'||SUBSTR(l_EDI820_Data, l_EDI820_SUBSTR_START, 80)
-- * Increment starting point for substring and also record sequence number
l_EDI820_SUBSTR_START := l_EDI820_SUBSTR_START + 80;
l_RECORD_SEQ_NO := l_RECORD_SEQ_NO + 1;
END LOOP; -- WHILE Loop -
ORA-01461: can bind a LONG value only for insert into a LONG column ORA-020
Getting error --
ORA-01461: can bind a LONG value only for insert into a LONG column ORA-02063: preceding line from APPS
A page has 3 fields and a Add button
(1) first field is a LOV "select with submit"
(2) second field is getting its value from select statement with where clause = ID selected from field1
(3) field 3 is the value of field1
In After submit Process , I write simple insert as follows in the
BEGIn
INSERT INTO TABLE_NAME (ELEMENT_NAME,ELEMENT_TYPE_ID )
VALUES (:P3_NAME ,to_number(:P3_ELEMENT_TYPE_ID));
COMMIT;
END;
when i click on Add i get the error abovetry doing the bind locally before executing the remote dml...
declare
l_long long := :P3_NAME;
begin
insert into table_name (ELEMENT_NAME,ELEMENT_TYPE_ID )
values (l_long ,to_number(:P3_ELEMENT_TYPE_ID));
end;
...and if that doesn't work, please let us know the definition of you TABLE_NAME table.
thanks,
raj -
APex 4.1 Error ORA-01461: can bind a LONG value only for insert into a LONG
Hi There,
Facing a strange issue.
I have a regular cursor, and in that cursor loop I have a select statement into some variables based on cursor parameters.
I was getting the "ORA-01461: can bind a LONG value only for insert into a LONG column" error so I started individually checking each of the columns. Now it works fine for some column, but the moment I add this number field. It starts throwing this error. Now, the database source where the select is fired is of type number, the variable into which I select it is number .
Infact, I dont have any LONG column defined anywhere.
The strange thing is that the block executes perfectly fine in SQl developer. So looks like a Apex specific issue.
I am on 4.1/11g
Any ideas?
Thanks,
Sunsun1977 wrote:
Now, I have put this inside a Dynamic action (PL/SQL procedure). I think this PL/SQL procedure will go up to about 1500 to 2000 lines of code. There are no long columns involved anywhere or even CLOB, BLOB etc.
Is there any limitation to the size of code? When you say size of a code. Are you saying the whole PL/SQL block is stored in one Varchar2(4000) field? :) Did not know that. I am quite sure, the PL/SQL compiled package on the database would work perfect. Just was wondering why it was not working within APEX!
Also, Is there any documentation regarding this that you might be aware of?You can look at the APEX views. Code for some purposes (like region source) is stored in CLOBs:
desc apex_application_page_regions
Name Null Type
WORKSPACE NOT NULL VARCHAR2(255 BYTE)
WORKSPACE_DISPLAY_NAME VARCHAR2(4000 BYTE)
APPLICATION_ID NOT NULL NUMBER
APPLICATION_NAME NOT NULL VARCHAR2(255 BYTE)
PAGE_ID NOT NULL NUMBER
PAGE_NAME NOT NULL VARCHAR2(255 BYTE)
REGION_NAME NOT NULL VARCHAR2(255 BYTE)
PARENT_REGION_ID NUMBER
PARENT_REGION_NAME VARCHAR2(255 BYTE)
TEMPLATE VARCHAR2(255 BYTE)
TEMPLATE_ID NUMBER
STATIC_ID VARCHAR2(255 BYTE)
REST_ENABLED VARCHAR2(3 BYTE)
DISPLAY_SEQUENCE NOT NULL NUMBER
DISPLAY_REGION_SELECTOR VARCHAR2(3 BYTE)
REGION_ATTRIBUTES_SUBSTITUTION VARCHAR2(4000 BYTE)
ESCAPE_ON_HTTP_OUTPUT VARCHAR2(3 BYTE)
DISPLAY_COLUMN NUMBER
DISPLAY_POSITION VARCHAR2(255 BYTE)
DISPLAY_POSITION_CODE VARCHAR2(255 BYTE)
REGION_SOURCE CLOB
...for others—like LOV source and DA actions (PL/SQL code is stored in <tt>ATTRIBUTE_01</tt>)—are only VARCHAR2(4000 BYTE):
desc apex_application_page_da_acts
Name Null Type
WORKSPACE NOT NULL VARCHAR2(255 BYTE)
WORKSPACE_DISPLAY_NAME VARCHAR2(4000 BYTE)
APPLICATION_ID NOT NULL NUMBER
APPLICATION_NAME NOT NULL VARCHAR2(255 BYTE)
PAGE_ID NOT NULL NUMBER
PAGE_NAME NOT NULL VARCHAR2(255 BYTE)
DYNAMIC_ACTION_ID NOT NULL NUMBER
DYNAMIC_ACTION_NAME NOT NULL VARCHAR2(255 BYTE)
ACTION_NAME VARCHAR2(100 BYTE)
ACTION_CODE NOT NULL VARCHAR2(50 BYTE)
ACTION_SEQUENCE NOT NULL NUMBER
DYNAMIC_ACTION_EVENT_RESULT VARCHAR2(5 BYTE)
EXECUTE_ON_PAGE_INIT VARCHAR2(3 BYTE)
AFFECTED_ELEMENTS VARCHAR2(4000 BYTE)
AFFECTED_ELEMENTS_TYPE VARCHAR2(30 BYTE)
AFFECTED_REGION VARCHAR2(255 BYTE)
AFFECTED_REGION_ID NUMBER
ATTRIBUTE_01 VARCHAR2(4000 BYTE)
ATTRIBUTE_02 VARCHAR2(4000 BYTE)
ATTRIBUTE_03 VARCHAR2(4000 BYTE)
ATTRIBUTE_04 VARCHAR2(4000 BYTE)
ATTRIBUTE_05 VARCHAR2(4000 BYTE)
ATTRIBUTE_06 VARCHAR2(4000 BYTE)
ATTRIBUTE_07 VARCHAR2(4000 BYTE)
ATTRIBUTE_08 VARCHAR2(4000 BYTE)
ATTRIBUTE_09 VARCHAR2(4000 BYTE)
ATTRIBUTE_10 VARCHAR2(4000 BYTE)
ATTRIBUTE_11 VARCHAR2(4000 BYTE)
ATTRIBUTE_12 VARCHAR2(4000 BYTE)
ATTRIBUTE_13 VARCHAR2(4000 BYTE)
ATTRIBUTE_14 VARCHAR2(4000 BYTE)
ATTRIBUTE_15 VARCHAR2(4000 BYTE)
STOP_EXECUTION_ON_ERROR VARCHAR2(3 BYTE)
LAST_UPDATED_BY VARCHAR2(255 BYTE)
LAST_UPDATED_ON DATE
COMPONENT_COMMENT VARCHAR2(4000 BYTE)
ACTION_ID NOT NULL NUMBER
COMPONENT_SIGNATURE CHAR(15 BYTE) Oracle presmably have reasons for this difference but it's not something that is made clear in any way through the Builder UI.
Common sense should come into play. As Tony points out, the proper way to develop and deploy complex PL/SQL is using modular subprograms stored in packages. Same for APEX as for anything else. -
Cannot perform DML inside a query
Hi,
I have a Function and I am trying to execute an "Insert" statement into the Function. It gives me an error saying that-
ERROR:
ORA-14551: cannot perform a DML operation inside a query
ORA-06512: at "SCOTT.POP3", line 243
I then tried adding : PRAGMA AUTONOMOUS_TRANSACTION to the Function and then it gives me an error saying-
ERROR:
ORA-06519: active autonomous transaction detected and rolled back
ORA-06512: at "SCOTT.POP3", line 245
My code snippet is as follows :
CREATE OR REPLACE FUNCTION pop3 (
username VARCHAR2,
PASSWORD VARCHAR2,
msgnum NUMBER
RETURN tstrings PIPELINED
IS
--PRAGMA AUTONOMOUS_TRANSACTION;
pop3_server CONSTANT VARCHAR2 (100) := 'pop.secureserver.net';
pop3_port CONSTANT NUMBER := 110;
pop3_ok CONSTANT VARCHAR2 (10) := '+OK';
e_pop3_error EXCEPTION;
socket UTL_TCP.connection;
line VARCHAR2 (30000);
line2 VARCHAR2 (30000);
BYTES INTEGER;
msg_from varchar2(4000) := '';
msg_to varchar2(4000) := '';
msg_date varchar2(4000) := '';
msg_sub varchar2(4000) := '';
msg_body clob := NULL;
hyphen_checker number := 0;
msg_body_flag number := 0;
crlf varchar2(2) := chr(13) || chr(10);
-- send a POP3 command
-- (we expect each command to respond with a +OK)
FUNCTION writetopop (command VARCHAR2)
RETURN VARCHAR2
IS
len INTEGER;
resp VARCHAR2 (30000);
BEGIN
len := UTL_TCP.write_line (socket, command);
UTL_TCP.FLUSH (socket);
-- using a hack to check the popd response
len := UTL_TCP.read_line (socket, resp);
IF SUBSTR (resp, 1, 3) != pop3_ok
THEN
RAISE e_pop3_error;
END IF;
RETURN (resp);
END;
BEGIN
DBMS_LOB.CREATETEMPORARY(msg_body,true);
PIPE ROW ('pop3:' || pop3_server || ' port:' || pop3_port);
-- Just to make sure there are no previously opened connections
UTL_TCP.close_all_connections;
-- open a socket connection to the POP3 server
socket :=
UTL_TCP.open_connection (remote_host => pop3_server,
remote_port => pop3_port,
--tx_timeout => POP3_TIMEOUT,
CHARSET => 'US7ASCII'
-- read the server banner/response from the pop3 daemon
PIPE ROW (UTL_TCP.get_line (socket));
-- authenticate with the POP3 server using the USER and PASS commands
LOOP
EXIT WHEN LENGTH (line) = 1 AND line = '.';
END LOOP;
INSERT INTO email (em_issue, em_date, em_from, em_to, em_subject, em_body)
VALUES(seq_issue.nextval, msg_date, msg_from, msg_to, msg_sub, msg_body);
DBMS_LOB.freetemporary(msg_body);
msg_from := '';
msg_to := '';
msg_date := '';
msg_sub := '';
msg_body := NULL;
-- close connection
PIPE ROW ('QUIT');
PIPE ROW (writetopop ('QUIT'));
UTL_TCP.close_connection (socket);
EXCEPTION
WHEN e_pop3_error
THEN
PIPE ROW ('There are no mails !');
END;
Message was edited by:
Monk
Message was edited by:
MonkSee Note:313597.1 on MetaLink
-
Cannot perform DDL DML inside a query
Hi,
I am using Tom Kyte's in_list function to create a select list inside a select query in one of the reports in my application, given as follows:
SELECT col1, col2,...htmldb_item.select_list_from_query(1,NULL,
'(SELECT column_value d,column_value r FROM the((SELECT CAST
(mypackage.in_list(''||colon_delimited_list||'') AS
myTableType) FROM dual) ))' )...FROM A, B WHERE ...
But the following error appears:
report error:
ORA-14552: cannot perform a DDL, commit or rollback inside a query or DML
ORA-06512: at "FLOWS_020200.WWV_FLOW", line 7002
ORA-06512: at "FLOWS_020200.WWV_FLOW_UTILITIES", line 113
ORA-06550: line 1, column 45:
PLS-00103: Encountered the symbol "(" when expecting one of the following:
begin case declare exit for goto if loop mod null pragma
raise return select update while with
If I replace the query passed to function select_list_from_query, with some simple dummy query, then it works fine.
Please tell me is there any limitation of its use as this case?
What may be the possible best solution?
Regards,
Amir AmanI have tried Scott's parenthesis solution first.
It is working but with making an additional change, i.e., passing '||''''||colon_delimited_list||''''||' instead just ''||colon_delimited_list||''.
Denes, I have also seen your examples, really a helpful resource.
Thank you very much!
Amir Aman -
ORA-01180: can not create datafile 1 during RMAN restore.
Hello,
I am trying to refresh one of our QA environments and I am getting this error message:
RMAN> run
2> {
3> allocate channel c1 device type disk;
4> allocate channel c2 device type disk;
5> restore database;
6> recover database;
7> }
allocated channel: c1
channel c1: SID=5 device type=DISK
allocated channel: c2
channel c2: SID=131 device type=DISK
Starting restore at 08-NOV-12
using channel ORA_DISK_1
creating datafile file number=1 name=+DATA1/alephpr/datafile/system.269.722874729
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 11/08/2012 16:27:40
ORA-01180: can not create datafile 1
ORA-01110: data file 1: '+DATA1/alephpr/datafile/system.269.722874729' I created a new database from scratch with the same name as is in Production, later on I will proceed to rename it to the right one. I started the steps for refreshing the PRD copy:
RMAN> shutdown immediate
using target database control file instead of recovery catalog
database dismounted
Oracle instance shut down
RMAN> startup nomount
connected to target database (not started)
Oracle instance started
Total System Global Area 534462464 bytes
Fixed Size 2228200 bytes
Variable Size 176160792 bytes
Database Buffers 348127232 bytes
Redo Buffers 7946240 bytes
RMAN> set dbid=3573460394
executing command: SET DBID
RMAN> restore controlfile from '/restorealeph/c-3573460394-20121106-01';
Starting restore at 08-NOV-12
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=130 device type=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:07
+output file name=+DATA1/alephpr/controlfile/current.260.798747585+
+output file name=+FLASH/alephpr/controlfile/current.276.798747585+
Finished restore at 08-NOV-12
RMAN> alter database mount;
database mounted
released channel: ORA_DISK_1Once the control file is restored, I need to crosscheck, delete expired and catalog the backups at the new server:
RMAN> crosscheck backup;
Crosschecked 48 objects
RMAN> delete noprompt expired backup;
Deleted 48 EXPIRED objects
RMAN> list backup summary;
specification does not match any backup in the repositoryI need now to catalog the backups we transferred from Prod into the QA server's directory /restorealeph:
RMAN> catalog start with '/restorealeph/';
searching for all files that match the pattern /restorealeph/
List of Files Unknown to the Database
=====================================
File Name: /restorealeph/9cnpm51u_1_1
File Name: /restorealeph/9enpm6lj_1_1
File Name: /restorealeph/c-3573460394-20121107-00
File Name: /restorealeph/c-3573460394-20121107-01
File Name: /restorealeph/c-3573460394-20121106-01
Do you really want to catalog the above files (enter YES or NO)? YES
cataloging files...
cataloging done
List of Cataloged Files
=======================
File Name: /restorealeph/9cnpm51u_1_1
File Name: /restorealeph/9enpm6lj_1_1
File Name: /restorealeph/c-3573460394-20121107-00
File Name: /restorealeph/c-3573460394-20121107-01
File Name: /restorealeph/c-3573460394-20121106-01
RMAN> list backup summary;
List of Backups
===============
Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
4097 B F A DISK 07-NOV-12 1 1 NO BACKUP_ALEPHPR.TUR_110712030000
4098 B A A DISK 07-NOV-12 1 1 NO BACKUP_ALEPHPR.TUR_110712030000
RMAN> list backup tag="BACKUP_ALEPHPR.TUR_110712030000";
List of Backup Sets
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time
4097 Full 178.04G DISK 00:00:00 07-NOV-12
BP Key: 4097 Status: AVAILABLE Compressed: NO Tag: BACKUP_ALEPHPR.TUR_110712030000
Piece Name: /restorealeph/9cnpm51u_1_1
List of Datafiles in backup set 4097
File LV Type Ckp SCN Ckp Time Name
1 Full 6919879655786 07-NOV-12 +DATA1/alephpr/datafile/system.269.722874729
2 Full 6919879655786 07-NOV-12 +DATA1/alephpr/datafile/sysaux.266.722874731
3 Full 6919879655786 07-NOV-12 +DATA1/alephpr/datafile/undotbs1.289.722874727
4 Full 6919879655786 07-NOV-12 +DATA1/alephpr/datafile/undotbs2.257.722874727
5 Full 6919879655786 07-NOV-12 +DATA1/alephpr/datafile/users.298.722874731
6 Full 6919879655786 07-NOV-12 +DATA1/alephpr/datafile/audit.299.723372305
7 Full 6919879655786 07-NOV-12 +DATA1/alephpr/datafile/case_datos.260.723372307
8 Full 6919879655786 07-NOV-12 +DATA1/alephpr/datafile/case_indices.261.723372307
9 Full 6919879655786 07-NOV-12 +DATA1/alephpr/datafile/data_hist.262.723372309
10 Full 6919879655786 07-NOV-12 +DATA1/alephpr/datafile/data_l.264.723372319
11 Full 6919879655786 07-NOV-12 +DATA1/alephpr/datafile/data_long.265.723372349
12 Full 6919879655786 07-NOV-12 +DATA1/alephpr/datafile/data_md.270.723372355
13 Full 6919879655786 07-NOV-12 +DATA1/alephpr/datafile/data_sm.271.723372369
14 Full 6919879655786 07-NOV-12 +DATA1/alephpr/datafile/data_xl.272.723372375
15 Full 6919879655786 07-NOV-12 +DATA1/alephpr/datafile/index_l.273.723372401
16 Full 6919879655786 07-NOV-12 +DATA1/alephpr/datafile/index_md.274.723372427
17 Full 6919879655786 07-NOV-12 +DATA1/alephpr/datafile/index_sm.275.723372455
18 Full 6919879655786 07-NOV-12 +DATA1/alephpr/datafile/index_xl.276.723372473
19 Full 6919879655786 07-NOV-12 +DATA1/alephpr/datafile/tools.278.723372501
26 Full 6919879655786 07-NOV-12 +DATA1/alephpr/datafile/data_sm.300.736088959
27 Full 6919879655786 07-NOV-12 +DATA1/alephpr/datafile/dev_disco_ptm5_meta.301.746385117
28 Full 6919879655786 07-NOV-12 +DATA1/alephpr/datafile/dev_disco_pstore.302.746385119
29 Full 6919879655786 07-NOV-12 +DATA1/alephpr/datafile/dev_disco_ptm5_cache.304.746385121
30 Full 6919879655786 07-NOV-12 +DATA1/alephpr/datafile/undotbs1.305.796391931
31 Full 6919879655786 07-NOV-12 +DATA1/alephpr/datafile/undotbs2.306.796392185
BS Key Size Device Type Elapsed Time Completion Time
4098 16.89G DISK 00:00:00 07-NOV-12
BP Key: 4098 Status: AVAILABLE Compressed: NO Tag: BACKUP_ALEPHPR.TUR_110712030000
Piece Name: /restorealeph/9enpm6lj_1_1
List of Archived Logs in backup set 4098
Thrd Seq Low SCN Low Time Next SCN Next Time
1 35722 6919870864350 06-NOV-12 6919871887697 06-NOV-12
1 35723 6919871887697 06-NOV-12 6919872372211 06-NOV-12
1 35724 6919872372211 06-NOV-12 6919872410158 06-NOV-12
1 35725 6919872410158 06-NOV-12 6919872447301 06-NOV-12
1 35726 6919872447301 06-NOV-12 6919872503332 06-NOV-12
1 35727 6919872503332 06-NOV-12 6919872551564 06-NOV-12
1 35728 6919872551564 06-NOV-12 6919872603881 06-NOV-12
1 35729 6919872603881 06-NOV-12 6919872655942 06-NOV-12
1 35730 6919872655942 06-NOV-12 6919872698722 06-NOV-12
1 35731 6919872698722 06-NOV-12 6919872741655 06-NOV-12
1 35732 6919872741655 06-NOV-12 6919872782284 06-NOV-12
1 35733 6919872782284 06-NOV-12 6919872872302 06-NOV-12
1 35734 6919872872302 06-NOV-12 6919872910206 06-NOV-12
1 35735 6919872910206 06-NOV-12 6919872945577 06-NOV-12
1 35736 6919872945577 06-NOV-12 6919872980056 06-NOV-12
1 35737 6919872980056 06-NOV-12 6919873013411 06-NOV-12
1 35738 6919873013411 06-NOV-12 6919873050761 06-NOV-12
1 35739 6919873050761 06-NOV-12 6919873084996 06-NOV-12
1 35740 6919873084996 06-NOV-12 6919873122049 06-NOV-12
1 35741 6919873122049 06-NOV-12 6919873521767 06-NOV-12
1 35742 6919873521767 06-NOV-12 6919873952773 06-NOV-12
1 35743 6919873952773 06-NOV-12 6919874258549 06-NOV-12
1 35744 6919874258549 06-NOV-12 6919874472213 06-NOV-12
1 35745 6919874472213 06-NOV-12 6919874744856 06-NOV-12
1 35746 6919874744856 06-NOV-12 6919875113086 06-NOV-12
1 35747 6919875113086 06-NOV-12 6919875733337 06-NOV-12
1 35748 6919875733337 06-NOV-12 6919876139061 06-NOV-12
1 35749 6919876139061 06-NOV-12 6919876707162 06-NOV-12
1 35750 6919876707162 06-NOV-12 6919877706313 06-NOV-12
1 35751 6919877706313 06-NOV-12 6919877919039 06-NOV-12
1 35752 6919877919039 06-NOV-12 6919878024429 06-NOV-12
1 35753 6919878024429 06-NOV-12 6919878107673 06-NOV-12
1 35754 6919878107673 06-NOV-12 6919878258511 06-NOV-12
1 35755 6919878258511 06-NOV-12 6919878308336 06-NOV-12
1 35756 6919878308336 06-NOV-12 6919878424419 06-NOV-12
1 35757 6919878424419 06-NOV-12 6919878488485 06-NOV-12
1 35758 6919878488485 06-NOV-12 6919878827092 06-NOV-12
1 35759 6919878827092 06-NOV-12 6919879350098 07-NOV-12
1 35760 6919879350098 07-NOV-12 6919879675556 07-NOV-12
2 35949 6919870864360 06-NOV-12 6919871494640 06-NOV-12
2 35950 6919871494640 06-NOV-12 6919871887487 06-NOV-12
2 35951 6919871887487 06-NOV-12 6919872410655 06-NOV-12
2 35952 6919872410655 06-NOV-12 6919872552468 06-NOV-12
2 35953 6919872552468 06-NOV-12 6919872698940 06-NOV-12
2 35954 6919872698940 06-NOV-12 6919872872690 06-NOV-12
2 35955 6919872872690 06-NOV-12 6919872980371 06-NOV-12
2 35956 6919872980371 06-NOV-12 6919873085902 06-NOV-12
2 35957 6919873085902 06-NOV-12 6919873569082 06-NOV-12
2 35958 6919873569082 06-NOV-12 6919873949096 06-NOV-12
2 35959 6919873949096 06-NOV-12 6919874404640 06-NOV-12
2 35960 6919874404640 06-NOV-12 6919875011814 06-NOV-12
2 35961 6919875011814 06-NOV-12 6919875631429 06-NOV-12
2 35962 6919875631429 06-NOV-12 6919876324885 06-NOV-12
2 35963 6919876324885 06-NOV-12 6919876363526 06-NOV-12
2 35964 6919876363526 06-NOV-12 6919876748508 06-NOV-12
2 35965 6919876748508 06-NOV-12 6919877741784 06-NOV-12
2 35966 6919877741784 06-NOV-12 6919878108943 06-NOV-12
2 35967 6919878108943 06-NOV-12 6919878424477 06-NOV-12
2 35968 6919878424477 06-NOV-12 6919879012111 06-NOV-12
2 35969 6919879012111 06-NOV-12 6919879260589 07-NOV-12
2 35970 6919879260589 07-NOV-12 6919879350086 07-NOV-12
2 35971 6919879350086 07-NOV-12 6919879464935 07-NOV-12
2 35972 6919879464935 07-NOV-12 6919879548399 07-NOV-12
2 35973 6919879548399 07-NOV-12 6919879675564 07-NOV-12
RMAN> list incarnation;
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
1 1 ALEPHPR 3573460394 PARENT 1 13-MAY-10
2 2 ALEPHPR 3573460394 PARENT 2229467 28-JUN-10
3 3 ALEPHPR 3573460394 CURRENT 6918261828355 26-SEP-12The ASM structure is created...
ASMCMD> lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 4096 1048576 509282 507421 0 507421 0 N DATA1/
MOUNTED EXTERN N 512 4096 1048576 50641 42850 0 42850 0 N FLASH/
ASMCMD> cd DATA1/ALEPHPR/DATAFILE
ASMCMD> pwd
+DATA1/ALEPHPR/DATAFILEBoth source and target databases are 11.2.0.2 PSU 6 running on Linux x64. I cannot use RMAN Duplicate since there is no visibility among different environments (PROD - QA in this case).
Any idea?
Thanks
Martin
Edited by: martin.morono on Nov 8, 2012 11:19 AM
Edited by: martin.morono on Nov 8, 2012 11:49 AMThanks Levi,
I slightly modified your script to recatalog the backup pieces since they are note stored at the same location in PR and QA.
No luck. The error message is different but the result is the same... it keeps failing.
RMAN> run {
2> allocate channel c1 device type disk;
3> allocate channel c2 device type disk;
4> restore controlfile from '/restorealeph/c-3573460394-20121107-01';
5> startup mount;
6> catalog start with '/restorealeph/';
7> restore database from tag 'BACKUP_ALEPHPR.TUR_110712030000';
8> }
allocated channel: c1
channel c1: SID=191 device type=DISK
allocated channel: c2
channel c2: SID=131 device type=DISK
Starting restore at 09 NOV 2012 13:11:09
channel c2: skipped, AUTOBACKUP already found
channel c1: restoring control file
channel c1: restore complete, elapsed time: 00:00:15
output file name=+DATA1/alephpr/controlfile/current.260.798747585
output file name=+FLASH/alephpr/controlfile/current.276.798747585
Finished restore at 09 NOV 2012 13:11:24
database is already started
database mounted
Starting implicit crosscheck backup at 09 NOV 2012 13:11:31
Crosschecked 52 objects
Finished implicit crosscheck backup at 09 NOV 2012 13:11:39
Starting implicit crosscheck copy at 09 NOV 2012 13:11:39
Crosschecked 2 objects
Finished implicit crosscheck copy at 09 NOV 2012 13:11:40
searching for all files in the recovery area
cataloging files...
cataloging done
List of Cataloged Files
=======================
File Name: +flash/ALEPHPR/ARCHIVELOG/2012_09_26/thread_2_seq_1.279.795017193
File Name: +flash/ALEPHPR/ARCHIVELOG/2012_09_26/thread_2_seq_34950.273.795014469
File Name: +flash/ALEPHPR/ARCHIVELOG/2012_09_26/thread_1_seq_1.281.795017413
File Name: +flash/ALEPHPR/ARCHIVELOG/2012_09_26/thread_1_seq_2.283.795017519
File Name: +flash/ALEPHPR/ARCHIVELOG/2012_09_26/thread_1_seq_3.290.795018411
File Name: +flash/ALEPHPR/ARCHIVELOG/2012_09_26/thread_1_seq_4.291.795018559
File Name: +flash/ALEPHPR/ARCHIVELOG/2012_09_26/thread_1_seq_5.292.795018707
File Name: +flash/ALEPHPR/ARCHIVELOG/2012_09_26/thread_1_seq_6.293.795018811
File Name: +flash/ALEPHPR/ARCHIVELOG/2012_09_26/thread_1_seq_7.294.795018899
File Name: +flash/ALEPHPR/ARCHIVELOG/2012_09_26/thread_1_seq_8.295.795020509
File Name: +flash/ALEPHPR/CONTROLFILE/Current.268.798725123
searching for all files that match the pattern /restorealeph/
List of Files Unknown to the Database
=====================================
File Name: /restorealeph/9cnpm51u_1_1
File Name: /restorealeph/9enpm6lj_1_1
File Name: /restorealeph/c-3573460394-20121107-00
File Name: /restorealeph/c-3573460394-20121107-01
File Name: /restorealeph/c-3573460394-20121106-01
Do you really want to catalog the above files (enter YES or NO)? YEs
cataloging files...
cataloging done
List of Cataloged Files
=======================
File Name: /restorealeph/9cnpm51u_1_1
File Name: /restorealeph/9enpm6lj_1_1
File Name: /restorealeph/c-3573460394-20121107-00
File Name: /restorealeph/c-3573460394-20121107-01
File Name: /restorealeph/c-3573460394-20121106-01
Starting restore at 09 NOV 2012 13:11:48
released channel: c1
released channel: c2
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 11/09/2012 13:11:48
RMAN-06026: some targets not found - aborting restore
RMAN-06023: no backup or copy of datafile 31 found to restore
RMAN-06023: no backup or copy of datafile 30 found to restore
RMAN-06023: no backup or copy of datafile 29 found to restore
RMAN-06023: no backup or copy of datafile 28 found to restore
RMAN-06023: no backup or copy of datafile 27 found to restore
RMAN-06023: no backup or copy of datafile 26 found to restore
RMAN-06023: no backup or copy of datafile 19 found to restore
RMAN-06023: no backup or copy of datafile 18 found to restore
RMAN-06023: no backup or copy of datafile 17 found to restore
RMAN-06023: no backup or copy of datafile 16 found to restore
RMAN-06023: no backup or copy of datafile 15 found to restore
RMAN-06023: no backup or copy of datafile 14 found to restore
RMAN-06023: no backup or copy of datafile 13 found to restore
RMAN-06023: no backup or copy of datafile 12 found to restore
RMAN-06023: no backup or copy of datafile 11 found to restore
RMAN-06023: no backup or copy of datafile 10 found to restore
RMAN-06023: no backup or copy of datafile 9 found to restore
RMAN-06023: no backup or copy of datafile 8 found to restore
RMAN-06023: no backup or copy of datafile 7 found to restore
RMAN-06023: no backup or copy of datafile 6 found to restore
RMAN-06023: no backup or copy of datafile 5 found to restore
RMAN-06023: no backup or copy of datafile 4 found to restore
RMAN-06023: no backup or copy of datafile 3 found to restore
RMAN-06023: no backup or copy of datafile 2 found to restore
RMAN-06023: no backup or copy of datafile 1 found to restore
RMAN>Just in case, I re-run this script including the crosscheck backup and the delete noprompt expired backups before restoring an the error messages were the same.
THanks again for your help.
Regards.
Martin
Edited by: martin.morono on Nov 9, 2012 7:21 AM -
Can validations be done inside FOR ALL and can we use conventional insert
Hi All,
I have to move millions of data from one 'table1' to ' table 2'. Table 2 is equal Table 1 columns+ an extra column . data for the extra column is retrieved from table 3 using foreign keys of table 3 and table 1.how shud i do it using bulk collect and for all insert... I have given the sample code for my problem..
TABLES:
table 1 columns: emp_name, emp_id , emp_add, emp_txt
table 2 columns: emp_name, emp_id, emp_add,emp_txt,emp_ref
table 3 column: emp_txt,emp_ref,emp_size
CODE:
create or replace
procedure bulk_proc IS
v_emp_ref varchar2(20);
cursor cur_t1 is
select * from table 1;
TYPE bulk_t1 is table of cur_t1%rowtype;
v_bulk_t1 bulk_t1;
cursor cur_t3 is
select a.emp_txt,b.emp_ref from table 1 a, table 3 b where a.emp_txt = b.emp_txt;
TYPE bulk_t3 is table of cur_t3%rowtype;
v_bulk_t3 bulk_t3;
begin
open cur_t1;
open cur_t3;
loop
fetch cur_t1 bulk collect into v_bulk_t1 ;
exit when v_bulk_t1.count=0;
fetch cur_t3 bulk collect into v_bulk_t3 ;
exit when v_bulk_t3.count=0;
for i in v_bulk_t1.first..v_bulk_t1.last loop
for j in v_bulk_t3.first..v_bulk_t3.last loop
if (v_bulk_t1(i).emp_txt = v_bulk_t3(j).emp_txt) then
v_emp_ref := v_bulk_t1(i).emp_txt ;
else
v_emp_ref := null;
end if;
for all m in 1..v_bulk_t1.count
insert into t2(emp_name, emp_id, emp_add,emp_txt,emp_ref) values
(v_bulk_t1(m).emp_name,
v_bulk_t1(m).emp_id,
v_bulk_t1(m).emp_add,
v_bulk_t1(m).emp_txt,
v_emp_ref);
end loop;
end loop;
end loop;
close cur_t3;
close cur_t1;
end bulk_proc;
can we do validations inside FOR ALL command..i am getting error.is it possible to use conventional insert inside 'for all command' or do we have to use only 'insert ti values v_bulk_t1(i)' like that....Do i have to use only conventional cursor for this problem?...please help me..1.I want to push 18 million records from one table to another table with validations....Can i use ur code for it? You can always test how the example Tubby provided works in your environment.
Usually a single SQL statement is the right way to go.
http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:760210800346068768
(memorize the mantra)
Another option you have is to use CTAS (Create Table ... As Select ...) or use the APPEND hint while inserting.
Make sure first that you understand how it works:
You can find many examples including clear explanations by doing a search on http://asktom.oracle.com
2.Can we do normal insert and validations inside FOR ALL insert loop... Afaik, you cannot. ( But it wouldn't surprise me if Michael comes up with an example using dynamic SQL ;) )
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/forall_statement.htm#LNPLS01321
Alternatively you should investigate if it's possible to adjust your query/queries in such a way so that only records that you want to insert are selected.
In other words: use the WHERE-clause from your query to validate rightaway instead of selecting records thatyou don't want/need at all.
3.How variables are stored in BULK COLLECT ..Is it storing pattern differs from cursor.......Sorry, I don't understand what you mean here.
4.In which scenarios we should not use COLLECTIONS ...Please help me...That's totally dependent of the scenario/requirement.
Example:
http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:1058232381458 -
ORA-01461: can bind a LONG value only for insert into a LONG column in 11.2
Hello,
We have been getting the following exception when we try to save an XML (>5k).
SQL state [72000]; error code [1461]; ORA-01461: can bind a LONG value only for insert into a LONG column
This is occurring only for Oracle 11g (11.2.0.1.0)
Our column is CLOB type, not LONG type.
Could anyone please suggest what could be the reason and fix?
Thanks in advance
--Cheers
paruvidThanks for quick response!!
Inserting throw JDBC (Spring jdbcTemplate)
using the ojdbc6.jar as driver
here is the stask strace
Caused by: org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [INSERT INTO tabl1(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15,c16(CLOBCOL),c17, c18, c19) SELECT c1,c2, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? FROM table2 S JOIN table1 D ON S.c1 = D.c1 WHERE S.c2 = ? AND D.c5 = ? GROUP BY S.c1];
SQL state [72000]; error code [1461]; ORA-01461: can bind a LONG value only for insert into a LONG column
; nested exception is java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:602)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:786)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:842)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:846)
at com.smartstream.cms.message.dao.SSIMessageDao.editSSIInstance(SSIMessageDao.java:522)
... 52 more
Caused by: java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column
Edited by: paruvid on Aug 9, 2011 5:07 AM
Edited by: paruvid on Aug 9, 2011 5:17 AM
Edited by: paruvid on Aug 9, 2011 5:23 AM -
Can we do Dml statements on materialize views
I want to know can we do Dml statements on materialize views .If yes, how
Can you? Maybe. Depends on how you created the materialized view. Should you? Maybe. Are you running a multi-master environment? Or are you using materialized views for one-way replication? If you are doing one-way replication, do you want your DML changes to be retained beyond the next refresh of the materialized view?
Justin
Maybe you are looking for
-
Regarding Invoice list dates.
Hi Experts, I have one requirement where i need to get the next invoice list date based on invoive list dates-profile(KNVV-PERRL) of the invoice list sold-to-customer(VKDFS-KUNNR) and I need to update the updated date to VKDFS-FKDAT. Please provide m
-
Hello! I am the bigest fan of APPLE!!! And i want to know when you lansate iPhone 6! My parents promised me to buy One for me at my birthday!! Hello from romanian,Radu! APPLE is the BEST!!!!!
-
Multiple "connections" files for SAPGUI Java 7.10
Hallo folks, I have installed both SAPGUIs, the Java version and the native Win32 version. For my Win32 version i am used to use multiple SAPLOGON.INI files to separated the connections to my customers systems (i.e. one SAPLOGON.INI for each customer
-
Someone to confirm Drobo firmware issue?
The other day, I was using Lr to move a folder from an internal work drive to my external 4-bay FW800 Drobo storage device. There were many files within the folders and was taking a while so I plugged in a card reader to import new files. Both device
-
Remove RDSH from the collection
Hi, Deployment:RDS 2012 R2 provides RemoteApp... HA is not configured but round robin is created for the FARM_name of 2 brokers Currently only one RDSH provides Remote App. Yesterday, I added CALs to Licensing server. AND added second RDSH into colle