zoukankan      html  css  js  c++  java
  • T-SQL 变量

    T-SQL变量                                                                                                        

      变量的种类:

      在T-SQL中,变量按生存范围可以分为全局变量(Global Variable)和局部变量(Local Variable)

      1、全局变量是由系统定义的,在整个SQL Server实例内都能访问到的变量,全部变量以@@开头,用户只能访问,不能赋值。

      2、局部变量由用户定义,生命周期只在一个批处理内有效。局部变量以@作为第一个字符,由用户自己定义和复制。

      示例:

     
      DECLARE @i int    --声明一个int类型局部变量
      SET @i = 10      --通过SET对局部变量进行赋值
    
      DECLARE @Name nvarchar(20)    --声明一个nvarchar(20)类型变量
      SET @Name = '张飞'
    
      PRINT @@VERSION     --全部变量,只能读取,不能赋值
      SET @@VERSION = '123'    --此行代码报错
     

      局部变量的用途:

    •   在循环中记录循环次数
    •   储存存储过程或者函数的返回值

      局部变量的声明:

      局部变量的声明必须以"DECLARE"作为关键字,变量的命名必须以"@"作为变量名的第一个字符.必须为所声明的变量提供一个数据类型和数据长度。   如:

      DECLARE @Name nvarchar(20)

      注意:局部变量的数据类型不能为Text,ntext,和Image类型,当对于字符型变量只提供数据类型没有提供数据长度时,数据长度默认为1.

      设置变量中的值:

      1、使用SET设置变量

      有两种设置变量值方法。可以使用SELECE语句或者SET语句。从功能上看,它们的作用几乎是相同的,不同的是SELECT语句允许元数据值来自SELECT语句中的某一列。

      DECLARE @i int,@j int
      set @i = 10;
      set @j = 20;
      select @i + @j

      用查询到的值设置变量:

      DECLARE @i int
      SET @i = (select MAX(Age) from Person)  --当使用SET时如果返回结果有多行也会报错。同时如果返回多条记录也报错
      SELECT @i

      2、使用SELECT设置变量:

       当变量中存储的信息来源于查询时,经常使用SELECT给变量赋值,语法比较简便。

      DECLARE @i int
      SELECT @i = 100
      SELECT @i

      查询的信息为变量赋值:

    DECLARE @i int
    SELECT @i = Age from Person_1 order by Id desc    --当返回多个值时用最后一个赋值
    PRINT @i

      SELECT同时设置多个值:

      DECLARE @Name varchar(20)
      DECLARE @i int
      SELECT @i = 10, @Name = '张飞'

      3、当表达式未返回值时

    •   使用SET对局部变量赋值时,如果赋值表达式未返回值,则局部变量变为NULL,而SELECT对表达式赋值时,如果表达式未返回值,则局部变量保持原值。
    •    一切只声明没有赋值的局部变量的初始值都为”NULL”。

      例如:

      DECLARE @Name nvarchar(50) 
      SET @Name = '黄飞鸿'
      select @Name = Name from Person_1 where Id = 100    --100不存在记录,此处如果改为一个Id存在的,且Name列不为null的值,则@Name变量的值就变了
      PRINT @Name  --依然打印的是黄飞鸿

      可见,当SELECT表达式赋值时,如果为返回值,则保持原值。

      局部表变量:

      局部表变量是一个特殊的局部变量.和临时表不同,局部表变量具有一切局部变量的特点.在查询中,因为局部表变量是存在内存中,而不是硬盘中,所以速度会远远快于临时表或是实际表,局部表变量最多的使用时在查询中充当多个表做连接时的中间表。

    复制代码
    DECLARE @TempTable TABLE    --声明一个局部表变量
    (
        Id int,
        Name nvarchar(50)
    )
    INSERT INTO @TempTable     --用查询到的作为数据插入到局部表变量
    SELECT Id,Name FROM Person_1
    
    SELECT * FROM @TempTable    --和普通表一样用,可以各种join,子查询等等。
  • 相关阅读:
    联想 Vibe Shot(Z90-3) 免recovery 获取ROOT权限 救砖 VIBEUI V3.1_1625
    联想 Z5S(L78071)免解锁BL 免rec 保留数据 ROOT Magisk Xposed 救砖 ZUI 10.5.370
    联想 Z5(L78011) 免解锁BL 免rec 保留数据 ROOT Magisk Xposed 救砖 ZUI 10.5.254
    联想 S5 Pro(L78041)免解锁BL 免rec 保留数据 ROOT Magisk Xposed 救砖 ZUI 5.0.123
    第二阶段 冲刺八
    第二阶段 冲刺七
    第二阶段 冲刺六
    第二阶段 冲刺五
    代码大全阅读笔记03
    学习进度十二
  • 原文地址:https://www.cnblogs.com/feng-NET/p/4541464.html
Copyright © 2011-2022 走看看