我有一个名为@TempGeog的表 我无法在我的statement1内使用表@TempGeog 。 错误:必须声明标量变量“ @TempGeog” 我的sql查询应根据用户选择的地理位置类型动态构建。 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
在创建存储过程之前要发出的最佳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.