SQL Server 中的 @、@@、#、## 、N 代表什么,以及SQL系统常用全局变量

摘要:
SQL中@、@@、#、##和N表示什么@表示局部变量@@表示全局变量#表示局部临时表的名称,以单个数字符号开头;它们仅对当前用户连接可见。##指示全局临时表N存储在数据库中时以Unicode格式(双字节)存储。如果没有N,它将存储为公共字符常量(单字节)@@IDENTITY返回最后插入的标识值@@LANGID返回当前语言的本地语言标识符@@LOCK_TIMEOUT返回当前会话的当前锁定超时设置,以毫秒为单位@@SPID返回当前用户进程的服务器进程标识符。

SQL中的 @、@@、#、## 、N 代表什么

  • @ 表示局部变量 
  • @@ 表示全局变量
  • # 表示本地临时表的名称,以单个数字符号打头;它们仅对当前的用户连接是可见的
  • ## 表示全局临时表
  • N 代表存入数据库时以 Unicode 格式存储(双字节),不带N是以普通字符常量存储(单字节)。例如:N'你好'  ---2020.03.17

#本地临时表,以一个井号 (#) 开头的表名。只有在创建本地临时表连接是才能看得到,连接断开时临时表立马被删除,也就是到货本地临时表为创建它的该链接的会话所独有,或者说局部临时表是有当前用户创建的,并且只有当前用户的会话才可以访问。

##全局临时表,以两个井号 (##) 开头的表名。在所有连接上都能看到全局临时表,也就是说只要全局临时表存在,那么对所有创建用户的会话后都是可见的。如果在创建全局临时表的连接断开前没有显式地除去全局临时表,那么只能等到其它所有任务都停止引用,这些表才会被删除。
当创建全局临时表的连接断开后,新的任务不能再引用它们,也就是说旧的任务才可以引用。当前的语句一执行完,任务与表之间的关联即被除去;因此通常情况下,只要创建全局临时表的连接断开,全局临时表也会同时被删除。

 

常用系统全局变量:

@@CONNECTIONS    返回自上次启动以来连接或试图连接的次数。
@@CURSOR_ROWS   返回连接上最后打开的游标中当前存在的合格行的数量(返回被打开的游标中还未被读取的有效数据行的行数)
@@DATEFIRST   返回每周第一天的数字
@@ERROR   返回最后执行的SQL 语句的错误代码。
@@FETCH_STATUS   返回被 FETCH 语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。
@@IDENTITY   返回最后插入的标识值
@@LANGID   返回当前所使用语言的本地语言标识符(ID)。
@@LANGUAGE   返回当前使用的语言名。
@@LOCK_TIMEOUT   返回当前会话的当前锁超时设置,单位为毫秒。
@@PROCID   返回当前过程的存储过程标识符 (ID) 。
@@ROWCOUNT   返回受上一语句影响的行数。
@@SERVERNAME   返回运行 的本地服务器名称。
@@SPID   返回当前用户进程的服务器进程标识符 (ID)。
@@TRANCOUNT   返回当前连接的活动事务数。
@@VERSION   返回当前安装的日期、版本和处理器类型。
@@CPU_BUSY   返回自SQL Server 最近一次启动以来CPU 的工作时间其单位为毫秒
@@DATEFIRST   返回使用SET DATEFIRST 命令而被赋值的DATAFIRST 参数值SET DATEFIRST,命令用来指定每周的第一天是星期几
@@DBTS   返回当前数据库的时间戳值必须保证数据库中时间戳的值是惟一的
@@ERROR   返回执行Transact-SQL 语句的错误代码
@@FETCH_STATUS   返回上一次FETCH 语句的状态值
@@IDLE     返回自SQL Server 最近一次启动以来CPU 处于空闭状态的时间长短单位为毫秒
@@IO_BUSY   返回自SQL Server 最近一次启动以来CPU 执行输入输出操作所花费的时间其单位为毫秒
@@LANGID   返回当前所使用的语言ID 值
@@LANGUAGE   返回当前使用的语言名称
@@LOCK_TIMEOUT   返回当前会话等待锁的时间长短其单位为毫秒
@@MAX_CONNECTIONS   返回允许连接到SQL Server 的最大连接数目
@@MAX_PRECISION   返回decimal 和numeric 数据类型的精确度
@@NESTLEVEL   返回当前执行的存储过程的嵌套级数初始值为0
@@OPTIONS   返回当前SET 选项的信息
@@PACK_RECEIVED   返回SQL Server 通过网络读取的输入包的数目
@@PACK_SENT   返回SQL Server 写给网络的输出包的数目
@@PACKET_ERRORS   返回网络包的错误数目
@@PROCID   返回当前存储过程的ID 值
@@REMSERVER   返回远程SQL Server 数据库服务器的名称
@@SERVICENAME   返回SQL Server 正运行于哪种服务状态之下如MSSQLServer MSDTC SQLServerAgent
@@SPID   返回当前用户处理的服务器处理ID 值
@@TEXTSIZE   返回SET 语句的TEXTSIZE 选项值SET 语句定义了SELECT 语句中text 或image数据类型的最大长度基本单位为字节
@@TIMETICKS   返回每一时钟的微秒数
@@TOTAL_ERRORS   返回磁盘读写错误数目
@@TOTAL_READ   返回磁盘读操作的数目
@@TOTAL_WRITE   返回磁盘写操作的数目
@@TRANCOUNT   返回当前连接中处于激活状态的事务数目

 

 

