Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

getting error SQL Error : ORA-14551: cannot perform a DML operation inside a query

978485Sep 20 2013 — edited Sep 23 2013

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 query

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Oct 21 2013
Added on Sep 20 2013
2 comments
769 views