用万能变量 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 --需要赋值再做转换

解决方案 »

  1.   

    我现在遇到的问题是:当用户输入公司id(int)或者公司名称(varchar),我不知道当用户输入时我该怎么判断,它输入的是id,还是名称。然后再根据它输入的数据作查询。
      

  2.   

    能判断吗?不过我觉得你把Int转换成VarChar[Cast(id as varChar(4))] 再做比较也许不错。