Cannot perform a DML operation inside a query

Dear all,
I have implemented the "Online Discussion Forum" of Steve Muench (Building Oracle XML Applications,ISBN:1-56592-691-9), and am trying to extend it by logging the queries and timing information inside the ForumSearch.Hits function (http://examples.oreilly.com/orxmlapp/orxmlapp_examples.zip).
That function is called as follow
SELECT ForumSearch.Hits(...) as HITS from DUAL
However, I am getting the ORA-14551.
That function opens a cursor and performs a select count() on a dynamic SQL, closes the cursor and returns the number of hits found.
The way i tried to extend it was to simply add the following line after the_cursor was closed.
insert into LOGGING values(the_count,response);
However, unfortunately I get the fatal error message
ORA-14551
I do understand that one shall not do an INSERT while doing a SELECT on the same table, however in this case I am doing a INSERT on another table ...
Puzzling enough, if I try to launch a DBMS_JOB for doing that insert I get a ORA-14551 as well.
I thought that by launching the DBMS_JOB I was going to uncouple the 2 events ...
Advice is appreciated.
Luca

As you discovered, Oracle will not allow you to directly manipulate the database within a select statement. Since the call to dbms_job actually inserts a row in a table, you just moved the DML to a different table. What you need to do is create a seperate procedure to do the logging, and call that in your function. Something like:
CREATE PROCEDURE logger (p_count IN NUMBER, p_reponse IN VARCHAR2) IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
   INSERT INTO logging VALUES (p_count, p_response);
   COMMIT;
END;then, your function would look something like:
CREATE FUNCTION counter RETURN NUMBER IS
l_count NUMBER;
l_response VARCHAR2(10);
BEGIN
   SELECT COUNT(*) INTO l_rval
   FROM t;
   logger(l_count,l_reponse);
   RETURN l_count;
END;TTFN
John

Similar Messages

  • "cannot perform a DML operation inside a query" error when using table func

    hello please help me
    i created follow table function when i use it by "select * from table(customerRequest_list);"
    command i receive this error "cannot perform a DML operation inside a query"
    can you solve this problem?
    CREATE OR REPLACE FUNCTION customerRequest_list(
    p_sendingDate varchar2:=NULL,
    p_requestNumber varchar2:=NULL,
    p_branchCode varchar2:=NULL,
    p_bankCode varchar2:=NULL,
    p_numberOfchekbook varchar2:=NULL,
    p_customerAccountNumber varchar2:=NULL,
    p_customerName varchar2:=NULL,
    p_checkbookCode varchar2:=NULL,
    p_sendingBranchCode varchar2:=NULL,
    p_branchRequestNumber varchar2:=NULL
    RETURN customerRequest_nt
    PIPELINED
    IS
    ob customerRequest_object:=customerRequest_object(
    NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
    condition varchar2(2000 char):=' WHERE 1=1 ';
    TYPE rectype IS RECORD(
    requestNumber VARCHAR2(32 char),
    branchRequestNumber VARCHAR2(32 char),
    branchCode VARCHAR2(50 char),
    bankCode VARCHAR2(50 char),
    sendingDate VARCHAR2(32 char),
    customerAccountNumber VARCHAR2(50 char),
    customerName VARCHAR2(200 char),
    checkbookCode VARCHAR2(50 char),
    numberOfchekbook NUMBER(2),
    sendingBranchCode VARCHAR2(50 char),
    numberOfIssued NUMBER(2)
    rec rectype;
    dDate date;
    sDate varchar2(25 char);
    TYPE curtype IS REF CURSOR; --RETURN customerRequest%rowtype;
    cur curtype;
    my_branchRequestNumber VARCHAR2(32 char);
    my_branchCode VARCHAR2(50 char);
    my_bankCode VARCHAR2(50 char);
    my_sendingDate date;
    my_customerAccountNumber VARCHAR2(50 char);
    my_checkbookCode VARCHAR2(50 char);
    my_sendingBranchCode VARCHAR2(50 char);
    BEGIN
    IF NOT (regexp_like(p_sendingDate,'^[[:digit:]]{4}/[[:digit:]]{2}/[[:digit:]]{2}$')
    OR regexp_like(p_sendingDate,'^[[:digit:]]{4}/[[:digit:]]{2}/[[:digit:]]{2}[[:space:]]{1}[[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2}$')) THEN
    RAISE_APPLICATION_ERROR(-20000,cbdpkg.get_e_m(-1,5));
    ELSIF (p_sendingDate IS NOT NULL) THEN
    dDate:=TO_DATE(p_sendingDate,'YYYY/MM/DD hh24:mi:ss','nls_calendar=persian');
    dDate:=trunc(dDate);
    sDate:=TO_CHAR(dDate,'YYYY/MM/DD hh24:mi:ss');
    condition:=condition|| ' AND ' || 'sendingDate='||'TO_DATE('''||sDate||''',''YYYY/MM/DD hh24:mi:ss'''||')';
    END IF;
    IF (p_requestNumber IS NOT NULL) AND (cbdpkg.isspace(p_requestNumber)=0) THEN
    condition:=condition|| ' AND ' || ' requestNumber='||p_requestNumber;
    END IF;
    IF (p_bankCode IS NOT NULL) AND (cbdpkg.isspace(p_bankCode)=0) THEN
    condition:=condition|| ' AND ' || ' bankCode='''||p_bankCode||'''';
    END IF;
    IF (p_branchCode IS NOT NULL) AND (cbdpkg.isspace(p_branchCode)=0) THEN
    condition:=condition|| ' AND ' || ' branchCode='''||p_branchCode||'''';
    END IF;
    IF (p_numberOfchekbook IS NOT NULL) AND (cbdpkg.isspace(p_numberOfchekbook)=0) THEN
    condition:=condition|| ' AND ' || ' numberOfchekbook='''||p_numberOfchekbook||'''';
    END IF;
    IF (p_customerAccountNumber IS NOT NULL) AND (cbdpkg.isspace(p_customerAccountNumber)=0) THEN
    condition:=condition|| ' AND ' || ' customerAccountNumber='''||p_customerAccountNumber||'''';
    END IF;
    IF (p_customerName IS NOT NULL) AND (cbdpkg.isspace(p_customerName)=0) THEN
    condition:=condition|| ' AND ' || ' customerName like '''||'%'||p_customerName||'%'||'''';
    END IF;
    IF (p_checkbookCode IS NOT NULL) AND (cbdpkg.isspace(p_checkbookCode)=0) THEN
    condition:=condition|| ' AND ' || ' checkbookCode='''||p_checkbookCode||'''';
    END IF;
    IF (p_sendingBranchCode IS NOT NULL) AND (cbdpkg.isspace(p_sendingBranchCode)=0) THEN
    condition:=condition|| ' AND ' || ' sendingBranchCode='''||p_sendingBranchCode||'''';
    END IF;
    IF (p_branchRequestNumber IS NOT NULL) AND (cbdpkg.isspace(p_branchRequestNumber)=0) THEN
    condition:=condition|| ' AND ' || ' branchRequestNumber='''||p_branchRequestNumber||'''';
    END IF;
    dbms_output.put_line(condition);
    OPEN cur FOR 'SELECT branchRequestNumber,
    branchCode,
    bankCode,
    sendingDate,
    customerAccountNumber ,
    checkbookCode ,
    sendingBranchCode
    FROM customerRequest '|| condition ;
    LOOP
    FETCH cur INTO my_branchRequestNumber,
    my_branchCode,
    my_bankCode,
    my_sendingDate,
    my_customerAccountNumber ,
    my_checkbookCode ,
    my_sendingBranchCode;
    EXIT WHEN (cur%NOTFOUND) OR (cur%NOTFOUND IS NULL);
    BEGIN
    SELECT requestNumber,
    branchRequestNumber,
    branchCode,
    bankCode,
    TO_CHAR(sendingDate,'yyyy/mm/dd','nls_calendar=persian'),
    customerAccountNumber ,
    customerName,
    checkbookCode ,
    numberOfchekbook ,
    sendingBranchCode ,
    numberOfIssued INTO rec FROM customerRequest FOR UPDATE NOWAIT;
    --problem point is this
    EXCEPTION
    when no_data_found then
    null;
    END ;
    ob.requestNumber:=rec.requestNumber ;
    ob.branchRequestNumber:=rec.branchRequestNumber ;
    ob.branchCode:=rec.branchCode ;
    ob.bankCode:=rec.bankCode ;
    ob.sendingDate :=rec.sendingDate;
    ob.customerAccountNumber:=rec.customerAccountNumber ;
    ob.customerName :=rec.customerName;
    ob.checkbookCode :=rec.checkbookCode;
    ob.numberOfchekbook:=rec.numberOfchekbook ;
    ob.sendingBranchCode:=rec.sendingBranchCode ;
    ob.numberOfIssued:=rec.numberOfIssued ;
    PIPE ROW(ob);
    IF (cur%ROWCOUNT>500) THEN
    CLOSE cur;
    RAISE_APPLICATION_ERROR(-20000,cbdpkg.get_e_m(-1,4));
    EXIT;
    END IF;
    END LOOP;
    CLOSE cur;
    RETURN;
    END;

    Now what exactly would be the point of putting a SELECT FOR UPDATE in an autonomous transaction?
    I think OP should start by considering why he has a function with an undesirable side effect in the first place.

  • 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

  • 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 query

    Some 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

  • Cannot perform dml operation inside a query

    I have created a function which does some dml opration.
    when I use it in a through a transformation operator, and execute the map,
    it throws the following error:
    cannot perform dml operation inside a query
    how to handle this?

    Hi,
    if you want to execute the dml within a mapping, use the pre or post mapping procress operator. Or use a sql*plus activity in the process flow.
    Regards,
    Carsten.

  • Cannot perform a dml statement within a query: ora-14551

    I'm trying to call my function from a SELECT statement, and I keep getting the error mentioned in the title of the thread.
    Could anybody help me out with this?
    HEre's my code:
    BEGIN
    DECLARE CURSOR cur_order IS
      SELECT idshopper, orderplaced
      FROM bb_basket
      WHERE idshopper=p_shopperid
      FOR UPDATE NOWAIT;
    BEGIN
    FOR rec_order IN cur_order LOOP
      IF rec_order.orderplaced=1 THEN lv_count_num:=lv_count_num+1;
      END IF;
      IF rec_order.orderplaced=0 THEN lv_count_num:=0;
      END IF;
    END LOOP;
    RETURN lv_count_num;
    END;
    END;
    SELECT idshopper, num_purch_sf(idshopper)
    FROM bb_shopper
    WHERE idshopper=23;

    And you probably want to rewrite this to a single query like this:
    select s.idshopper
         , nvl(sum(b.orderplaced),0)
      from bb_shopper s
         , bb_basket b
    where s.idshopper = b.idshopper (+)
       and s.idshopper = 23
    group by s.idshopperThis way you won't have extra code to maintain and you prevent the contextswitches from SQL to PL/SQL.
    Note: query untested
    Regards,
    Rob.
    Message was edited by:
    Rob van Wijk
    Looking closer at the original code, I see that your query doesn't have an order by and so the outcome of your function is undeterministic. Maybe my query is what you intended, but beware: my query won't necessarily yield the same result

  • 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

  • Error 58 The specified server cannot perform the requested operation

    Hello,
    I will try to explain the situation as brief as possible. Next to our current existing MDT environment (MDT2010 on Windows 2008 R2) we are no building a new system (MDT2013 on WIndows 2012 R2). We have multiple sites and the MDT deployment share is setup
    in DFRS share so every site is getting the same deployment information and replication is done automatically. This has been working firn for 3 years with the old system and also with the new environment it was working fine in our own subnet. But when after
    i have setup the remote MDT and WDS servers it is not working in these remote sites. The images are loading fine but for some reason the win PE is not connecting to the shares on the windows 2012 server in our site. When i manuualy connect from a remote win
    PE to our server i always get the error: system error 58 has occured. The specified server cannot perform the requested operation.
    I have been doing some troubleshooting and it seems i only got this issue when i connect from win PE 5.0 to a windows 2012 R2 server in a remote subnet.
    When i use win PE 5.0 and connect to a windows 2012 R2 share in the same subnet it connects fine. 
    When i use win PE 5.0 and connect to a windows 2008 R2 share in a remote subnet it connects fine
    When i use an older win PE and i connect to a windows 2012 R2 share in a remote subnet it connects fine
    When i use win PE 5.0 and connect to a windows 2012 R2 share in a remote subnet it does NOT connect and gives the above error
    The problem is that this problem also does not occure in Windows 7, after the machine was build by MDT and get into the OS i can connect without a problem to the windows 2012 R2 shares.
    Checking the event viewer on the 2012 R2 server that is hosting the shares i see that the following events are created:
    4624: An account was successfully logged on.
    Subject:
    Security ID:
    NULL SID
    Account Name:
    Account Domain:
    Logon ID:
    0x0
    Logon Type: 3
    Impersonation Level: Impersonation
    New Logon:
    Security ID:
    domain\username
    Account Name:
    username
    Account Domain: domain
    Logon ID:
    0x1F1FC0
    Logon GUID:
    {8e360e91-001b-c726-84a6-e7281a4bcac8}
    Process Information:
    Process ID:
    0x0
    Process Name:
    Network Information:
    Workstation Name:
    Source Network Address:
    x.x.x.x
    Source Port:
    60077
    Detailed Authentication Information:
    Logon Process:
    Kerberos
    Authentication Package:
    Kerberos
    Transited Services:
    Package Name (NTLM only):
    Key Length:
    0
    This event is generated when a logon session is created. It is generated on the computer that was accessed.
    The subject fields indicate the account on the local system which requested the logon. This is most commonly a service such as the Server service, or a local process such as Winlogon.exe or Services.exe.
    The logon type field indicates the kind of logon that occurred. The most common types are 2 (interactive) and 3 (network).
    The New Logon fields indicate the account for whom the new logon was created, i.e. the account that was logged on.
    The network fields indicate where a remote logon request originated. Workstation name is not always available and may be left blank in some cases.
    The impersonation level field indicates the extent to which a process in the logon session can impersonate.
    The authentication information fields provide detailed information about this specific logon request.
    - Logon GUID is a unique identifier that can be used to correlate this event with a KDC event.
    - Transited services indicate which intermediate services have participated in this logon request.
    - Package name indicates which sub-protocol was used among the NTLM protocols.
    - Key length indicates the length of the generated session key. This will be 0 if no session key was requested.
    5140: 
    A network share object was accessed.
    Subject:
    Security ID:
    domain\username
    Account Name:
    username
    Account Domain: domain
    Logon ID:
    0x1F1FC0
    Network Information:
    Object Type:
    File
    Source Address:
    x.x.x.x
    Source Port:
    60077
    Share Information:
    Share Name:
    \\*\Captures
    Share Path:
    \??\D:\Captures
    Access Request Information:
    Access Mask:
    0x1
    Accesses:
    ReadData (or ListDirectory)
    4634: 
    An account was logged off.
    Subject:
    Security ID:
    domain\username
    Account Name:
    username
    Account Domain: domain
    Logon ID:
    0x1F1FC0
    Logon Type: 3
    This event is generated when a logon session is destroyed. It may be positively correlated with a logon event using the Logon ID value. Logon IDs are only unique between reboots on the same computer.
    Anyone an idea why this is happening?

    Hi,
    We can refer to the following blog for MDT troubleshooting:
    http://blogs.technet.com/b/askcore/archive/2012/05/08/mdt-2010-amp-2012-my-deployment-failed-what-and-where-are-logs-i-should-review.aspx
    Best Regards,
    Vincent Wu
    Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.

  • "The specified server cannot perform the requested operation" when rpc from server 2003 to Windows 7

    I am having problems where all my Windows 2003 servers cannot rpc to 2 of my Windows 7 workstations, error message is "The specified server cannot perform the requested operation".
    All the machines are in workgroup environment.
    Windows 7 workstations: desk1, desk2, desk3, desk4, desk5, desk6
    Windows 2003 servers: server1, server2, server3, server4, server5
    Windows 2008 server: server6
    From any Windows 7 workstation I can rpc to any other machines,
    \\desk1\d$, no problem
    From any Windows 2003 server I can rpc to all the machines exception desk4 and desk5, they give the "The specified server cannot perform the requested operation". However, desk4 and desk5 can rpc to any other machines (including the Windows 2003
    servers), no problem
    From Windows 2008 rpc to desk4 and desk5 also no problem.
    I also have no problem rpc between any of the Windows 2003 servers,
    \\server2\d$ from server3, no problem.
    I turned off the firewall at desk5 and desk4, just to try, but didn't help, same problem. This show firewall is not the cause of the problem.
    Desk4 and Desk5 used to run Windows 2012 for 1 year and recently I downgraded them Windows 7 Professional x64. When they were running as Windows 2012, those Windows 2003 servers have no problem rpc to desk5 and desk4.
    The issue is thus lying between desk4 and desk5 with Windows 2003 only\
    Any suggestions?
    Valuable skills are not learned, learned skills aren't valuable.

    Hi,
    I found a related thread and a hotfix for similar issue:
    Problems Accessing Administrative Shares Remotely - Windows cannot access \\Servername\ShareName
    http://social.technet.microsoft.com/Forums/windowsserver/en-US/9807a799-bea3-46ad-92a5-732779135f98/problems-accessing-administrative-shares-remotely-windows-cannot-access-servernamesharename?forum=winserver8gen
    You cannot access an administrative share on a computer after you set the SrvsvcDefaultShareInfo registry entry to configure the default share permissions for a network share
    https://support.microsoft.com/kb/971277/en-us
    Also please check if it is caused by security program such as antivirus program. 
    If you have any feedback on our support, please send to [email protected]

  • Cannot perform cube view operation, null

    Hi There,
    Users use SmartView connect to the 11.1.1.3 cube, but get the following error:
    "Cannot perform cube view operation, null"
    Any advice?
    Thanks

    It is a stupid meanless message for the real issues. The users have suppress missing turned on on an intinal retrieve and nothing is returned. Turn off suppress missing in the options and the users should be fine.

  • 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 Aman

    I 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

  • 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:
    Monk

    See Note:313597.1 on MetaLink

  • DML Operations in Stored Function

    Hi,
    I have used Update Statement in a function. Which is giving an errror (ORA-14551: cannot perform a DML operation inside a query).
    Can I use DML operations in a stored function ?
    (I need help on locking master/transaction tables, i.e if a one user locks a master another user should not get modify access to the master/transactions).
    Thanks
    Ramesh Ganji

    Someone who obviously din't read my previous post in this thread. You should pay attention, programming is all about the details.
    ORA-14551: cannot perform a DML operation inside a query).Then it obviously does more than just "returns a Table Type object". Why are you doing DML in a function?
    PLS-00653: aggregate/table functions are not allowed in PL/SQL scopeWe can only call pipelined functions from SQL queries. So you'll have to ditch the DML or make it an autonomous transaction. Be very careful if you adopt the latter approach.
    Cheers, APC

  • ADF- PERFORMING DML OPERATIONS- VERY URGENT

    Dear All,
    i have an urgent requirement on ADF.
    i have not developed any page in ADF till now this is my first page so plz help Friends.
    Requirement is as follows:
    "I should create a page which should perform all DML operations (Insert, Update, Delete)".
    please specify step by step procedure for creating this plz help. very urbent friends.
    Thanks alot Friends.
    Regards,
    Raja.

    well user,
    here nothing to urgernt
    and *"no urgent."*
    user welcome this forums.
    you have passed 23 posts in this forums.
    you have to see this.
    Announcement: Please read this before you post
    https://forums.oracle.com/forums/ann.jspa?annID=56
    without any details. how can we help you. though.
    here you need.
    http://andrejusb.blogspot.in/2010/05/crud-operations-in-oracle-adf-11g-table.html
    http://andrejusb.blogspot.in/2009/11/crud-operations-in-jdeveloperadf-11g-r1.html

  • How to write DML operation in a function

    Hi
    Its very urgent for me.
    I am writing DML operation directly in a function and is being called from select statement, it is getting error as "DML Operations cannot be performed inside a query".
    How to write a DML operation inside a function.
    My objective is to call that function from select statement.
    Please help me out.
    Thankd

    No no no. You're committing after each row! soany
    other session running the same query will see the
    changes you're making. Your session will equallysee
    changes caused by running this query in those
    sessions.Other session, yes, but current session will only see
    the changes once it has completed the current
    statement. Otherwise my "rn" column would not have
    gone up sequentially in the above example. it would
    have gone
    1st row rn = 1 (all rows get updated by 1:-
    2,3,4,5,6,7,8,9,10,11)
    2nd row rn = 3 (all rows get update by 1:-
    3,4,5,6,7,8,9,10,11,12)
    3rd row rn = 5 (all rows get update by 1:-
    4,5,6,7,8,9,10,11,12,13)
    4th row rn = 7 (all rows get update by 1:-
    5,6,7,8,9,10,11,12,13,14)
    5th row rn = 9 (all rows get update by 1:-
    6,7,8,9,10,11,12,13,14,15)
    6th row rn = 11 (all rows get update by 1:-
    7,8,9,10,11,12,13,14,15,16)
    7th row rn = 13 (all rows get update by 1:-
    8,9,10,11,12,13,14,15,16,17)
    8th row rn = 15 (all rows get update by 1:-
    9,10,11,12,13,14,15,16,17,18)
    9th row rn = 17 (all rows get update by 1:-
    10,11,12,13,14,15,16,17,18,19)
    10th row rn = 19 (all rows get update by 1:-
    11,12,13,14,15,16,17,18,19,20)
    So the fact the commit happens each time the rows get
    updated, isn't effecting the currently running select
    statement.
    No, actually you DO see the other session changes. This is because it is AUTONOMOUS transaction, and this a function.
    Test by adding:
    create or replace function incvals return number as
    pragma autonomous_transaction;
    v_val number;
    begin
    update t set rn = rn + 1;
    select max(rn) into v_val from t;
    dbms_lock.sleep(1); --add this line
    commit;
    return v_val;
    end;
    And test in two sessions.
    You will NOT get sequential ascending.
    >
    Think about the effect of two parallel sessionsboth
    running this query at the same time, and ask isthis
    sensible?Gawd, no, of course not. Like I said, I'd never use
    this sort of thing myself. I'm just wondering what
    on earth the OP is trying to achieve.
    :)Glad to hear it.

Maybe you are looking for