本周我们公司一直在就如何编写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秒后,。
我正在学习Rust,我发现函数有些混乱。根据官方参考,一个返回表达式: ...[is]用关键字返回表示。评估返回表达式将其参数移动到当前函数的输出槽中,破坏当前函数激活帧,并将控制权转移到调用者帧。 所以,这个程序工作: 当我在“返回”表达式中添加分号时,它仍然有效: 我对表达式语句(例如)的理解是,它将计算表达式,并忽略结果(而是使用)。如果使用