T-SQL中的变量声明与赋值

T-SQL变量声明

在T-SQL中使用DECLARE语句声明变量以及游标。语法格式如下:

DECLARE @<variable name> <variable type> [= <value>][,@<variable name> <variable type> [= <value>]]


变量名必须以 at 符 (@) 开头,必须符合标识符规则。变量不能是 textntextimage 数据类型。可以一次声明一个变量,也可以一次声明几个变量,如果不初始化变量,则变量被置为NULL,直到显式的将其设置为其他的值。

 

设置变量的值

在T-SQL中使用SELECT或者SET语句设置变量的值,他们的作用是相同的,但是依然有区别:

  • SELECT语句可以一次设置多个变量,而SET语句只能一次声明一个变量,例:
DECLARE @i INT,@j INT
SET @i = 0,@j = 0


代码将不能通过,显示如下错误消息:

服务器: 消息 170,级别 15,状态 1,行 2
第 2 行: ',' 附近有语法错误。


将SET替换为SELECT语句则正常通过。如下:

DECLARE @i INT,@j INT
SELECT @i = 0,@j = 0
命令已成功完成。
  • SELECT语句允许源数据来自SELECT查询中的列,例:
DECLARE @i INT
SELECT @i = COUNT(*) FROM [sysobjects]
PRINT @i


代码正常通过,但是使用SET语句需要做出相应调整:

DECLARE @i INT
SET @i = (SELECT COUNT(*) FROM [sysobjects])
PRINT @i


语法不及使用SELECT易读,特别是有多个列需要赋值给变量的时候,使用SELECT语句的情况下不能为列指定别名,使用SET语句时可以指定别名。

  • 使用SET语句可以为游标变量赋值或者定义游标,而SELECT语句不可以。

为游标变量赋值:

--定义游标
DECLARE db_cursor CURSOR FOR SELECT * FROM [sysobjects]
--声明游标变量
DECLARE @my_variable CURSOR 
--为游标变量赋值,如果游标变量先前引用了一个不同的游标,则删除先前的引用。
SET @my_variable = db_cursor  
--释放游标
DEALLOCATE db_cursor 


定义游标:

--声明游标变量
DECLARE @db_cursorvar CURSOR
--普通变量
DECLARE @object_name nvarchar(80)

--设置游标
SET @db_cursorvar = CURSOR FOR
SELECT [name]
FROM [sysobjects]

--打开游标并循环读取游标
OPEN @db_cursorvar

FETCH NEXT FROM @db_cursorvar
INTO @object_name

WHILE @@FETCH_STATUS = 0
BEGIN
    PRINT @object_name

    FETCH NEXT FROM @db_cursorvar
    INTO @object_name
END

--关闭并释放游标
CLOSE @db_cursorvar
DEALLOCATE @db_cursorvar


需要注意的是SET语句时ANSI/ISO标准的一部分,而SELECT语句,我就不得而知,如果你知道,也欢迎告诉我。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值