根据Oracle的参数筛选查询

时间:2017-05-30 05:08:39

标签: c# sql asp.net oracle

我有一个查询,在这里我接受3个参数,所有参数都是可选的。但是 当一个参数出现时,数据将使用该参数和两个参数进行过滤 参数来自需要从这两个参数中过滤的数据。

在这里所有三个参数,如果两个参数有一个值,那么我将另一个参数作为空

传递

问题是当两个参数出现而另一个是null时未在此查询中过滤

我这样的查询。

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);

1 个答案:

答案 0 :(得分:2)

您需要在查询中添加OR子句以允许 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)“;