T-SQL语句如何使用变量,变量的种类是什么
Admin 2022-08-04 群英技术资讯 1512 次浏览
关于“T-SQL语句如何使用变量,变量的种类是什么”的知识有一些人不是很理解,对此小编给大家总结了相关内容,具有一定的参考借鉴价值,而且易于学习与理解,希望能对大家有所帮助,有这个方面学习需要的朋友就继续往下看吧。在T-SQL中,变量按生存范围可以分为全局变量(Global Variable)和局部变量(Local Variable)
示例:
DECLARE @i int --声明一个int类型局部变量 SET @i = 10 --通过SET对局部变量进行赋值 DECLARE @Name nvarchar(20) --声明一个nvarchar(20)类型变量 SET @Name = '张飞' PRINT @@VERSION --全部变量,只能读取,不能赋值 SET @@VERSION = '123' --此行代码报错
select @@CONNECTIONS; --返回自上次SQL启动以来连接或试图连接的次数。 select @@CPU_BUSY / 100; --返回自上次启动SQL 以来 CPU 的工作时间,单位为毫秒 select @@CURSOR_ROWS as w; --返回被打开的游标中还未被读取的有效数据行的行数 select @@DATEFIRST as w; --返回使用SET DATEFIRST 命令而被赋值的DATAFIRST ,用来指定每周的第一天是星期几 select @@FETCH_STATUS as w; --返回上一次FETCH 语句的状态值(0:成功,-1失败或行超过结果集,-2行没找到) select @@DBTS as w; --为当前数据库返回当前 timestamp 数据类型的值。这一 timestamp 值保证在数据库中是唯一的。 select @@ERROR; --返回最后执行的 Transact-SQL 语句的错误代码(integer) (0,表示没错误;1,表示有错误) select @@IDENTITY as w; --返回最后插入的标识值 select @@IDLE as w; --返回SQL自上次启动后闲置的时间,单位为毫秒 select @@IO_BUSY as w; --返回SQL自上次启动后用于执行输入和输出操作的时间,单位为毫秒 select @@LANGID as w; --返回当前所使用语言的本地语言标识符(ID)。 select @@LANGUAGE as w; --返回当前使用的语言名 select @@LOCK_TIMEOUT as w; --当前会话的当前锁超时设置,单位为毫秒。 select @@MAX_CONNECTIONS as w; --返回SQL上允许的同时用户连接的最大数。返回的数不必为当前配置的数值 select @@MAX_PRECISION as w; --返回 decimal 和 numeric 数据类型所用的精度级别,即该服务器中当前设置的精度。默认最大精度38。 select @@OPTIONS as w; --返回当前 SET 选项的信息。 select @@PACK_RECEIVED as w; --返回SQL自启动后从网络上读取的输入数据包数目。 select @@PACK_SENT as w; --返回SQ自上次启动后写到网络上的输出数据包数目。 select @@PACKET_ERRORS as w; --返回自SQL启动后,在SQL连接上发生的网络数据包错误数。 select @@ROWCOUNT as w; --返回上一次语句影响的数据行的行数 select @@SERVERNAME as w; --返回运行SQL服务器名称。 select @@SERVICENAME as w; --返回SQL正在其下运行的注册表键名 select @@TIMETICKS as w; --返回SQL服务器一刻度的微秒数 select @@TOTAL_ERRORS as w; --返回 SQL服务器自启动后,所遇到的磁盘读/写错误数。 select @@TOTAL_READ as w; --返回 SQL服务器自启动后读取磁盘的次数。 select @@TOTAL_WRITE as w; --返回SQL服务器自启动后写入磁盘的次数。 select @@TRANCOUNT as w; --返回当前连接的活动事务数。 select @@VERSION as w; --返回当前安装的SQL Server 的日期版本处理器
局部变量的声明必须以"DECLARE"作为关键字,变量的命名必须以"@"作为变量名的第一个字符,必须为所声明的变量提供一个数据类型和数据长度。
如:
DECLARE @Name nvarchar(20)
注意:局部变量的数据类型不能为Text,ntext,和Image类型,当对于字符型变量只提供数据类型没有提供数据长度时,数据长度默认为1.
有两种设置变量值方法。可以使用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
当变量中存储的信息来源于查询时,经常使用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 = '张飞'
例如:
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,子查询等等。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
SQL Server常见的问题主要是SQL问题造成,常见的主要是CPU过高和阻塞。关于SqlServer异常处理常用步骤有哪些呢?大家了解吗?下面小编通过本篇文章给大家介绍SqlServer异常处理常用步骤,感兴趣的朋友就继续往下看吧。
前言上几篇文章我们介绍了如何查看查询计划、常用运算符的介绍、并行运算的方式,有兴趣的可以点击查看。本篇将分析在SQLServer中,如何利用先有索引项进行查询性能优...
SQL AND&OR运算符用于根据一个以上的条件过滤记录,即用于组合多个条件以缩小SQL语句中的数据。WHERE子句可以与AND,OR和NOT运算符结合使用。AND和OR运算符用于根据多个条件筛选记录:如果由AND分隔的所有条件为TRUE,则AND运算符显示记录。 如果使
SQL Server和MySQL中的Date函数的用法是什么?注意:当我们处理日期时,最困难的任务可能是确保插入日期的格式与数据库中日期列中的格式相匹配。只要您的数据仅包含日期的一部分,运行查询就不会成为问题。然而,当涉及到时间时,情况会稍微复杂一些。
数据库是用来存放数据的,我们经常会对数据进行查询操作,文本就主要介绍row_number分页查询的用法,ROW_NUMBER()函数既可以,满足分区的需求,也可以根据一定顺序排序,非常好用,感兴趣的朋友可以了解一下。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008