declare @sql nvarchar(4000),@totalAvg int set @sql=N'select @totalAvg=SUM('+@totalColumn+')/NULLIF(COUNT(1),0) from Score'exec sp_executesql @sql,'@totalAvg int output,@totalColumn varchar(50)', @totalAvg output,列名的值
EXEC ('select SUM('+@totalColumn+')/NULLIF(COUNT(1),0) as totalsum into ## from Score') select @totalAvg = totalsum from ##
declare @sql nvarchar(1000) declare @totalAvg int declare @totalColumn int --类型和赋值 自己写 set @sql='select '+@totalAvg+'=SUM('+@totalColumn+')/NULLIF(COUNT(1),0) from Score' exec sp_executesql @sql,N'@totalAvg int output',@totalAvg output select @totalAvg
DECLARE @totalAvg INT EXEC SP_EXECUTESQL N'select @totalAvg=1' ,N'@totalAvg INT OUTPUT',@totalAvg=@totalAvg OUTPUT SELECT @totalAvg --1
declare @avg_data table (id int identity(1,1) ,totalsum float)EXEC ('select SUM('+@totalColumn+')/NULLIF(COUNT(1),0) as totalsum into @avg_data from Score') select @totalAvg = totalsum from @avg_data是不是该改成这样呀?为什么提示 @avg_data 附近有语法错误!
我刚调试了下 @totalAvg还是没有值,怎么办呢?
如果LZ用的是SS2005及以上,顶4楼6楼7楼。这是最佳方案。
--SS2005及以上的最佳方案 DECLARE @totalAvg INT EXEC sp_executesql N'select @totalAvg=1',N'@totalAvg INT OUTPUT',@totalAvg=@totalAvg OUTPUT SELECT @totalAvg--SS2000可以这种方案 DECLARE @totalAvg INT SELECT totalAvg = @totalAvg INTO #totalAvg WHERE 1=0 EXEC('INSERT INTO #totalAvg select totalAvg=1') SELECT @totalAvg = totalAvg FROM #totalAvg DROP TABLE #totalAvg SELECT @totalAvg
能否帮忙解释下 DECLARE @totalAvg INT EXEC sp_executesql N'select @totalAvg=1',N'@totalAvg INT OUTPUT',@totalAvg=@totalAvg OUTPUT SELECT @totalAvg 这是什么意思?
EXEC ('select SUM('+@totalColumn+')/NULLIF(COUNT(1),0) as totalsum into # from Score')
select @totalAvg = totalsum from #
http://blog.csdn.net/xys_777/archive/2010/06/24/5690909.aspx
set @sql=N'select @totalAvg=SUM('+@totalColumn+')/NULLIF(COUNT(1),0) from Score'exec sp_executesql
@sql,'@totalAvg int output,@totalColumn varchar(50)',
@totalAvg output,列名的值
select @totalAvg = totalsum from ##
declare @totalAvg int
declare @totalColumn int
--类型和赋值 自己写
set @sql='select '+@totalAvg+'=SUM('+@totalColumn+')/NULLIF(COUNT(1),0) from Score'
exec sp_executesql @sql,N'@totalAvg int output',@totalAvg output
select @totalAvg
EXEC SP_EXECUTESQL N'select @totalAvg=1'
,N'@totalAvg INT OUTPUT',@totalAvg=@totalAvg OUTPUT
SELECT @totalAvg
--1
select @totalAvg = totalsum from @avg_data是不是该改成这样呀?为什么提示 @avg_data 附近有语法错误!
--SS2005及以上的最佳方案
DECLARE @totalAvg INT
EXEC sp_executesql N'select @totalAvg=1',N'@totalAvg INT OUTPUT',@totalAvg=@totalAvg OUTPUT
SELECT @totalAvg--SS2000可以这种方案
DECLARE @totalAvg INT
SELECT totalAvg = @totalAvg INTO #totalAvg WHERE 1=0
EXEC('INSERT INTO #totalAvg select totalAvg=1')
SELECT @totalAvg = totalAvg FROM #totalAvg
DROP TABLE #totalAvg
SELECT @totalAvg
DECLARE @totalAvg INT
EXEC sp_executesql N'select @totalAvg=1',N'@totalAvg INT OUTPUT',@totalAvg=@totalAvg OUTPUT
SELECT @totalAvg
这是什么意思?
declare @sql nvarchar(1000)
set @sql='select '+@totalAvg+'=SUM('+@totalColumn+')/NULLIF(COUNT(1),0) from Score'
EXEC SP_EXECUTESQL @sql,N'@totalAvg float OUTPUT',@totalAvg=@totalAvg OUTPUT
SELECT @totalAvg为什么提示从数据类型 varchar 转换为 float 时出错。
set @sql='select @totalAvg=SUM('+@totalColumn+')/NULLIF(COUNT(1),0) from Score'