2017-02-04 53 views
0

我有一個程序,根據參數,where條件會有所不同。 OUT參數必須是INTO子句,以便我可以返回過程中的列。程序 - 動態條件

而不是每個條件都有SQL條件,這樣做的有效方式是什麼?

+0

也許GurV是要發佈一些不同的查詢,而不是隻有一個 – Massimo

+0

我沒有將我所有的IN參數@GurV,也有參數約10。所以會有更多的條件。 – user75ponic

回答

2

它在我看來更像一個設計問題。 所以這取決於你需要達到什麼以及你想如何組織你的代碼。

可能性

1-你的「如果」中相同的操作的查詢鏈爲每個查詢

2-一個過程 - 如果「其中的」份之間的differencies不這麼大的使用SQL構造,包括工會,情況和\或等,讓在一個查詢並存不同的情況

4-構建SQL動態和使用執行即時

通常我不喜歡1,我會嘗試3或4,然後繼續2如果我不能。

編輯

使用動態SQL,對失控的結果,你可以做

EXECUTE IMMEDIATE stmt into o_total_count,o_total_sum,o_hold_status,o_normal_status; 

如果您對查詢輸入參數,可以,你必須將它們與馬克:然後添加使用條款與適當的輸入參數。

 EXECUTE IMMEDIATE 'select count(*) from departments where department_id=:id' INTO l_cnt USING l_dept_id; 
+0

如果我正在使用EXCUTE IMMEDIATE,如何將值分配給OUT參數。 – user75ponic

+1

EXECUTE IMMEDIATE sql_stmt INTO var1,var2; – Massimo

+0

請參閱我在編輯答案中有關動態sql的其他解釋 – Massimo