iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >SQL Server在T-SQL语句中怎么使用变量
  • 179
分享到

SQL Server在T-SQL语句中怎么使用变量

2023-06-30 15:06:31 179人浏览 八月长安
摘要

这篇文章主要介绍了sql Server在T-SQL语句中怎么使用变量的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SQL Server在T-SQL语句中怎么使用变量文章都会有所收获,下面我们

这篇文章主要介绍了sql Server在T-SQL语句中怎么使用变量的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SQL Server在T-SQL语句中怎么使用变量文章都会有所收获,下面我们一起来看看吧。

变量的种类

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

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

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

示例:

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

全局变量

全局变量的用途

  • 全局变量是SQL Server系统内部使用的变量,其作用范围并不仅仅局限于某一程序,而是任何程序均可以随时调用。

  • 全局变量通常存储一些SQL Server的配置设定值和统计数据。用户可以在程序中用全局变量来测试系统的设定值或者是Transact-SQL命令执行后的状态值。

全局变量列表

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语句中的某一列。

1、使用SET设置变量

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_1SELECT * FROM @TempTable    --和普通表一样用,可以各种join,子查询等等。

关于“SQL Server在T-SQL语句中怎么使用变量”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“SQL Server在T-SQL语句中怎么使用变量”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: SQL Server在T-SQL语句中怎么使用变量

本文链接: https://www.lsjlt.com/news/329885.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何在 Golang 中替换正则表达式匹配的文本?
    在 go 中,可使用 regexp.replaceall 函数替换符合正则表达式的文本,该函数需要三个参数:待替换字符串、匹配模式和替换文本。例如,将字符串中 "fox" 替换为 "do...
    99+
    2024-05-14
    golang 正则表达式
  • 如何在 Golang 中测试随机数生成器的准确性?
    在 go 中测试随机数生成器准确性的步骤包括:生成大量随机数并计算每个范围内的出现次数,以确保均匀分布。针对指定均值和标准差计算每个范围内的出现次数,以确保正态分布。 如何在 Gola...
    99+
    2024-05-14
    golang 随机数
  • 面向对象设计原则在C++中的体现
    c++++ 体现了 oop 原则,包括:封装:使用类将数据和方法封装在对象中。继承:允许派生类从基类继承数据和行为。多态:允许对象的行为根据其类型而改变,通过虚函数实现。 面向对象设计...
    99+
    2024-05-14
    c++ 面向对象
  • c语言怎么区分小数和整数
    c 语言区分小数和整数的方法有:数据类型不同:小数类型(float、double)包含小数点,整数类型(int)不包含。printf() 函数中使用不同格式化字符串:小数用 %f,整数用...
    99+
    2024-05-14
    c语言
  • 设计模式在C++ 中的可复用性和可扩展性
    在 c++++ 中,设计模式通过提供经过验证的解决方案来提高可复用性和可扩展性。可复用性允许重复使用代码,例如 factory method 模式,它支持创建不同的产品而不影响具体类。可...
    99+
    2024-05-14
    c++ 设计模式 高可扩展性
  • C++语法中函数模板的灵活运用
    C++ 语法中函数模板的灵活运用 函数模板是 C++ 中的一项强大功能,允许您创建可用于不同数据类型的一组代码。这可以提高代码的可重用性,并使您能够编写更通用、更可维护的代码。 语法 ...
    99+
    2024-05-14
    c++语法 函数模板 c++
  • c语言怎么计算字符串长度和宽度
    在 c 语言中,计算字符串长度和宽度的函数分别为:strlen() 函数用于计算字符串长度,不包括终止符 '\0'。strwidth() 函数用于计算字符串在终端中的宽度,返回显示像素数...
    99+
    2024-05-14
    c语言
  • 如何用 Golang 正则匹配多个单词或字符串?
    golang 正则表达式使用管道符 | 来匹配多个单词或字符串,将各个选项作为逻辑 or 表达式分隔开来。例如:匹配 "fox" 或 "dog":fox|dog匹配 "quick"、"b...
    99+
    2024-05-14
    golang 正则 python
  • c语言怎么跳出多层循环
    在 c 语言中,可以使用嵌套的 break 语句跳出多层循环。对于每个要跳出的循环层,都需要一个单独的 break 语句。例如:使用一个 break 语句跳出内层循环再使用一个 brea...
    99+
    2024-05-14
    c语言
  • c语言怎么注释成中文
    c语言中文注释提供两种方式:行内注释(以"//"开头)和块注释(以"/"开头并以"/"结尾)。最佳实践包括:使用简明扼要的语言,在函数和类开头处添加块注释,在关键部分添加行内注释,保持注...
    99+
    2024-05-14
    c语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作