ORA-14551:使用立即执行时无法在查询错误内执行DML操作 [英] ORA-14551: cannot perform a DML operation inside a query error while using Execute immediate

查看:110
本文介绍了ORA-14551:使用立即执行时无法在查询错误内执行DML操作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

CREATE OR REPLACE FUNCTION XXCHR_UPDATE      (
                                                                P_SALESREP_ID          IN   NUMBER,
                                                                p_COLUMN_NAME           IN     VARCHAR2,
                                                                P_COLUMN_VALUE            IN   varchar2
                                                           )
   RETURN VARCHAR2

IS

   lv_dyn_sql                        VARCHAR2(2000):= NULL;

BEGIN


        lv_dyn_sql := 'UPDATE thirty_days
                SET attribute86 ='||p_COLUMN_NAME||',attribute87 ='||P_COLUMN_VALUE
                || 'WHERE SALESREP_ID = :1';     

    EXECUTE IMMEDIATE lv_dyn_sql using P_SALESREP_ID;

    return(1);



EXCEPTION
      WHEN OTHERS
      THEN
         dbms_output.put_line('Returning Error : '||SQLERRM);
         --lv_return_val:= 0;
     RETURN SQLERRM;

END XXCHR_UPDATE;

当我执行此函数时,它会返回错误

When I execute this function its returning error

ORA-14551

ORA-14551

请在此处建议

推荐答案

尝试修改您的陈述:

lv_dyn_sql := 'UPDATE thirty_days
                SET attribute86 ='||p_COLUMN_NAME||',attribute87 ='||P_COLUMN_VALUE
                || 'WHERE SALESREP_ID = :1';

lv_dyn_sql := 'UPDATE thirty_days
                SET attribute86 ='||p_COLUMN_NAME||',attribute87 ='||P_COLUMN_VALUE
                || 'WHERE SALESREP_ID ='||P_SALESREP_ID;  

当然:

EXECUTE IMMEDIATE lv_dyn_sql;

这篇关于ORA-14551:使用立即执行时无法在查询错误内执行DML操作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