在Oracle SQL中,何时需要使用分号和斜杠?
本周,我们在我的公司就如何编写SQL脚本进行了一些讨论。
背景:我们的数据库是Oracle 10g(升级到11很快)。我们的DBA团队使用SQLPlus来将脚本部署到生产中。
现在,我们最近的部署失败了,因为它同时使用了分号和正斜杠(/
)。分号在每个语句的末尾,斜杠在语句之间。
alter table foo.bar drop constraint bar1;/alter table foo.can drop constraint can1;/
后面在脚本中添加了一些触发器,创建了一些视图以及一些存储过程。同时拥有;
而/
导致每个语句运行两次,导致错误(特别是在需要唯一的插入上)。
在SQLDeveloper中,这种情况不会发生,在TOAD中则不会发生。如果运行某些命令,则没有/
在他们身上。
在PL/SQL中,如果您有一个子程序(声明、开始、结束),所使用的分号将被视为子程序的一部分,因此必须使用斜杠。
所以我的问题是:如果您的数据库是Oracle,那么编写SQL脚本的正确方法是什么?因为您知道您的DB是Oracle,所以应该始终使用/
?