2011-05-31 40 views
1

我有一個存儲過程,我目前正在使用哪個動態sql查詢。長時間動態Oracle查詢和如何調試

它有一個變量分配給(5000-6000個字符的動態SQL),另一個變量分配給(5000-6000個字符的動態SQL) 和兩個變量之間的UNION ALL。

我從程序中獲得了動態查詢,並在編輯器上運行它。它向我返回了一行數據。我怎樣才能調試這個查詢?

我可以這樣做:

var1 = "dyamic SQL..." 
UNION ALL 
var2 = "dynamic SQL..." 

任何意見,幫我調試,這將是非常讚賞。

+0

我不認爲你可以做你想做的事情。您可能必須將動態SQL提取爲* real *查詢,填寫任何替換值,然後嘗試在查詢窗口中運行它。 – FrustratedWithFormsDesigner 2011-05-31 15:10:25

+0

除了檢查結果之外,你想調試一下嗎?存儲過程可以調試。查詢(對外)是原子操作。 – GolezTrol 2011-05-31 15:11:40

+1

我可以嘗試由FrustratedWithFormsDesigner建議的方法查詢返回錯誤的結果,所以我試圖修復它,所以這就是我通過調試提到的。 – kalls 2011-05-31 15:25:43

回答

3

您可以運行一個動態查詢(如果這是一個術語),但不是這樣。您可以使用執行

EXECUTE IMMEDIATE 'sqlstring' 

或使用

OPEN c FOR 'sqlstring' 

查詢字符串,有一個包也可以讓你執行一個查詢與綁定參數。

但所有這些要求的查詢是一個字符串,所以我建議你把兩個查詢一起在第三個變量...

var3 = var1 || ' UNION ALL ' || var2; 

..然後執行VAR3。

+0

我也會嘗試這種方法。感謝Golez。 – kalls 2011-05-31 15:26:01