1

我正在修改一个使用游标的存储过程,我希望能够打印或输出插入到表中的游标中的值,但很难弄清楚如何做到这一点。例如,我需要检查通过此存储过程插入到订单表中的所有值。

我做不到

Print @prodId, @orderQuantity, @orderDate, @orderLocationId, @shipmentId,  @shipmentDate

我如何输出/打印游标在这些列中为它经过的每条记录的所有值?一个如何在代码中执行此操作的示例将不胜感激。

4

4 回答 4

1

如果使用 MS SQL Server,那么您可以使用 RAISERROR。在此链接上,ypu 对如何使用它们以及它们之间的差异进行了很好的解释。在这里查看 RAISERROR sintaxis

于 2012-07-26T15:03:37.553 回答
1

尝试

     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

祝你好运

于 2012-07-26T15:35:19.110 回答
0

您可以通过将插入的行输出到具有标识的临时表中来以正确的顺序捕获和存储插入的行;

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 
于 2012-07-26T15:24:21.570 回答
0

使用 PRINT 时,一个简单的技巧,而不是 STR() 不存在,或者CONVERT(varchar(50), @orderQuantity) 很麻烦,只RTRIM(@orderQuantlty)用于从数字到字符串的快速隐式转换。

于 2016-01-01T08:48:31.163 回答