0

問題が発生している C# ashx ハンドラーがあります。相互に構築された 2 つのクエリがあります。最初のクエリはパラメーターを受け取り、2 番目のクエリは元のクエリを取得し、それをラップして 2 つのパラメーターを返します。行番号

エラーは ORA-01008 です: すべての変数がバインドされていません

最初のクエリ (部分)

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

2 番目のクエリ

 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