SQL中SET关键字使用

转自:http://tutorial.236z.com/sc/tsql/html/ts_set-set_40c4.htm

Transact-SQL 参考

SET

Transact-SQL 程序设计语言提供了一些 SET 语句,这些语句可以更改特定信息的当前会话处理。

SET 语句可分为以下几类:

分类更改以下各项的当前会话设置
日期和时间处理日期和时间数据。
锁定处理 Microsoft® SQL Server™ 锁定。
杂项SQL Server 的杂项功能。
查询执行执行和处理查询。
SQL-92 设置使用 SQL-92 默认设置。
统计信息显示统计信息。
事务处理 SQL Server 事务。

日期和时间语句

SET DATEFIRST

SET DATEFORMAT

锁定语句

SET DEADLOCK_PRIORITY

SET LOCK_TIMEOUT

杂项语句

SET CONCAT_NULL_YIELDS_NULL

SET CURSOR_CLOSE_ON_COMMIT

SET DISABLE_DEF_CNST_CHK

SET FIPS_FLAGGER

SET IDENTITY_INSERT

SET LANGUAGE

SET OFFSETS

SET QUOTED_IDENTIFIER

查询执行语句

SET ARITHABORT

SET ARITHIGNORE

SET FMTONLY

SET NOCOUNT

SET NOEXEC

SET NUMERIC_ROUNDABORT

SET PARSEONLY

SET QUERY_GOVERNOR_COST_LIMIT

SET ROWCOUNT

SET TEXTSIZE

SQL-92 设置语句

SET ANSI_DEFAULTS

SET ANSI_NULL_DFLT_OFF

SET ANSI_NULL_DFLT_ON

SET ANSI_NULLS

SET ANSI_PADDING

SET ANSI_WARNINGS

统计语句

SET FORCEPLAN

SET SHOWPLAN_ALL

SET SHOWPLAN_TEXT

SET STATISTICS IO

SET STATISTICS PROFILE

SET STATISTICS TIME

事务语句

SET IMPLICIT_TRANSACTIONS

SET REMOTE_PROC_TRANSACTIONS

SET TRANSACTION ISOLATION LEVEL

SET XACT_ABORT

使用 SET 语句时的注意事项
  • 除 SET FIPS_FLAGGER、SET OFFSETS、SET PARSEONLY 和 SET QUOTED_IDENTIFIER 外,所有其它 SET 语句均在执行或运行时设置。SET FIPS_FLAGGER、SET OFFSETS、SET PARSEONLY 和 SET QUOTED_IDENTIFIER 语句在分析时设置。

  • 如果在存储过程中设置 SET 语句,则从存储过程返回控制后将还原 SET 选项的值。因此,在动态 SQL 中指定的 SET 语句不影响动态 SQL 语句之后的语句。

  • 存储过程与在执行时指定的 SET 设置一起执行,但 SET ANSI_NULLS 和 SET QUOTED_IDENTIFIER 除外。指定 SET ANSI_NULLS 或 SET QUOTED_IDENTIFIER 的存储过程使用在存储过程创建时指定的设置。如果在存储过程内使用任何 SET 设置,则都将忽略该设置。

  • sp_configureuser options 设置允许服务器范围的设置,并可以跨多个数据库运行。该设置的行为还类似于显式 SET 语句,在登录时出现该设置的情况除外。

  • 数据库设置(使用 sp_dboption 设置的)仅在数据库级上有效,并且只有在未显式设置的情况下才生效。数据库设置替代服务器选项设置(使用 sp_configure 设置)。

  • 对于任何带 ON 和 OFF 设置的 SET 语句,可以为多个 SET 选项指定 ON 或 OFF 设置。例如:
    SET QUOTED_IDENTIFIER, ANSI_NULLS ON 
    

    将 QUOTED_IDENTIFIER 和 ANSI_NULLS 均设置为 ON。

  • SET 语句设置将替代数据库选项设置(使用 sp_dboption 设置的)。另外,如果用户在连接到数据库时所基于的值是由于先前使用 sp_configure user options 设置而生效的,或者所基于的值适用于所有 ODBC 和 OLE/DB 连接,则一些连接设置将自动设置为 ON。

  • 当全局或快捷 SET 语句(如 SET ANSI_DEFAULTS)设置多个设置时,发出快捷 SET 语句将为所有受快捷 SET 语句影响的选项重置先前的设置。如果在发出快捷 SET 语句后显式设置受快捷 SET 语句影响的个别 SET 选项,则个别 SET 语句将替代相应的快捷设置。

  • 当使用批处理时,数据库上下文由使用 USE 语句建立的批处理决定。在存储过程的外部执行的以及批处理中的特殊查询和所有其它语句,继承使用 USE 语句建立的数据库和连接的选项设置。

  • 当从批处理或另一个存储过程执行某个存储过程时,该存储过程将根据所在的数据库中当前设置的选项值执行。例如,当存储过程 db1.dbo.sp1 调用存储过程 db2.dbo.sp2 时,存储过程 sp1 根据数据库 db1 的当前兼容级别设置去执行,存储过程 sp2 根据数据库 db2 的当前兼容级别设置去执行。

  • 当 Transact-SQL 语句引用驻留在多个数据库中的对象时,当前数据库上下文和当前连接上下文(如果位于批处理中,则是由 USE 语句定义的数据库;如果位于存储过程中,则是包含该存储过程的数据库)将应用于该语句。

  • 当在计算列或索引视图上创建和操作索引时,必须将 SET 选项 ARITHABORT、CONCAT_NULL_YIELDS_NULL、QUOTED_IDENTIFIER、ANSI_NULLS、ANSI_PADDING 和 ANSI_WARNINGS 设置为 ON。必须将选项 NUMERIC_ROUNDABORT 设置为 OFF。

    如果这些选项中的任何一个没有设置为所要求的值,则在索引视图上或在计算列带索引的表上进行的 INSERT、UPDATE 和 DELETE 操作将失败。SQL Server 将发出一个错误,列出所有设置不正确的选项。同时,SQL Server 将在这些表或索引视图上处理 SELECT 语句,仿佛计算列或视图上不存在索引一样。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值