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

问题描述 投票:0回答:2
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中不适用)一起工作。

您能建议一下吗?

oracle oracle11g oracle-sqldeveloper plsqldeveloper pls-00103
2个回答
2
投票
问题实际上是您必须将UPDATE括在单引号中(您所做的事情),但要注意该代码中的其他单引号。所有这些都必须“加倍”,或者-使用更简单,更易于阅读和维护的选项-使用q引用机制。

类似这样的东西:

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>


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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.