在這種sqlfiddle ...瞭解遞歸CTE終止檢查
http://sqlfiddle.com/#!6/b6587/6
我收到以下錯誤....
終止聲明。報表完成前,最大遞歸100已用盡 。
我知道需要在CTE的第二個選擇的where子句中進行「終止檢查」。即使您取消註釋WHERE子句,也會得到相同的錯誤。
我只是想了解1)爲什麼需要...畢竟每個訂單行都與每個客戶行有關係,2)因爲需要「終止檢查」,所以它看起來像什麼讓這個例子工作。
順便說一句,我希望看到這個查詢的輸出如下。
1,'George', 'Patton','',''
1,'','','<some date>', 'tank'
1,'','','<some date>', 'plane'
2,'Lewie', 'Puller','',''
2,'','','<some date>', 'Rifle'
2,'','','<some date>', 'Hand Grenade'
順便說一句,隨時(不使用遞歸CTE)的其他方式來獲得這種結果發表評論,但還沒有使用遊標或臨時表。我想用基於集合的操作來做到這一點。
編輯
爲了記錄在案,我知道參加的工作,但我有問遞歸的理由。爲了給你上下文,我正在處理一個導出文件的結果集。每行只有一列稱爲LINE。此外,導出文件需要按照我的示例的順序輸出...細節需要在標題行下面,該模式需要重複...標題/細節...標題/細節。我認爲遞歸可以解決這個問題。但我知道簡單的連接也可以解決它,只要我可以得到行正確的順序...頭/細節...頭/細節,也許有一些方法來做一個列排序數字的輸出正確的方式。
我的導出不會依賴於調用應用程序來格式化數據......存儲過程需要格式化數據。
你爲什麼在這裏使用遞歸? IT將無休止地循環查找相同的客戶編號,一遍又一遍地重複查看訂單表。看起來像一個簡單的連接會做你正在做的任何事情,因爲這個數據沒有層次關係。查看[這個sqlfiddle](http://sqlfiddle.com/#!6/b6587/9)使用「深度」來跟蹤遞歸步驟並將遞歸限制爲20. – JNevill
它會超過遞歸的最大數量,它默認情況下是100.這是由於你有一個查詢問題 - 這是一個無限的遞歸,因爲@JNevill聲明 – scsimon
任何反饋seth? – scsimon