我有一種情況,我想要一個存儲過程返回一個表,它自己調用遞歸作爲其計算的一部分。在SQL Server中存儲過程遞歸
不幸的是SQL Server的是有沒有這一點,並給了我沿兩個暫時無法宣佈,已經存在,有關無法嵌套並插入exec語句遊標行錯誤。
我可以通過使用函數解決其中的一些問題嗎?有沒有更好的方法來做到這一點?
計算在本質上是遞歸的,所以沒有這種使用周圍的任何越來越加入,據我可以告訴。
編輯:澄清實際計算,因爲代碼是由其他的東西變得複雜,並且可能變得複雜就事論事
假設表A具有列(數據筒,OBJID,OBJTYPE,重量)和表B具有列(ITEMID ,價值)。
OBJTYPE表A告訴您是否OBJID表A是一個數據筒(再次在表A)或是與從ITEMID表B.
(數據筒,OBJID)是上表A中的主鍵是ITEMID上表B.
通常是一個容器將有數十至數百它物品或其他容器中。希望遞歸深度不超過十幾個級別。 (猜測)計算是得到一個加權平均值。
我想知道更多關於計算......函數無疑會起到一定的作用,但您會驚訝於可以使用子查詢和視圖執行的一些瘋狂事情。我喜歡遊標,但他們經常被誹謗... – Fosco 2010-07-16 20:22:13
您能否提供更多信息 - 特別是關於遞歸存盤的性質。 – 2010-07-16 20:23:08
這是SQL Server嗎?如果您使用的是SQL 2008,則可以使用遞歸CTE完成大多數任務,而不需要任何光標。代碼示例如何,以便我們可以看到您正在嘗試執行的操作? – JohnFx 2010-07-16 20:26:54