问题描述
USE[TestPoints3000]GO/******Object:StoredProcedure[dbo].[Product_InsertData]ScriptDate:05/14/201509:07:42******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATEPROCEDURE[dbo].[Product_InsertData]@TvpTempBluckREADONLYASdeclare@tableNamevarchar(75)declare@tablesastable(idintidentity,tableNamevarchar(75))declare@iint--初始化表的数量set@i=0--添加传入参数的表名到临时表insertinto@tables(tableName)selectdistincttableNamefrom@Tvp--遍历临时表并添加数据while@i<=(selectCOUNT(*)from@tables)beginselect@tableName=tableNamefrom@tableswhereid=@iexec('insertinto'+@tableName+'(PointTime,PointValue)selecttp.PointTime,tp.PointValuefrom'+@Tvp+'astpwheretp.tableName='+@tableName)set@i=@i+1;endGO消息137,级别16,状态1,过程Product_InsertData,第35行必须声明标量变量"@Tvp"。
解决方案
解决方案二:
创建临时表,从临时表中差数据?--添加传入参数的表名到临时表insertinto@tables(tableName)selectdistincttableNamefrom@tables
解决方案三:
创建临时表@tables,并从@Tvp参数中查询为唯一的表名插入到@table中,@Tvp是表值参数