首页 > 解决方案 > 缺少等号

问题描述

以下代码失败ORA-00927: missing equal sign

if (countExceed > 0) then 
    quer :=
        'Update UID_RM_HIERARCHY I
            SET I.REVIEWER_UID IN
            (
                SELECT L.REVIEWER_UID
                  FROM UID_RM_HIERARCHY L
                 WHERE L.UNIQUE_ID  in (' || p_ID_list || ')
            )
      WHERE I.REVIEWER_UID in('||p_ID_list||')
        AND I.isdeleted=0';

    EXECUTE IMMEDIATE quer;

我应该改变什么来解决它?

标签: oracleplsql

解决方案


要使您的代码运行,您可以这样做:

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_list或它包含什么。

如需进一步帮助,您应该告诉我们:

  • 你的桌子是什么?
  • 它们包含什么?
  • p_ID_list 包含什么?
  • 你打算一步一步地处理这个列表吗?

推荐阅读