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,子查询等等。
时间: 2024-10-21 04:58:56

T-SQL 变量的相关文章

SQL 变量、 运算符、 if 、while

变量: SQL语言也跟其他编程语言一样,拥有变量.分支.循环等控制语句. 在SQL语言里面把变量分为局部变量和全局变量,全局变量又称系统变量. 局部变量: 使用declare关键字给变量声明,语法非常简单:declare @<变量名> <变量类型> 对变量的赋值可以使用set关键字,使用set关键字时对变量的赋值一次只能赋值一个. 我们也可以在查询语句里面对这个变量进行赋值. 示例: 全局变量:又叫做系统变量. 常用的几个系统变量示例: 变量小练习: 定义变量的练习: 需要在打印的

SQL 变量,运算符

一.变量 SQL语言也跟其他编程语言一样,拥有变量.分支.循环等控制语句. 在SQL语言里面把变量分为局部变量和全局变量,全局变量又称系统变量. (一).局部变量 使用declare关键字给变量声明,语法非常简单:declare @<变量名> <变量类型> 对变量的赋值可以使用set关键字,使用set关键字时对变量的赋值一次只能赋值一个. 我们也可以在查询语句里面对这个变量进行赋值. (1). (2).在查询语句中 1. 2.不加条件 (二).全局变量 全局变量:又叫做系统变量.

oracle--pl/sql变量定义----

一.变量介绍 在编写pl/sql程序时,可以定义变量和常量:在pl/sql程序中包括有: 1).标量类型(scalar) 2).复合类型(composite) --用于操作单条记录 3).参照类型(reference) --用于操作多条记录 4).lob(large object) 二.标量(scalar)--常用类型 1).在编写pl/sql块时,如果要使用变量,需在定义部分定义变量. pl/sql中定义变量和常量的语法如下: identifier [constant] datatype [n

二十四、oracle pl/sql 变量

一.变量介绍在编写pl/sql程序时,可以定义变量和常量:在pl/sql程序中包括有:1).标量类型(scalar)2).复合类型(composite) --用于操作单条记录3).参照类型(reference) --用于操作多条记录4).lob(large object) 二.标量(scalar)——常用类型1).在编写pl/sql块时,如果要使用变量,需在定义部分定义变量.pl/sql中定义变量和常量的语法如下:identifier [constant] datatype [not null]

pl sql 变量的声明和赋值

一:pl sql 程序的组成 DECLARE ……声明部分 BEGIN ……程序执行部分 EXCEPTION ……异常处理 END;……结束程序 二:定义变量 DECLARE 变量的名称name 数据类型type: 变量的赋值方法 1.变量的名称name 数据类型type := 给变量赋初始值 2.在内容部分  select  列名    into  变量名: 三:命名规则 1.首字母必须是英文字母,其后可以是字母,数字,$ ,#,和_下划线 2.变量名长度不超过30个字符 3.变量名中不能有空

SQL变量、Substring、charindex、case函数、去除重复

isnull(aa,0)删除表数据: truncate table aaa 添加字段: ALTER TABLE table1 ADD col1 varchar(200) DEFAULT '2008-05-22' 修改字段名: alter table table1 rename column col1 to col2; 修改字段属性: alter table table1 alter column col1 varchar(200) not null; 修改默认值: alter table tab

在SUM()行数中使用SQL变量导致不可预测结果

Query 1) Select * From test; no1 no2 1 1 2 2 3 3 4 4 5 5 Query 2) select @wokao:= (no1 + no2), @wokao from test group by no1; no1 no2 2 2 4 4 6 6 8 8 10 10 Query 3) select @wokao:= (no1 + no2), sum(@wokao) from test group by no1; no1 no2 2 null 4 2 6

SQL 变量

1.变量可以暂时储存数据 --定义变量:  declare @xxx int --变量赋值:  set @xxx=1  select @xxx=3 --变量的使用:  print @xxx 2.--全局变量有两个@开头 @@error: 判断你的变量有没有错 @@rowcount: 返回受上一句代码所影响的行数 3.语句 declare @h int    --定义一个变量set @h=2001   --赋值变量if(@h%100=0 and @h%400=0 or @h%4=0) --输入条件

PL/SQL 02 声明变量 declare

语法:identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr] identifier:用于指定变量或常量的名称.CONSTANT:用于指定常量.当定义常量时,必须指定它的初始值,并且其数值不能变.datatype:用于指定变量或常量的数据类型.NOT NULL:用于强制初始化变量(不能为NULL).当指定 NOT NULL 选项时,必须要为变量提供数值.:= 用于为变量和常量指定初始值.DEFAULT:用于为常量和变量指定初始值.

PL/SQL编程(函数、包、变量)

1.认识PL/SQL的函数 2.创建包和包体,使用包 3.PL/SQL变量的类型 --1.认识PL/SQL的函数 --输入雇员姓名,返回年薪 create or replace function sp_func(spName varchar2) return number is yearSal number(7,2); begin select sal*12+nvl(comm,0)*12 into yearSal from emp where ename=spName; return yearS