C# 根据Oracle参数筛选查询

C# 根据Oracle参数筛选查询,c#,sql,asp.net,oracle,C#,Sql,Asp.net,Oracle,我有一个查询,在这里我接受3个参数,所有参数都是可选的 当一个参数出现时,数据将使用该参数进行过滤,当两个参数出现时 参数来自需要从这两个参数中筛选的数据 在这里,所有三个参数,如果两个参数有一个值,那么我将另一个参数作为null传递 问题是,当两个参数出现时,另一个参数为null,而在该查询中未过滤 我的问题是这样的 string NewsQuery = @"SELECT N.NID,N.NEWS,N.REFSEC,N.AUTHRIZED,N.USERID,N.REFERENCENO

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

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

问题是,当两个参数出现时,另一个参数为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);

您需要向查询中添加OR子句以允许空参数值


string NewsQuery=@从TBL_NEWS N中选择N.NID、N.NEWS、N.REFSEC、N.authorized、N.USERID、N.REFERENCENO,其中N.REFERENCENO=:REFERENCENO或:REFERENCENO为NULL,N.NID=:Nstatus或:Nstatus为NULL,N.USERID=:StaffNo或:StaffNo为NULL

您需要在查询中添加OR子句以允许空参数值


string NewsQuery=@从TBL_NEWS N中选择N.NID、N.NEWS、N.REFSEC、N.authorized、N.USERID、N.REFERENCENO,其中N.REFERENCENO=:REFERENCENO或:REFERENCENO为NULL,N.NID=:Nstatus或:Nstatus为NULL,N.USERID=:StaffNo或:StaffNo为NULL

我认为你应该添加C标记并使用一个存储过程来实现你现在正在做的事情,它会在像你这样的情况下收获更好的成果。我认为你应该添加C标记并使用一个存储过程来实现你现在正在做的事情,它会在像你这样的情况下收获更好的成果。