Oracle 缺少等号

Oracle 缺少等号,oracle,plsql,Oracle,Plsql,以下代码与ORA-00927一起失败:缺少等号: 我应该更改什么来修复它?要使代码运行,可以执行以下操作: if (countExceed > 0) then quer := 'Update UID_RM_HIERARCHY I SET I.REVIEWER_UID = -- place always a "=" and no "IN" ( SELECT L.REVIEWER_UID

以下代码与ORA-00927一起失败:缺少等号:


我应该更改什么来修复它?

要使代码运行,可以执行以下操作:

if (countExceed > 0) then 
    quer :=
        'Update UID_RM_HIERARCHY I
            SET I.REVIEWER_UID = -- place always a "=" and no "IN"
            (
                SELECT L.REVIEWER_UID
                  FROM UID_RM_HIERARCHY L
                 WHERE L.UNIQUE_ID  in (' || p_ID_list || ')
                   AND ROWNUM = 1 -- This query has to give you a single value! Because of this we only select the first value (properbly wrong?!)
            )
      WHERE I.REVIEWER_UID in('||p_ID_list||')
        AND I.isdeleted=0';

    EXECUTE IMMEDIATE quer;
但我强烈建议你阅读一些教程。或者清楚地解释你在做什么。我仍然不确定你在用那些p_ID_列表做什么,或者它包含什么

如需进一步帮助,请告诉我们:

你们的桌子是什么? 它们包含什么? p_ID_列表包含哪些内容? 你打算一步一步地处理这个列表吗?
存储过程中的plsql块应为update x set y=z。“你已经知道了等号应该在哪里。我敢打赌,这会导致太多的行,”威廉。并不是说你的建议是错误的,但我认为OP是用来避免它的。查询使用L.UNIQUE_ID,它承诺唯一性,但是-它与P_ID_列表相比较,P_ID_列表建议相反,除非列表包含单个ID,否则不应该有in but=。这就是我害怕的原因。我同意代码还有很多其他的问题。我只是对错误消息发表评论。请在问题中添加代码,而不是在评论中。
if (countExceed > 0) then 
    quer :=
        'Update UID_RM_HIERARCHY I
            SET I.REVIEWER_UID = -- place always a "=" and no "IN"
            (
                SELECT L.REVIEWER_UID
                  FROM UID_RM_HIERARCHY L
                 WHERE L.UNIQUE_ID  in (' || p_ID_list || ')
                   AND ROWNUM = 1 -- This query has to give you a single value! Because of this we only select the first value (properbly wrong?!)
            )
      WHERE I.REVIEWER_UID in('||p_ID_list||')
        AND I.isdeleted=0';

    EXECUTE IMMEDIATE quer;