我想将@sql的值转换为p。但是在转换时,它说“当将nvarchar值'select sum(股) fromHard磁盘‘转换为数据类型int时,转换失败了。”
declare @tname varchar(10);
declare @p int
declare @i int
declare @sql nvarchar(max);
set @tname = 'Hard disk';
set @sql = 'select sum(stock) from' + '[' + @tname + ']'
exec (@sql)
print @sql
select @p = convert(int,@sql)
print @p我想要的是在整数变量@p中分配查询@SQL的结果。
发布于 2013-09-19 06:56:36
一种方法是在动态sql中完成所有这些工作。
declare @tname varchar(10);
declare @p int
declare @i int
declare @sql nvarchar(max);
set @tname = 'Hard disk';
set @sql =
'DECLARE @Result AS INT
select @Result = sum(stock) from' + '[' + @tname + ']
PRINT @Result'
exec (@sql)另一种方法是创建一个输出参数。
DECLARE @tname VARCHAR(50)
DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)
DECLARE @Result INT
SET @tname = 'Hard disk';
SET @SQLString = N'SELECT @Result = sum(stock)
FROM ' + QUOTENAME( @tname )
SET @ParmDefinition = N'@Result INT OUTPUT'
EXECUTE sp_executesql
@SQLString,
@ParmDefinition,
@Result=@Result OUTPUT
PRINT @Result您最好使用QUOTENAME来用括号来修饰表名,因为它是本机的。
发布于 2013-09-19 07:08:39
declare @p int;
EXEC SP_EXECUTESQL N'select @p = sum(stock) from '[' + @tname + ']',N'@p int OUTPUT',@p OUTPUT;
select @phttps://stackoverflow.com/questions/18887970
复制相似问题