2012-08-03 92 views
1

是否可以在SQL Server中更改变量类型?东西时,你有在运行时更改变量类型

DECLARE @a INT; 
SET @a = 3 

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

回答

4
declare @s sql_variant 
select @s=3 
select @s='hello' 
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来存储未指定的数据。但它不能用于文本,ntext和时间戳而无需转换