我有一个遇到问题的 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 文件,感谢您提供任何知识