問題が発生している 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ファイル全体を提供できます。知識を提供してくれてありがとう