次のように、パラメータ化されたSQLクエリ文字列を使用して従来のASPを使用しています。
SQL = "SELECT * FROM content WHERE Category LIKE ? ORDER BY SubDate ?"
SQLクエリ文字列は、次のパラメータ化されたコードで使用されています。
Set cmd = Server.CreateObject("ADODB.Command")
Set rsView = Server.CreateObject("ADODB.Recordset")
cmd.ActiveConnection = MM_connContent_STRING
cmd.Prepared = true
cmd.CommandType = adCmdText
cmd.CommandText = SQL
cmd.CommandTimeout = 60
cmd.Parameters.Append(cmd.CreateParameter("Category", 202, adParamInput, 30, qFilter))
cmd.Parameters.Append(cmd.CreateParameter("SubDate", 202, adParamInput, 10, myDateSort))
rsView.CursorLocation = adUseClient
rsView.Open cmd, , adOpenForwardOnly, adLockReadOnly
上記のコードは、1つの大きな問題を除いてうまく機能します。「ORDERBYSubDate?」パーツは「ORDERBYSubDate'DESC'」を出力します。DESCはパラメーターであるため、その周囲に一重引用符が追加されています。上記のコードを実行すると、DESC(ユーザーが選択してURLクエリ文字列を介して送信するものによってはASCになることもあります)を一重引用符で囲むため、構文エラーが発生します。すべてのSQLパラメータが一重引用符で出力されているようです。特定のSQLパラメータから一重引用符を削除して、SQL文字列に構文エラーが発生しないようにするにはどうすればよいですか?