何时使用SET和SELECT为变量赋值
作者:网络转载 发布时间:[ 2013/1/16 10:07:07 ] 推荐标签:
当赋值失败时会如何?
当赋值失败时,SET和SELECT 的行为是不一样的。这里的赋值失败可能是没有数据或者数据类型不配等。此时SELECT会返回上一个值(如果上一个值已经赋值成功),而SET会把NULL赋值给变量。不管如何,这种失败的赋值都会产生不可预计的结果,所以需要细心处理。
下面来看看例子:
USE AdventureWorks
GO
-- 展示SET赋值失败的情景
DECLARE @var1 VARCHAR(20)
SET @var1 = 'Value 1 Assigned'
PRINT @var1
SET @var1 = (SELECT Color FROM Production.Product WHERE ProductID = 32022)
PRINT @var1
GO
-- 展示SELECT赋值失败的情景
DECLARE @var1 VARCHAR(20)
SELECT @var1 = 'Value 1 Assigned'
PRINT @var1
SELECT @var1 = Color FROM Production.Product WHERE ProductID = 32023
PRINT @var1
GO
结果如下:
从结果中可以看出当SET失败时,返回NULL,而SELECT失败时会返回上一个结果。
标准:
很多时候,使用SELECT是一个不错的选择,但是用SELECT来赋值并不符合ANSI标准,所以如果要遵循标准(可能因为要移植代码到别的DBMS),应该使用SET来替代SELECT 。
总结:
其实好的方法还是通过实践来证明。很多时候的确可以混用,但是有些时候还是建议单独使用:
使用SET的情景:
● 需要直接赋值,且不需要任何查询,比如变量初始化。
● 故意赋予NULL值。
● 为了将来的移植而遵循ANSI标准。
● 赋予非标量值。
使用SELECT的情景:
● 直接赋予多值变量。
● 通过查询来赋予变量(单值或多值均可)。
● 检查编码量。
● 为了获取变量如@@ROWCOUNT和@@ERROR的值。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11