zoukankan      html  css  js  c++  java
  • SQLServer局部变量和全局变量介绍05-29学习笔记

    变量

    数据在内存中存储可以变化的量叫变量。为了在内存中存储信息,用户必须指定存储信息的单元,并为了该存储单元命名,

    以方便获取信息,这就是变量的功能。Transact-SQL可以使用两种变量,一种是局部变量,另外一种是全局变量。

    局部变量和全局变量的主要区别在于存储的数据账作用范围不一样。

    1、局部变量

    局部变量是用户可自定义的变量,它的作用范围仅在程序内部。局部变量的名称是用户自定义的,

    命名的局部变量名要符合SQLserver2012标识符命名规则,局部变量名必须以@开头。

    1.1、声明局部变量

    语法:

    DECLARE
    {
    @varaible_name datatype [,...n]
    }

    参数说明:

    @varaible_name:局部变量的变量名

    datatype:局部变量使用的数据类型,可以除text,ntext,image类型外所有的系统数据类型和用户自定义数据类型。

    例如,声明变量@testname

    SQL语句如下:

    declare @testname nvarchar(10)

    1.2、为局部变量赋值

    为变量赋值的方式一般有两种,一种是使用select语句,一种是使用set语句。

    使用select语句赋值SQL:

    use db_tse
    declare @testname nvarchar(10)
    select @testname=stname from Student where id='1001'
    print @testname

    说明:首先声明变量testname然后student表里面的id=1001这条数据的stname赋值给@testname,最后print打印出来

    declare @a int
    select @a=1
    print @a

    给多个变量赋值:

    declare @a int,@b nvarchar(10),@c int
    select @a=1,@b='Tse先生',@c=2

    使用set语句赋值SQL:

    简单的赋值例子:

    declare @testname nvarchar(20)
    set @testname = 'Are you ok?'
    print @testname

    2、全局变量

    全局变量是SQLserver系统内部事先定义好的变量,不用用户参与定义,对用户而言,其作用范围并不局限于某一程序,

    而是任何程序均可随时调用。全局变量通常用于存储一些SQLserver的配置设定值和效能统计数据。

    (1)@@CONNECTIONS:记录自最后一次服务器启动以来,所有针对这台服务器进行的连接数目,包括没有连接成功的尝试。

    (2)@@CPU_BUSY:记录自上次启动以来尝试的连接数,无论连接成功还是失败,都以ms为单位的CPU工作时间。

    (3)@@CURSOR_ROWS:返回本次服务器连接中,打开游标取出数据行的数目。

    (4)@@DBTS:返回当前数据库中timestamp数据类型的当前值。

     

    (5)@@ERROR:返回上一条T-SQL语句所返回的错误代码。如果sqlserver服务器执行完上一条语句后,执行成功没有错误,则返回@@ERROR的值为0。

     

     (6)@@FETCH_STATUS:返回上一次使用游标FETCH操作返回的状态值,且返回值为整型。

    返回值 描述
    0 FETCH语句成功
    -1 FETCH语句失败或此行不在结果集中
    -2 被提取的行不存在

     

    (7)@@IDENTITY:返回最近一次插入的identity列的数值,返回值是numeric。

     (8)@@IDLE:返回以ms为单位计算SQLserver服务器自最近一次启动以来处于停顿状态的时间。

    (9)@@IO_BUSY:返回以ms为单位计算的SQLserver服务器自最近一次启动以来花在输入和输出上的时间。

    (10)@@LOCK_TIMEOUT:返回当前对数据锁定的超时设置。

    (11)@@PACK_RECEIVED:返回sqlserver服务器自最近一次启动以来一共从网络上接收数据分组的数目。

    (12)@@PACK_SENT:返回sqlserver服务器自最近一次启动以来一共向网络上发送数据分组的数目。

    (13)@@PROCID:返回当前存储过程的ID标识。

    (14)@@REMSERVER:返回在登录记录中记载远程sqlserver服务器的名字

    (15)@@ROWCOUNT:返回上一条sql语句所影响到数据行的数目。对所有不影响数据库数据的SQL语句,这个全局变量返回的结果是0。在进行数据库编程时,经常要检测@@ROWCOUNT的返回值,以便明确所执行的操作是否达到了目标。

    (16)@@SPID:返回当前服务器进程的ID标识。

    (17)@@TOTAL_ERRORS:返回自sqlserver服务器启动以来,所遇到读写错误的总数。

    (18)@@TOTAL_READ:返回自sqlserver服务器启动以来,读磁盘的次数。

    (19)@@TOTAL_WRITE:返回自sqlserver服务器启动以来,写磁盘的次数。

    (20)@@TRANCOUNT:返回当前连接中,处于活动状态事务的数目。

    (21)@@VERSION:返回当前sqlserver服务器安装日期、版本,以及处理器的类型。

  • 相关阅读:
    二分+RMQ/双端队列/尺取法 HDOJ 5289 Assignment
    思维题 HDOJ 5288 OO’s Sequence
    树形DP Codeforces Round #135 (Div. 2) D. Choosing Capital for Treeland
    最大流增广路(KM算法) HDOJ 1853 Cyclic Tour
    最大流增广路(KM算法) HDOJ 1533 Going Home
    最大流增广路(KM算法) HDOJ 2255 奔小康赚大钱
    Complete the Word CodeForces
    Gadgets for dollars and pounds CodeForces
    Vasya and Basketball CodeForces
    Carries SCU
  • 原文地址:https://www.cnblogs.com/Sungeek/p/10945374.html
Copyright © 2011-2022 走看看