用万能变量 sql_variant
当初是考虑了,但sql_variant类型有个问题,在将一个 sql_variant 对象赋值到另外一种数据类型时,sql_variant 值必须明确地转换为目标数据类型。当 sql_variant 的值被赋给具有其它数据类型的对象时,不支持任何隐性转换,所以没试试,现在想想可以的这样做比如
create procedure test11 @col varchar(10),@result sql_variant output
asdeclare @sql nvarchar(1000)
set @sql='select @result='+@col+' from t'
exec sp_executesql @sql,N'@result sql_variant output ,@col nvarchar(10)',@result output,@col
go---
declare @a sql_variant,@c varchar(20)
exec test11 'a2',@a output
set @c=cast(@a as varchar)
select @c --需要赋值再做转换
当初是考虑了,但sql_variant类型有个问题,在将一个 sql_variant 对象赋值到另外一种数据类型时,sql_variant 值必须明确地转换为目标数据类型。当 sql_variant 的值被赋给具有其它数据类型的对象时,不支持任何隐性转换,所以没试试,现在想想可以的这样做比如
create procedure test11 @col varchar(10),@result sql_variant output
asdeclare @sql nvarchar(1000)
set @sql='select @result='+@col+' from t'
exec sp_executesql @sql,N'@result sql_variant output ,@col nvarchar(10)',@result output,@col
go---
declare @a sql_variant,@c varchar(20)
exec test11 'a2',@a output
set @c=cast(@a as varchar)
select @c --需要赋值再做转换
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货