刚刚70分发完了借了ID再发。函数变量问题,关于参数的能不是实现以下功能:
表名:tb1
字段名:filed1
字段名:filed2create function mysum(@tb varchar(20),@field varchar(100))
returns int
as
begin
declare @sum1 int
set @sum1=0
select sum(@field) from @tb
return @sum1
endselect field1,mysum('tb1','field1+field2') from tb上面的语句在执行的时候是有错误的。比如说sum不能操作字符等
我要达到的目的是给函数传入表名和字段名,因为我需要累加的操作非常多,如果每个都写一个函数的话非常的麻烦,能不能实现我想实现的功能?
表名:tb1
字段名:filed1
字段名:filed2create function mysum(@tb varchar(20),@field varchar(100))
returns int
as
begin
declare @sum1 int
set @sum1=0
select sum(@field) from @tb
return @sum1
endselect field1,mysum('tb1','field1+field2') from tb上面的语句在执行的时候是有错误的。比如说sum不能操作字符等
我要达到的目的是给函数传入表名和字段名,因为我需要累加的操作非常多,如果每个都写一个函数的话非常的麻烦,能不能实现我想实现的功能?
returns int
as
begin
declare @sum1 int ,@sql nvarchar(4000)
set @sum1=0
set @sql=N'select @sum1=IsNULL(sum('+@field+'),0) from '+@tb
exec sp_executesql @sql,N'@sum1 int out',@sum1 out
return @sum1
endselect field1,mysum('tb1','field1+field2') from tb
create proc sp_mysum(@tb varchar(20),@field varchar(100))
as
declare @sql varchar(4000)
set @sql= 'select field1,ISNULL(sum(' + @field + '),0) from ' + @tb
exec(@sql)GO