创建时间:2020.02.17  更新时间:2020.03.17

 

免责声明:文章转载自《SQL Server 中的 @、@@、#、## 、N 代表什么,以及SQL系统常用全局变量》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C#Color对象的使用介绍及颜色对照表【树莓派+.NET MF打造视频监控智能车】控制篇(树莓派)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SQL Server 存储过程具体解释

SQL Server 存储过程具体解释 存储过程的优缺点   ◆长处:   运行速度更快。存储过程仅仅在创造时进行编译,而一般SQL语句每运行一次就编译一次,所以使用存储过程运行速度更快。   存储过程用于处理复杂的操作时,程序的可读性更强、网络的负担更小。   使用存储过程封装事务性能更佳。   能有效的放注入,安全性更好。   可维护性高。在...

SqlServer 统计1-12月份 每个月的数据(临时表)

想做一个年度图表 效果如下,通过sqlserver来统计今年1-12月份每个月的数据,效果如下 sql语句网上找了很多都没有找到满意的 找到的其中一种写法是这样子的 这种写法对于前端来说很方便 不用进行数据处理, 但缺点在于 1:后端是不是得定12个属性的容器来接收这个数据格式 2:假如我要一个在一个查询结果中显示两个不同对象的年度统计数据就无法实现,...

PL/pgSQL学习笔记之二

39.1.1 使用 PL/pgSQL的好处 SQL是 PostgreSQL和其他大多数关系型数据库作为查询语言而使用的语言。它可移植,并容易学习。但是SQL语句必须被数据库服务器逐条地执行。 这意味着你的客户应用必须向数据库发送每一条查询,等待它被处理,接收并处理结果,进行一些计算,然后再依次类推送出更多的查询。所有这些导致进程间通信,如果你的客户程序和...

iOS开发数据库篇—SQL

一、SQL语句 如果要在程序运行过程中操作数据库中的数据,那得先学会使用SQL语句 1.什么是SQL SQL(structured query language):结构化查询语言 SQL是一种对关系型数据库中的数据进行定义和操作的语言 SQL语言简洁,语法简单,好学好用 2.什么是SQL语句 使用SQL语言编写出来的句子代码,就是SQL语句 在程序运行...

数据库SQL优化大总结之 百万级数据库优化方案(转载)

网上关于SQL优化的教程很多,但是比较杂乱。近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充。 这篇文章我花费了大量的时间查找资料、修改、排版,希望大家阅读之后,感觉好的话推荐给更多的人,让更多的人看到、纠正以及补充。   一、百万级数据库优化方案 1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 o...

MS SQL SERVER中的临时表

今天发现原来临时表也有全局的,原文地址:http://www.cnblogs.com/skywind/archive/2008/01/11/1035178.html 对于复杂的查询,我们可以使用嵌套的复杂的SQL语句来实现,但是有些时候,借助于临时表,可以更加方便、高效。 SQL Server 支持临时表。临时表就是那些名称以井号 (#) 开头的表。如果当...