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

PL/SQL执行查询报错ORA-00904:"\d+$"标识符无效求助

错误根因

Oracle 中双引号的作用是标识大小写敏感的数据库对象(如表名、列名),而非包裹字符串字面量。你语句中使用"\d+$"的写法会让 Oracle 将\d+$识别为列名查找,找不到对应对象就会抛出ORA-00904: "\d+$": invalid identifier错误。即使你修改了动态SQL外层的引号类型,内层正则规则仍然用双引号包裹,问题根源没有解决。

修复方案

Oracle 的字符串字面量必须用单引号包裹,当单引号嵌套在同样用单引号包裹的动态SQL语句中时,需要用两个连续的单引号做转义。修复后的语句如下:

EXECUTE IMMEDIATE 'select regexp_substr(table_name, ''\d+$'') result from user_tables where regexp_like(table_name, ''\d+$'')' INTO splitstring;

注意事项

如果符合正则匹配规则的表超过1张,上述语句会抛出ORA-01422: 实际返回的行数超出请求的行数错误,你可以添加行数限制只取第一条匹配结果:

EXECUTE IMMEDIATE 'select regexp_substr(table_name, ''\d+$'') result from user_tables where regexp_like(table_name, ''\d+$'') and rownum = 1' INTO splitstring;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:24:04