私は現在、Oracleデータベースと通信する従来のASPプロジェクトに取り組んでいます。Oracle PL / SQLスクリプトを安全に呼び出し、ADOを使用してパラメータを渡す方法を見つけようとしています。現在のソリューションでは、次のような埋め込み変数を使用してSQLスクリプトを手動で作成します。
strSQL = "SELECT field1, etc FROM my_table WHERE (field = '" & filter_value & "')"
もちろん、これは醜くて安全ではなく、悪用される可能性があります。
私がこれまでに持っているコード(さまざまな非古典的なaspベースのWebサイトから取得)は次のようになります。
dim strSQL, oConn, oCommand, oParam
set oConn = server.createobject("ADODB.Connection")
oConn.Open myConnString
strSQL = "SELECT field1, etc FROM my_table WHERE (field = :filter_field)"
dim oFilteredList
set oFilteredList = Server.CreateObject("ADODB.Command")
oFilteredList.ActiveConnection = oConn
oFilteredList.CommandText = strSQL
oFilteredList.CommandType = adCmdText
oFilteredList.NamedParameters = True
set oParam = oFilteredList.CreateParameter("filter_field", adVarChar, adParamInput, 10, filter_value)
oFilteredList.Parameters.Append oParam
set rsResults = oFilteredList.Execute
これにより、「パラメータオブジェクトが正しく定義されていません。一貫性のない、または不完全な情報が提供されました」</ p>
ADOから名前付きパラメータを使用してOracle/PL / SQLを呼び出す正しい方法は何ですか?実際のSQLコードはやや複雑であり、SQLコマンド全体で異なるパラメーターが複数回使用されるため、名前付きパラメーターを使用する必要があります。