0

我有一个遇到问题的 C# ashx 处理程序,我有两个相互叠加的查询,第一个查询采用一个参数,而第二个查询采用原始查询,环绕它并采用两个参数返回行号

错误是 ORA-01008:并非所有变量都绑定

第一个查询(部分)

 sSql += @"AND a.assignment_type in ('PS','SS')
           AND ((:byAuthor = 'N' AND a.assignment_type in ('PS','SS'))

第二次查询

 string filteredSql = @"select * from (";
  filteredSql += sSql;
 filteredSql +=@" ) WHERE rowsNumerator BETWEEN :iDisplayStart AND :iDisplayEnd";

查询执行

 DataSet totalResults = dbi.GetDynamicDataSet(sSql, tcParameters);
 int iTotalCount = totalResults.Tables[0].Rows.Count;
 DataSet filteredResults = dbi.GetDynamicDataSet(filteredSql, dtParameters);

请求声明

 var byAuthor = context.Request.QueryString["byAuthor"].ToString();
 var iDisplayLength = int.Parse(context.Request["iDisplayLength"]);
 var iDisplayStart = int.Parse(context.Request["iDisplayStart"]);

捆绑

 ListDictionary tcParameters = new ListDictionary();
            tcParameters.Add("byAuthor", byAuthor);

 ListDictionary dtParameters = new ListDictionary();
            dtParameters.Add("iDisplayStart", iDisplayStart);
            dtParameters.Add("iDisplayEnd", iDisplayEnd);

我尝试在两者中使用相同的列表字典,但这会返回 ora-illegal var name

 ListDictionary dtParameters = new ListDictionary();
            dtParameters.Add("byAuthor", byAuthor);
            dtParameters.Add("iDisplayStart", iDisplayStart);
            dtParameters.Add("iDisplayEnd", iDisplayEnd);

最后,我希望将变量绑定在我的 sql 中,而不是连接字符串,如有必要,我可以提供整个 ashx 文件,感谢您提供任何知识

4

0 回答 0