创建存储过程之前要发出的最佳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
最好的,我的意思是最喜欢的设置。
答案 0 :(得分:5)
具体来说,对于存储过程创建,解析时只有两个很重要
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
答案 1 :(得分:1)
事务隔离级别(通常是Read committed - 以确保没有脏读)。除非你对受影响的行数感兴趣;
上设置nocount答案 2 :(得分:-3)
我通常不会在proc之前设置任何设置。在proc中,我只使用SET NOCOUNT ON
,如果它只是一个选择SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED