小编典典

我什么时候需要在 Oracle SQL 中使用分号和斜杠?

all

本周我们在我的公司就应该如何编写 SQL 脚本进行了一些辩论。

背景:我们的数据库是Oracle 10g(即将升级到11)。我们的 DBA 团队使用 SQLPlus 将我们的脚本部署到生产环境。

现在,我们最近有一个部署失败,因为它同时使用了分号和正斜杠 ( /)。分号位于每个语句的末尾,斜线位于语句之间。

alter table foo.bar drop constraint bar1;
/
alter table foo.can drop constraint can1;
/

稍后在脚本中添加了一些触发器,创建了一些视图以及一些存储过程。让 the;
the/导致每个语句运行两次导致错误(尤其是在插入时,它需要是唯一的)。

在 SQL Developer 中不会发生这种情况,在 TOAD 中不会发生这种情况。如果您运行某些命令,如果没有它们,它们将无法工作/

在 PL/SQL 中,如果您有一个子程序(DECLARE、BEGIN、END),使用的分号将被视为子程序的一部分,因此您必须使用斜杠。

所以我的问题是:如果您的数据库是 Oracle,那么编写 SQL 脚本的正确方法是什么?既然您知道您的数据库是 Oracle,您应该始终使用/?


阅读 69

收藏
2022-06-21

共1个答案

小编典典

这是一个偏好问题,但我更喜欢看到始终使用斜杠的脚本 - 这样所有“单元”工作(创建 PL/SQL 对象、运行 PL/SQL 匿名块和执行 DML
语句)都可以肉眼更容易分辨。

此外,如果您最终使用 Ant 进行部署,它将简化目标的定义以具有一致的语句分隔符。

2022-06-21