存储过程变量赋值

0
请教个问题,我想从一个表里面获取合计数据,然后赋值给一个变量,表名、字段名都是变量的,我是这样写的,执行提示 无法将char值转换为money,我试了如果表名和字段名不是变量,没问题,我错在哪里?

 alter procedure bbb  @tablename1 varchar(20),@fieldname1 varchar(20) as
declare @sum1 money
declare @sql varchar(500)
set @sql='select '+@sum1+'=(select SUM(' + @fieldname1 + ') from ' +@tablename1+')'
print @sql
exec (@sql)
print @sum1

exec bbb 'charge','dbo.G_Study_Count_172310' 
 
 
如果改成这样,提示必须声明标量变量'@sum1'
alter procedure bbb  @tablename1 varchar(20),@fieldname1 varchar(20) as
declare @sum1 money
declare @sql varchar(500)
set @sql='select @sum1=(select SUM(' + @fieldname1 + ') from ' +@tablename1+')'
print @sql
exec (@sql)
print @sum1
已邀请:
0

GeorgeYao - 路漫漫其修远兮,吾将上下而求索! 2016-11-10 回答

指的是@sum1的类型没有定义,在数据库中并无money这个类型;大概是这个原因导致吧

要回复问题请先登录注册