通用处理程序ashx绑定vars而不是SQL的字符串连接

时间:2013-02-15 20:23:13

标签: c# oracle ashx

我有一个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文件,谢谢你给我任何知识

0 个答案:

没有答案