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服务器安装日期、版本,以及处理器的类型。

  • 相关阅读:
    代码中日志的使用
    MySQL数据库(3)----设置和使用自定义变量
    MySQL数据库(2)----检索信息
    MySQL数据库(1)----入门级操作
    Apache服务器运维笔记(6)----目录 文件 网络容器的安全问题
    Apache服务器运维笔记(5)----容器的处理顺序
    CentOS7 下安装 SublimeText3
    Apache服务器运维笔记(4)----服务器扩展部分
    Apache服务器运维笔记(3)----容器部分
    KMP算法的一个简单实现
  • 原文地址:https://www.cnblogs.com/Sungeek/p/10945374.html
Copyright © 2011-2022 走看看