2017-05-30 159 views
0

我有一個查詢,在這裏我接受3個參數所有的參數是可選的。但 當一個參數來的數據將過濾它與該參數,當兩個參數 數據它需要從這兩個參數中過濾掉。根據參數過濾器查詢Oracle

在這裏所有三個參數,如果兩個參數有一個值,那麼我通過其他參數爲空

問題是當兩個參數來和anotherone爲空在此查詢

我的查詢不過濾喜歡這個。

string NewsQuery = @"SELECT N.NID,N.NEWS,N.REFSEC,N.AUTHRIZED,N.USERID,N.REFERENCENO 
     FROM TBL_NEWS N 
     WHERE N.REFERENCENO=:ReferenceNo AND N.NID =:Nstatus AND N.USERID=:StaffNo"; 

cmd = db.GetSqlStringCommand(NewsQuery); 
db.AddInParameter(cmd, "ReferenceNo", DbType.String, null); 
db.AddInParameter(cmd, "Nstatus", DbType.String, NewsStatus); 
db.AddInParameter(cmd, "StaffNo", DbType.String, userno); 
+0

我認爲你應該添加'C#'標籤也 – Nitish

+0

使用存儲過程來實現你現在正在做的事情,它會在像你這樣的情況下收穫更好的水果。 –

回答

2

您需要添加或條款,您的查詢,讓NULL參數值。

string NewsQuery = @「SELECT N.NID,N.NEWS,N.REFSEC,N.AUTHRIZED,N.USERID,N.REFERENCENO FROM TBL_NEWS N WHERE(N.REFERENCENO =:ReferenceNo OR:ReferenceNo IS NULL) AND(N.NID =:Nstatus OR:Nstatus IS NULL)AND(N.USERID =:StaffNo OR:StaffNo IS NULL)「;