Oracle报错无效的字符,Oracle SQL窗口连续执行insert语句报错:ORA-00911: 无效字符

今天在PL/SQL SQL窗口下中执行多条插入语句,实例如下:

c.sql

1 insert into t2 values('7','aa');

2 insert into t2 values('8','bb');

3 insert into t2 values('9','cc');

语句,符合都是符合规范的,于是直接执行上述语句,突然就提示ORA-00911: 无效字符,当时就纳闷了,于是就是检查报错的地方,发现也没问题,但是多条执行的时候报错,然后就单条执行那条报错的语句,居然成功执行。

同样的脚本我用command窗口执行,居然成功执行,也没有报上面的错误,这就很奇怪,于是就去网上查询了下,才发现其中的门道。

SQL窗口方法实际上是给SQL*PLUS提供了包含多个语句的块,可是却没有BEGIN...END扩起来,所以它不认了。

而command窗口使用@c.sql方法,SQL*PLUS读取该文件,按照sqlterminal进行语句的分割,然后逐句运行的,而不是作为一个块运行的。

结论:

当在SQL窗口执行多条DML语句时,一定要用begin。。。end;将你的语句块包裹起来,否则就不认;

当在Command窗口执行多条DML语句时,不需要用begin。。。end;将你的语句块包裹起来,因为它本身就是逐条执行DML语句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值