首页 > 解决方案 > 动态sql无效的关系运算符

问题描述

由于无效的关系运算符错误,我有以下匿名块,并且在执行立即 str 字符串之前失败。

不明白为什么。

SET SERVEROUT ON ;

DECLARE
   SRCE_SB_CATGRY_ID   VARCHAR2 (1000);
BEGIN
   FOR i
      IN (SELECT ISO_CNTRY_ID, X.COLUMN_NAME
            FROM iso_cntry I,
                 (SELECT DISTINCT COLUMN_NAME
                    FROM ALL_tab_cols@suplr_md_qa2
                   WHERE     table_name = 'TEMP_ARIBA'
                         AND COLUMN_NAME != 'SSC_ID') x
           WHERE ISO_CNTRY_DESC_TXT LIKE '' || COLUMN_NAME || '%')
   LOOP
      DECLARE
         str1   VARCHAR2 (10000)
            :=    ' SELECT DISTINCT ssc_id  '
               || ' FROM stddata_suplr.temp_ariba@suplr_md_qa2 '
               || ' WHERE '
               || ' '
               || i.column_name
               || ' = ''Y'' ';
         x      SYS_REFCURSOR;
      BEGIN
         OPEN x FOR str1;

         LOOP
            FETCH x INTO SRCE_SB_CATGRY_ID;

            EXIT WHEN x%NOTFOUND;



            NULL;
         END LOOP;
      END;
   END LOOP;

   END;

标签: sqloracleplsql

解决方案


驾驶中的这条线看起来不对:

WHERE ISO_CNTRY_DESC_TXT LIKE '' || COLUMN_NAME || '%'

在不连接前导引号的情况下尝试:

WHERE ISO_CNTRY_DESC_TXT LIKE COLUMN_NAME || '%'

推荐阅读