zoukankan      html  css  js  c++  java
  • SQL中的全局变量和局部变量(@@/@)

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

  • 相关阅读:
    ionic中关于ionicView 的生命周期
    ES6新特性之 promise
    使用angular中ng-repeat , track by的用处
    关于前端性能优化的思考
    浅谈JavaScript之原型
    浅谈JavaScript的New关键字
    JavaScript中闭包之浅析解读
    python3 linux下安装
    mycat高可用方案
    mysql高可用方案
  • 原文地址:https://www.cnblogs.com/wfy680/p/11972082.html
Copyright © 2011-2022 走看看