在运行时更改变量类型

时间:2012-08-03 08:14:27

标签: sql-server tsql variables declare

是否可以在SQL Server中更改变量类型?像你有的时候

DECLARE @a INT;
SET @a = 3

但稍后您想使用@a来存储VARCHAR?有没有办法取消它,改变它可以存储的数据类型? T-SQL是否允许这样做?

2 个答案:

答案 0 :(得分:4)

declare @s sql_variant
select @s=3
select @s='hello'

答案 1 :(得分:4)

一旦声明无法更改类型,变量名称在sql批处理中必须是唯一的。

 Declare @a int
 Set @a=4
 Select @a

Declare @a varchar(10)
set @a='Sample'
Select @a

您将收到错误

 The variable name '@a' has already been declared. Variable names must be
 unique within a query batch or stored procedure.

但是,您可以使用go结束一批Transact-SQL语句,然后再次声明变量

 Declare @a int
 Set @a=4
 Select @a
 Go
 Declare @a varchar(10)
 set @a='Sample'
 Select @a

否则,您可以使用sql_variant来存储未指定的数据。但是,如果没有转换,它不能用于text,ntext和timestamp