2012-07-26 57 views
1

我正在修改使用遊標的存儲過程,我希望能夠從插入到表格中的光標中打印輸出值,但我很難弄清楚這個怎麼做。我需要檢查所有的值,例如通過這個存儲過程插入訂單表中。打印出光標值

我不能做

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

我怎麼能輸出/打印所有光標的取值在這些列每次經過記錄?如何在代碼中做到這一點的例子將不勝感激。

+0

你已經用MySQL和SQL Server標記了這個標記嗎?你正在使用哪種RDBMS? – Taryn 2012-07-26 14:58:04

+0

嗨bluefeet,我的錯誤,我正在使用MS SQL Server – Shokwave 2012-07-26 15:06:51

回答

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 
1

如果使用MS SQL Server,那麼你可以使用RAISERROR。 On this link ypu對如何使用它們以及它們之間的差異有很好的解釋。退房RAISERROR sintaxis here

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

祝您好運

+0

STR()不是SQL Server中的函數 – Pondlife 2012-07-26 19:14:27

+0

它*是* tsql函數,但它可能不是正確的在這裏使用 – 2012-07-27 17:47:12

0

的使用PRINT,一個簡單的一招,而不是STR()不存在,或者CONVERT(varchar(50), @orderQuantity) 這是麻煩的,只是使用RTRIM(@orderQuantlty)快速隱式轉換,從數字到字符串。