[英]SQL Server Stored Procedure SET Options
在創建存儲過程之前要發出的最佳SET選項是什么?
例如
SET QUOTED_IDENTIFIER OFF
SET ANSI_NULLS ON
CREATE PROCEDURE HelloWorld
AS
--also, should any be issued within the procedure body?
PRINT 'hello world!'
RETURN 0
GO
最好的,我的意思是最喜歡的設置。
具體而言,對於存儲過程創建 ,在解析時只有兩個很重要
SET ANSI_NULLS
SET QUOTED_IDENTIFIER
並且它們應該打開以使用較新的SQL Server功能,這些功能僅適用於這些功能
存儲過程使用在執行時指定的SET設置執行,但SET ANSI_NULLS和SET QUOTED_IDENTIFIER除外。 指定SET ANSI_NULLS或SET QUOTED_IDENTIFIER的存儲過程使用在存儲過程創建時指定的設置。 如果在存儲過程中使用,則忽略任何SET設置。
參考: http : //msdn.microsoft.com/en-us/library/ms190356.aspx
要同時設置和其他設置,請使用
SET ANSI_DEFAULTS ON
啟用(ON)時,此選項啟用以下ISO設置:
SET ANSI_NULLS
SET CURSOR_CLOSE_ON_COMMIT
SET ANSI_NULL_DFLT_ON
SET IMPLICIT_TRANSACTIONS
SET ANSI_PADDING
SET QUOTED_IDENTIFIER
SET ANSI_WARNINGS
為了完整性,在連接級別設置其他三個,這樣可以使INDEXED VIEWs之類的東西正常工作
SET ARITHABORT ON
SET CONCAT_NULL_YIELDS_NULL ON
SET NUMERIC_ROUNDABORT OFF
事務隔離級別(通常是Read committed - 以確保沒有臟讀)。 除非你對受影響的行數感興趣; 設置nocount
我通常不會在proc之前設置任何設置。 在proc中通常使用SET NOCOUNT ON
,如果它只是一個選擇SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.