Oracle SP:PLS-00103:在预期以下情况之一时遇到符号“`”:

Posted

技术标签:

【中文标题】Oracle SP:PLS-00103:在预期以下情况之一时遇到符号“`”:【英文标题】:Oracle SP : PLS-00103: Encountered the symbol "`" when expecting one of the following: 【发布时间】:2020-06-16 10:50:29 【问题描述】:
EXECUTE IMMEDIATE 'UPDATE GDW_ARC_CDM.LND_DIM_GEO
SET DESCRIPTION_COLUMN = REPLACE( DESCRIPTION_COLUMN, '`', '''' )
WHERE CNTRY_ID         = 'KR'
AND SRC_ID             = 'KR_RET'
AND DESCRIPTION_COLUMN LIKE '%`%'';
     COMMIT;

我正在尝试在 Oracle SP 中添加上述语句,但出现以下错误,相同的查询在 SQL Developer 中与普通语句一样工作(不在 SP 中)。

你能推荐一下吗?

【问题讨论】:

【参考方案1】:

问题在于您必须将 UPDATE 括在单引号中(您所做的),但要注意该代码中的其他单引号。所有这些都必须“加倍”,或者 - 一个更简单、更易于阅读和维护的选项 - 使用 q-quoting 机制。

类似这样的:

SQL> select * From lnd_dim_geo;

DES CN SRC_ID
--- -- ------
x`y KR KR_RET

SQL> begin
  2    execute immediate q'[update lnd_dim_geo set description_column = replace(description_column, '`', '')
  3                         where cntry_id = 'KR' and src_id = 'KR_RET' and description_column like '%%']';
  4  end;
  5  /

PL/SQL procedure successfully completed.

SQL> select * From lnd_dim_geo;

DES CN SRC_ID
--- -- ------
xy  KR KR_RET

SQL>

【讨论】:

【参考方案2】:

如果这是您的原始查询,那么您为什么要使用动态查询。

您可以直接使用以下内容:

UPDATE LND_DIM_GEO
   SET
    DESCRIPTION_COLUMN = REPLACE(DESCRIPTION_COLUMN, '`', '')
 WHERE CNTRY_ID = 'KR'
   AND SRC_ID = 'KR_RET'
   AND DESCRIPTION_COLUMN LIKE '%%'

【讨论】:

以上是关于Oracle SP:PLS-00103:在预期以下情况之一时遇到符号“`”:的主要内容,如果未能解决你的问题,请参考以下文章

Oracle PL-SQL 函数出现错误 PLS-00103:在预期以下情况之一时遇到符号“SELECT”

Oracle - PLS-00103:触发器 - 文件结束错误

错误(30,11):PLS-00103:遇到符号更新错误

Oracle SQL PLS-00103 创建包体时出错

错误:PLS-00103:在预期以下情况之一时遇到符号“)”

PLS-00103:在预期以下情况之一时遇到符号“TEST_PKG”:;