关于存储过程的一个简单问题。存储过程:减少表数据
我有一个存储过程收集表中的一大堆数据。然后我从另一个存储过程中调用此过程。我可以将数据复制到调用过程中创建的新表中,但据我所见,表必须完全相同。
这是正确的吗?或者有没有办法只插入我想要的数据?
例如....
我有一个程序,它返回这个:
SELECT @batch作为批次, @count如数量, pd.Location, 铸造(pd.GL作为十进制(10,3))作为[Length], cast(pd.GW,十进制(10,3))作为宽度, cast(pd.GT作为十进制(10,3))作为厚度 FROM propertydata pd GROUP BY pd.Location, pd.GL, pd.GW, pd.GT
我然后调用该过程,但只希望如下的数据:
DECLARE @BatchTable TABLE( 批次VARCHAR(50), [长度]十进制(10,3) , 宽度十进制(10,3), 厚度十进制(10,3), )
INSERT @BatchTable(批次,[长度],宽度,厚度) EXEC dbo.batch_drawings_NEW @batch
小号o在第二个命令中我不需要数量和位置值。
然而上面的代码保持返回错误:
“插入错误:列名或提供的值不匹配表中的号码”
难道你不能从第一个存储过程的输出中选择插入列吗?我不记得语法,但像'INSERT @BatchTable(Batch,[Length],Width,Thickness)(选择批次,[长度],宽度,厚度从EXEC dbo.batch_drawings_NEW)@ batch'或'SELECT Batch, [长度],宽度,厚度INTO @BatchTable FROM EXEC dbo.batch_drawings_NEW)@ batch'? – Lazarus 2010-05-26 15:35:52
我相信你也可以这样做。我不确定数据库之间的一致性如何。 – 2010-05-26 15:41:24
对不起,我应该更清楚。 我想在第一个过程中选择所有这些属性,因为我想在可能需要额外数据的其他过程中使用它。这个例子中的调用过程并不需要其中的一部分。所以我认为,而不是插入一个新的表,我可以插入一些? 我将尽力为INSERT选择列。 干杯。 – SumGuy 2010-05-27 08:21:55