2011-12-06 160 views
8

我有几个命令的SQL文件。
在脚本中结束行的正确方法是什么?
它是斜线[/]分号[;]都是?
常规sqls和存储过程代码之间是否有任何不同?
谢谢oracle SQL plus如何在SQL文件中结束命令?

+0

下面是一个类似的意图和良好的解释线程: http://stackoverflow.com/questions/1079949/sql-the-semicolon-or-the-slash – Michael

回答

23

对于普通的SQL语句,无论是在一个/在命令结尾处单独行,或;,都可以正常工作。

对于语句包括PL/SQL代码,如CREATE FUNCTIONCREATE PROCEDURECREATE PACKAGECREATE TYPE,或匿名块(DECLARE/BEGIN/END),一个;将不会执行该命令。由于PL/SQL使用分号作为行终止符,因此它在这些语句中必须被用作命令终止符。所以在这些情况下,您必须使用/来执行该命令。

根据我的经验,人们更喜欢尽可能使用分号,只在需要时才使用斜杠。

请注意,对于SQLPlus客户端命令(如SETEXECUTE),根本不需要命令终止符,尽管人们经常以习惯结束时使用分号结束它们。

+2

+1,很好的答案。我认为人们更喜欢在可能的情况下使用分号,用分号和命中返回结束命令更自然,而不是命中返回,键入斜杠并再次返回。当用于执行命令缓冲区时,斜杠必须是行中唯一的字符。 – DCookie

2

;是你应该结束你的SQL命令的方式,同样适用于PLSQL程序:

select * from dual;

select sysdate from dual;

select table_name from user tables;

exec dbms_output.putline('Hello');

1

通常我们可以用“;”结束的SQL语句,
但对于创造functionstriggersprocedures你必须使用“/”后“;”结束的SQL语句。
/”在您使用某些开发人员工具(例如oracle SQL开发人员,toad等)时可能不是必需的,但在您直接在Linux计算机中执行查询时,它应该是强制性的。