T-SQL变量
来源:互联网 发布:centos 7 中net位置 编辑:程序博客网 时间:2024/05/06 07:28
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 intSELECT @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_1SELECT * FROM @TempTable --和普通表一样用,可以各种join,子查询等等。
- T-SQL(1)-变量
- T-Sql变量
- t-sql 变量
- T-SQL变量
- T-SQL 变量作用域
- T-SQL查询进阶--变量
- T-SQL查询进阶--变量
- SQL Server: T-SQL变量声明陷阱
- T-SQL-注释、变量 (转载)
- 在T-sql中使用变量
- T-SQL中的变量声明与赋值
- T-SQL之变量导致索引无效
- T-SQL 之局部变量(1)
- [T-SQL]从变量与数据类型说起
- T-SQL 存储过程与变量
- SQL 2008 T-SQL(表变量参数)
- SQL 2008 T-SQL(表变量参数)
- T-SQL入门攻略之5-T-SQL的变量与常量
- android开发的学习路线
- 认识全面的null
- jsTree动态加载子节点(lazy loading)
- Hadoop2.6.0集群搭建
- 【SuperMap .Net 组件】新建平面场景与球面场景
- T-SQL变量
- Android SQLiteOpenHelper cannot open database file
- 20140808-mysql 存储过程
- Android 生成带Logo的二维码或普通的二维码,后续将会推出一个java exe二维码生成插件
- 使用CocoaPods的例子
- copy
- (AS3)BitmapData.draw比BitmapData.copyPixel能做得更多
- 高大上的苹果San Francisco字体开放下载
- samba相关概念