Oracle SP:PLS-00103:预期出现以下情况之一时遇到符号"`":


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开发人员中与普通语句(不在SP中(相同。

你能建议一下吗?

问题在于您必须将该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>

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

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

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

相关内容

  • 没有找到相关文章

最新更新