2017-08-14 96 views
0

我試圖創建一個返回交易列表的查詢報告,其中包含以下內容: Trans_IdTrans_Typedateamountstatusclient如何單個參數,多個參數或空傳遞給報告

查詢是簡單地執行以下操作:

Select Trans_Id, Trans_Type, date, amount, status, client 
from table. 

我想要做的是所有列添加爲報表參數,使用戶可以填寫一個參數或一個以上paramete r並基於此將返回數據或填充任何內容,因此它將返回所有內容。 這就像激活一個WHERE條件,如果一個參數填充,否則返回一切。

任何幫助,將不勝感激這樣做,這將是它使用動態SQL基於所填充PARAMATERS組裝SELECT語句的功能的

回答

1

的一種方式。但是,這可能是你發佈的簡單查詢矯枉過正。

該溶液的測試每個參數是否爲空或者將它與相關的列中:

Select Trans_Id, Trans_Type, date, amount, status, client 
from your_table yt 
where (:p_Trans_Id is null or :p_Trans_Id = yt.Trans_Id) 
and (:p_Trans_Type is null or :p_Trans_Type = yt.Trans_Type) 
and (:p_date is null or :p_date = yt.date) 
and (:p_amount is null or :p_amount = yt.amount) 
and (:p_status is null or :p_status = yt.status) 
and (:p_client is null or :p_client = yt.client) 
/ 

這是一個公認的技術,但它可能難以調這樣的查詢。所以一定要用真實的數據量進行徹底的測試。


注意:參數語法因用於調用語句的客戶端而異。