在创建存储过程之前要发出的最佳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

最好的,我的意思是最喜欢的设置。

#1楼 票数: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

#2楼 票数:1

事务隔离级别(通常是Read committed - 以确保没有脏读)。 除非你对受影响的行数感兴趣; 设置nocount

#3楼 票数:-3

我通常不会在proc之前设置任何设置。 在proc中通常使用SET NOCOUNT ON ,如果它只是一个选择SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

  ask by RacerX translate from so

未解决问题?本站智能推荐:

2回复

如何在SQL的where子句中调用存储过程

我有一个T-SQL脚本,要求是我需要在where子句中调用存储过程。 此存储过程接受参数并返回位结果。 请指导我如何做到这一点。 谢谢 编辑:我不能修改这个sp并使其成为一个函数。 请
1回复

存储过程条件

我对SQL Server中的这个东西有点头绪。 我不确定这是否可行。 好吧,我要寻找的如下 如果我的存储过程返回了一些结果,则显示一些输出 其他什么都不显示 就像是 任何对此的输入,将是有帮助的! 谢谢 !!!
5回复

识别插入的存储过程

如何识别将记录插入“ TableXYZ”的存储过程? 我可能有数百个存储过程。 请帮忙。
1回复

如何以表格格式从另一个存储过程从存储过程获取输出值

我有一个包含以下数据的表,该数据具有itemID和Imagepath (s) tableImagePath 我已经存储了过程,该过程以base64编码生成图像的输出(来自上面的图像路径)。 返回如下所示的输出: 注意: dbo.prIMGCLR_ReadImage_
1回复

存储过程,用于复制表数据,包括通过SQL Server中运行的SQL脚本的任何默认值或绑定数据

我希望能够复制一个表及其数据,并且仍然具有任何默认值或绑定 (因为它在SQL Server管理控制台中标记)复制的约束。 下面的脚本是一个测试脚本来演示这个想法。 我假设的最后一行需要替换为对自定义存储过程的调用吗? 注意:源表( aSourceTbl )架构各不相同,可能会随时间
3回复

存储过程中的分类帐报告逻辑

我有一个称为“患者分类帐报告”的存储过程,需要在其中显示日常交易的详细信息和患者的余额。我正在从下面的代码中为您提供一个采样数据,这些数据是如何插入到我的临时表中的SP。 我想如何在报告中显示数据。
3回复

在SQL Server中执行存储过程的权限问题

我在不同的客户端上使用了很多存储过程,对于几个客户端,有一个用户AdminRole,并且需要为AdminRole添加执行权限,对于几个客户端,则没有用户AdminRole,也不需要执行权限。 每个存储过程都有 例如: 这行最后,但是,当没有管理员角色时,该行将无法执行。 我