打印出光标值

时间:2012-07-26 14:56:36

标签: sql sql-server sql-server-2008

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

我无法做到

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

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

4 个答案:

答案 0 :(得分:1)

如果使用MS SQL Server,则可以使用RAISERROR。 On this link ypu对如何使用它们以及它们之间的差异有很好的解释。查看RAISERROR sintaxis here

答案 1 :(得分: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

最好的运气

答案 2 :(得分: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 

答案 3 :(得分:0)

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