在sqlplus中, oracle 用/ 或者 ; 作为sql语句的终结符。 注意一个符号就可以终结! 而在plsql中, 终结符就只有/,因此如
begin
dbms_output.put_line('Hello!');
end;
这段代码不会运行。 而正确的写法是
begin
dbms_output.put_line('Hello!');
end;
/
之所以要把这个问题提出来, 是因为在项目中碰到很多sql脚本这么写, 如:
insert into ...;
/
update...;
/
如果在sql developer 或toad里运行不会有什么问题, 但如果在sqlplus中运行, 以上语句会运行两遍。 特别是insert, 如果表没有主码约束, 很可能插入两条重复记录。 而且这些脚本一般被dba运行于linux下, 工作于sqlplus的可能性极大。
所以在这些代码中我都用/终结.