我正在修改一个使用游标的存储过程,我希望能够打印或输出插入到表中的游标中的值,但很难弄清楚如何做到这一点。例如,我需要检查通过此存储过程插入到订单表中的所有值。
我做不到
Print @prodId, @orderQuantity, @orderDate, @orderLocationId, @shipmentId, @shipmentDate
我如何输出/打印游标在这些列中为它经过的每条记录的所有值?一个如何在代码中执行此操作的示例将不胜感激。
我正在修改一个使用游标的存储过程,我希望能够打印或输出插入到表中的游标中的值,但很难弄清楚如何做到这一点。例如,我需要检查通过此存储过程插入到订单表中的所有值。
我做不到
Print @prodId, @orderQuantity, @orderDate, @orderLocationId, @shipmentId, @shipmentDate
我如何输出/打印游标在这些列中为它经过的每条记录的所有值?一个如何在代码中执行此操作的示例将不胜感激。
尝试
PRINT STR(@prodId) + STR(@orderQuantity) + STR(@orderDate) + STR(@orderLocationId) + STR(@shipmentId) + STR(@shipmentDate)
如果那不起作用,那么(对于非 int 变量)尝试
CAST(@orderDate as NVARCHAR(MAX))
也看看这篇文章。 http://msdn.microsoft.com/en-us/library/ms187928.aspx
祝你好运
您可以通过将插入的行输出到具有标识的临时表中来以正确的顺序捕获和存储插入的行;
create table #inserted(insertorder int identity(0,1), prodId int, orderQuantity int ... <matches inserted row>)
--cursor loop
insert destination_table(prodId, orderQuantity, ...)
output inserted.* into #inserted /*output inserted.* will just select it */
values @prodId, @orderQuantity ...
--end loop
--inserted rows;
select * from #inserted order by insertorder
使用 PRINT 时,一个简单的技巧,而不是 STR() 不存在,或者CONVERT(varchar(50), @orderQuantity)
很麻烦,只RTRIM(@orderQuantlty)
用于从数字到字符串的快速隐式转换。