在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,所以应该始终使用/?
3 回答
温温酱
TA贡献1752条经验 获得超4个赞
慕容森
TA贡献1853条经验 获得超18个赞
/
;
;
/
;
和 a /
/
SQL*Plus: Release 11.2.0.1.0 Production on Wed Apr 18 12:37:20 2012Copyright (c) 1982, 2010, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Partitioning and OLAP options SQL> drop table foo;Table dropped.SQL> /drop table foo *ERROR at line 1:ORA-00942: table or view does not exist
drop table foo;/
SQL*Plus: Release 11.2.0.1.0 Production on Wed Apr 18 12:38:05 2012Copyright (c) 1982, 2010, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Partitioning and OLAP options SQL> @dropTable dropped.drop table foo *ERROR at line 1:ORA-00942: table or view does not exist
/
;
CREATE PROCEDURE
添加回答
举报
0/150
提交
取消