2011-12-06 130 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計算機中執行查詢時,它應該是強制性的。