当前位置: 首页 > 面试题库 >

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

孔厉刚
2023-03-14
问题内容

本周我们公司一直在就如何编写SQL脚本进行辩论。

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

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

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

稍后在脚本中添加了一些触发器,创建了一些视图以及一些存储过程。同时使用;和和/导致每个语句运行两次会导致错误(尤其是在插入操作上,该操作必须是唯一的)。

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

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

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


问题答案:

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

另外,如果最终使用Ant之类的东西进行部署,它将简化目标的定义以具有一致的语句定界符。



 类似资料:
  • 问题内容: 我如何使用AtomicBoolean?该类的作用是什么? 问题答案: 当有多个线程需要检查并更改布尔值时。例如: 这不是线程安全的。您可以使用以下方法修复它:

  • 问题内容: 我对JAX-WS进行了概述,并注意到了(和)的一些引用。 在什么情况下需要?(我认为JSR 109服务器?!) 问题答案: 是使用SUN的参考实现将Web服务作为标准存档部署在非Java EE5 Servlet容器上时所需的专有部署描述符。 Sun的RI 用作servlet上下文事件的侦听器和调度程序servlet。两者都必须在中声明。然后需要该文件为定义Web服务端点,以使其知道必须

  • 问题内容: 当我尝试按照本指南进行SQLAlchemy Relation Example时:基本关系模式 我有这个代码 它运作良好,但是在指南中,该模型应为: 为什么我不需要或在我的示例中?什么时候应该使用其中一个? 问题答案: 如果使用,则无需在第二个表上声明关系。 如果 不 使用,并分别定义,则如果不使用,则sqlalchemy将不知道如何连接关系,因此修改一个也将修改另一个。 因此,在您的示

  • 问题内容: 我怎么能说: 为什么函数调用中不需要括号,而最后一行呢? 问题答案: 是一个功能 调用该函数并产生该函数返回的任何值。 setTimeout的目的是在一段时间后运行代码。你需要的功能只是传递给它(这样的setTimeout可以自称在适当的时候函数),因为如果你将它传递给setTimeout的前调用的函数(用括号),将执行 现在 而不是1秒后,。

  • 问题内容: 我使用类只有很短的时间,编写方法时,我使所有变量都引用了self,例如self.foo。 但是,我在浏览《 wxPython in Action》 一书时发现,“ self”并没有一直使用。例如: 下面的一个确实使用“自我”。 如果我没记错的话,“自我”是指该类的特定实例,那么什么时候没有必要?有一般的经验法则吗? 问题答案: 您用于引用当前实例的属性。 您用于引用父类的方法。 如果仅