簡體   English   中英

SQL Server存儲過程SET選項

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM