问题描述
你好,汤姆,
在PL/SQL程序中,有没有一种方法可以不同地管理 “语义错误” 和 “语法错误”?
在集团 “例外” 中,我希望计算这类错误,我该怎么办?
我在文档中没有发现任何内容,我认为这两个错误都没有保留的数字,但也许我错了。
祝你愉快,
大卫·德
专家解答
如果语句符合SQL规则,则在语法上是正确的: 关键字拼写正确,位置正确等。
例如,以下的语法无效:
语义发生在具有有效语法的语句上。这验证了你所引用的对象是否真的存在!
例如,以下是语法上有效的SQL。但它引发了一个语义错误,因为数据库中没有名为a_table的对象!
在大多数情况下,您无需担心PL/SQL中的这种差异。只有在语法和语义上有效的情况下,您才能使用静态SQL编译程序。所以你不必担心异常处理,因为PL/SQL本身不会运行!
关键的例外是,如果你正在编写动态SQL。
但是即使在这里,我也不知道为什么您关心语法与语义之间的区别。无论哪种情况,你的程序都失败了。ORA错误将提供有关问题所在的详细信息。
例如,以下的语法无效:
slct * frm a_table; Unknown Command复制
语义发生在具有有效语法的语句上。这验证了你所引用的对象是否真的存在!
例如,以下是语法上有效的SQL。但它引发了一个语义错误,因为数据库中没有名为a_table的对象!
select * from a_table; ORA-00942: table or view does not exist复制
在大多数情况下,您无需担心PL/SQL中的这种差异。只有在语法和语义上有效的情况下,您才能使用静态SQL编译程序。所以你不必担心异常处理,因为PL/SQL本身不会运行!
关键的例外是,如果你正在编写动态SQL。
create table t ( c1 int ); insert into t values ( 1 ); commit; create or replace function f return int authid current_user as retval int; begin execute immediate 'select count(*) from not_a_real_table' into retval; return retval; end f; / select f from dual; ORA-00942: table or view does not exist create or replace function f return int authid current_user as retval int; begin execute immediate 'slct count(*) fr not_a_real_table' into retval; return retval; end f; / select f from dual; ORA-00900: invalid SQL statement复制
但是即使在这里,我也不知道为什么您关心语法与语义之间的区别。无论哪种情况,你的程序都失败了。ORA错误将提供有关问题所在的详细信息。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
751次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
645次阅读
2025-04-15 17:24:06
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
566次阅读
2025-04-20 10:07:02
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
518次阅读
2025-04-22 00:13:51
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
511次阅读
2025-04-17 17:02:24
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
497次阅读
2025-04-22 00:20:37
一页概览:Oracle GoldenGate
甲骨文云技术
479次阅读
2025-04-30 12:17:56
火焰图--分析复杂SQL执行计划的利器
听见风的声音
437次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
381次阅读
2025-04-15 14:48:05
OR+DBLINK的关联SQL优化思路
布衣
371次阅读
2025-05-05 19:28:36