You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL拼接查询语句中为约束名添加双引号失败,报错ORA-00923的技术咨询

解决Oracle SQL拼接约束名加双引号的语法问题

我来帮你搞定这个拼接SQL的问题,你遇到的错误主要是字符串拼接的语法逻辑出了问题:

问题根源

你的SQL里有两个关键错误导致了ORA-00923报错:

  • 误用了HTML转义字符",Oracle SQL并不识别这个符号,它会被当作普通乱码字符处理,直接打乱了拼接逻辑;
  • 语句末尾多了一个多余的单引号,导致SELECT的列表达式没有正确闭合,数据库无法识别FROM子句的位置。

正确的写法

在Oracle中,要在拼接的字符串里插入双引号,只需要把双引号放在一对单引号中(Oracle用单引号界定字符串常量)。修正后的SQL如下:

SELECT 'alter table ' || owner || '.' || table_name || ' disable constraint "' || constraint_name || '"'
FROM dba_constraints
WHERE owner IN ('TEST');

细节说明

  • 这里的'"'表示一个独立的双引号字符:前单引号开启字符串,中间是双引号,后单引号闭合字符串;
  • 拼接后生成的目标SQL会是这种格式:alter table TEST.MY_TABLE disable constraint "MY_CONSTRAINT";,完全满足你给约束名加双引号的需求;
  • 额外提醒:Oracle默认会把数据库对象名(比如owner、table_name)转成大写存储,所以WHERE owner IN ('TEST')用大写更稳妥,如果你的owner是创建时加了双引号的小写名称,那需要写成WHERE owner IN ("test")。

内容的提问来源于stack exchange,提问作者nick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 17:43:12