数据库中系统函数在以前的版本中也叫全局变量. SQL Server2005中可用的T-SQL函数可分为11类:
1. 遗留的"系统"函数。 2. 聚集函数;3.游标函数。 4.日期和时间函数。5.数学函数;6.元数据函数;7.行集函数;8.安全函数。9.字符串函数。10系统函数。11.文本和图像函数
1. 遗留的"系统"函数:
a. @@DateFirst :当前系统认为星期几是一周的第一天,则返回那一天的数字值. 可以使用Set DateFirst函数来更改它的值;如可使用Set DateFirst 1来设置星期一做为一周的第一天。
b. @@DBTS:当前数据库最后使用的时间戳值。此处需要注意:(1)该值将基于数据库中任何改变而发生改变,而不仅仅是你所工作的表。(2)数据库中人选何时间戳的改变都会反映出来,而不仅仅是针对当前连接的改变。
c. @@Cursor_Rows:在当前连接打开的上一个游标集中当前行的数目。每当打开一个新游标时,该值将被重置。如果需要一次打开一个以上的游标,并且需要知道第一个的行数。根据游标类型以及SQL Server是否是异步地填充游标,@@Cursor_Rows中所包含的值可能会发生改变。使用@@Fetch_Status将更加可靠。
如果返回值是绝对值大于-1的负数和,那么,你一定是在使用异步游标,并且,这个负数是当前创建在游标中的记录的数目。然而,如果该值是-1,则游标是动态游标,游标的行数不断变化,返回值为0,则告知你,要么没有打开的游标,要么上一个打开的游标已被关闭或释放。任何正数的值表示游标中行的数目.
d. @@Error:返回在当前连接中运行的最后一个T-SQL语句的错误号。如果没有错误则返回值为0.通过master数据库中的sysmessage系统表,可以看到所有的系统错误列表。要创建算定义错误,可以使用sp_addmessage.
e. @@Fetch_Status:返回最后一个游标Fetch操作状态的指示值。如果使用游标 ,那么将会用到@@Fetch_Status.当你在游标中试图导航到一条记录时,该值使你短简操作是成功还是失败。根据SQL Server在最后一个Fetch操作中是否成功,以及如果Fetch操作失败,失败的原因是什么,@@Fetch_Status将返回一个常量:
0:成功. -1:失败,通常由于超出了游标集的开始或末尾。 -2:失败:没有找到要提取的行,通常是由于在创建游标集和导航到当前行的期间 ,该行被删除了,这只会发生在滚动游标,非动态游标上。
mailto:f.@@Identity :返回当前连接创建的最后一个标识值.如果插入的最后一个表没有标识列,则@@Identity将被设置为NULL .
g. @@LangID和 @@Language: 这二者分别返回当前使用的语言的ID和名称,如果要得到SQL Server当前支持的语言的完整列表,可以使用系统存储过程sp_helplanguage.
h. @@Lock_TimeOut:返回在系统在超时前,等待阻塞的时间的当前设置值,以毫秒为单位。
i. @@MAX_Connections:返回Sql Server上允许同时进行的最大的用户连接数。不要把这个系统函数与在Management Console中看到的“最大连接数”属性混为一谈。该值是基于许可的,当你选择“每客户”许可类型时,会看到很大的数值。
注意:实际允许的用户连接数还依赖于所使用的SQL Server的版本以及应用程序和硬件的限制.
j. @@Max_Precision:返回当前为decimal和numeric数据类型所设置的精度级别。默认情况下是38值。在启动SQL Server时,可以使用/p选项更改该值。可以通过从命令行启动Sql Server来添加/p选项。
k. @@NetLevel :返回嵌套的存储过程的当前嵌套级别。第一个存储过程运行时拥有的级别为0.如果那个存储过程调用另一个存储过程,则第二个存储过程被称为嵌套在第一个存储过程中(并且嵌套级别递增为1).以此类扒。直至到达最大值级数32的尝试,如果超过32级别的嵌套深度,则不仅事务会被终止,而且, 时应当重新考虑你的应用程序的设计。
l. @@Options:返回使用set命令所应用的选项信息:
位 SET选项 描述
1 Disable_Def_Cnst_Chk :临时的和延时的冲突检查。
2: Implict_Transactions:当语句执行时一个事务被隐式地启动。
4:Cursor_CloseON_Commit:控制一个已经执行Commit操作后的游标行为.
8: Ansi_Warnings :在聚集中警告截断和NULL
16:ANSI_Padding:控制长度固定变量的填充.
32:ANSI_NULLs:确定在使用等式操作时对NULL的处理 .
64: ARITHABORT:当执行查询时出现溢出或除0的错误时,中断查询。
128:ARITHIGNORE:当查询出现溢出或除0的错误时,返回NULL
256:QUOTED_IDENTIFIER:在对表达式求值时,对单引号和双引号的区分.
512:NOCOUNT:关闭在每个语句末尾所返回的多少行被影响的消息。
1024:ANSI_NULL_DFLT_ON:针对为空性使用ANSI兼容性来修改会话的行为。承新表所创建的列或添加到旧表中的列,在没有显式的空选项设置时,被定义为允许为空。它同ANSI_NULL_DELT_OFF是相互排他的.
2048:ANSI_NULL_DELT_OFF:针对空性不使用ANSI兼容性来修改会话的行为。没有显式的定义为空性的新列,被定义为不允许为空。
4096:CONCAT_NULL_YIELDS_NULL:当将Null同一个字符串连接时,返回NULL
8192: Numeric_RoundAbort:当表达式中发生丢失精度的时候生成一个错误。