自定义表类型如下:
CREATE TYPE [dbo].[UdtStatItem] AS table(
[ObjCode] [bigint] NulL,
[TimeCode] [int] NulL,
[Data] [int] NulL
)
GO
传过来的是一个Datatable类型 的表跟表类型对应;
存储过程如下
CREATE proc [dbo].[proc_WeekStat]
@tbname varchar(50),@tvpNew UdtStatItem Readonly
as
begin
declare @sql1 nvarchar(max);
declare @sql2 nvarchar(max);
set @sql1=N'update tb set tb.data=tb.data+tn.Data from @p tn left join '+
@tbname+N' tb on tn.objCode=tb.objCode and tn.TimeCode=tb.TimeCode where tb.TimeCode IS NOT NulL and tb.objCode IS NOT NulL'
Exec sp_executesql @sql1,N'@p UdtStatItem Readonly',@tvpNew;
end
GO
这里面主要内容是Exec sp_executesql @sql1,@tvpNew; 这句里面
@sql1是拼的SQL语句。传过来的表名直接拼。@p是表类型,所以要说明类型
总结以上是内存溢出为你收集整理的Sqlserver表类型和表名同事传参数据库 *** 作全部内容,希望文章能够帮你解决Sqlserver表类型和表名同事传参数据库 *** 作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)