SQL.@,@@#,##

Posted dbskill

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL.@,@@#,##相关的知识,希望对你有一定的参考价值。

1、SQL server 中的@,@@、#,##分别代表什么?_百度知道.htmlhttps://zhidao.baidu.com/question/238197938.html

@ 表示局部变量

@@ 表示全局变量

# 表示本地临时表的名称,以单个数字符号打头;它们仅对当前的用户连接是可见的

## 表示全局临时表

使用事例如下图所示:

  技术图片

扩展资料:

本地临时表

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

全局临时表

以两个井号 (##) 开头的表名。在所有连接上都能看到全局临时表,也就是说只要全局临时表存在,那么对所有创建用户的会话后都是可见的。如果在创建全局临时表的连接断开前没有显式地除去全局临时表,那么只能等到其它所有任务都停止引用,这些表才会被删除。

当创建全局临时表的连接断开后,新的任务不能再引用它们,也就是说旧的任务才可以引用。当前的语句一执行完,任务与表之间的关联即被除去;因此通常情况下,只要创建全局临时表的连接断开,全局临时表也会同时被删除。

 

2、SQL中的全局变量和局部变量(@@[email protected]) - 书写者 - 博客园.html(https://www.cnblogs.com/accumulater/p/7233626.html

在SQL中,我们常常使用临时表来存储临时结果,对于结果是一个集合的情况,这种方法非常实用,但当结果仅仅是一个数据或者是几个数据时,还要去建一个表,显得就比较麻烦,另外,当一个SQL语句中的某些元素经常变化时,比如选择条件,(至少我想)应该使用局部变量。当然MS SQL Server的全局变量也很有用。

>>>>局部变量 

声明:DECLARE @local_variable data_type 

@local_variable 是变量的名称。变量名必须以 at 符 (@) 开头。data_type 是任何由系统提供的或用户定义的数据类型。变量不能是 text、ntext 或 image 数据类型。 

示例: 
use master 
declare @SEL_TYPE char(2) 
declare @SEL_CUNT numeric(10) 
set @SEL_TYPE = ‘U‘/*user table*/ 
set @SEL_CUNT = 10 

/*返回系统中用户表的数目*/ 
select @SEL_CUNT = COUNT(*) 
from sysobjects 
where type = @SEL_TYPE 

select @SEL_CUNT as ‘User table ‘‘s count‘ 

如果要返回系统表的数目,可以用set @SEL_TYPE = ‘S‘ 

可能这个例子并不能说明使用变量的好处,我只是想说明使用方法。当一组(几个甚至几十个)SQL语句都使用某个变量时,就能体会到他的好处了。 

 
-----------------------------------------------------------------------------------------------------------------------------------------------
 

>>>>全局变量 

全局变量是系统预定义的,返回一些系统信息,全局变量以两个at(@)开头。下面是我统计了一些较为常用的变量。 

@@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
返回当前连接中处于激活状态的事务数目

 

3、

4、

5、

 

以上是关于SQL.@,@@#,##的主要内容,如果未能解决你的问题,请参考以下文章

sql [sql技巧]一些sql技巧#sql

sql 2008 r2 在sql 2008上兼容么

SQL基础

有大神知道,sql server 中如何批量执行sql语句吗?

pl sql developer怎么执行sql

pl sql developer怎么执行sql