現在、Oracleデータベースと対話している従来のASPプロジェクトで作業しています。私は安全にOracle PL/SQLスクリプトを呼び出し、ADOでパラメータを渡す方法を見つけようとしています。現在、解決策は、このような組み込み変数を手でSQLスクリプトを作成します:クラシックASPのADODBからパラメータ化されたOracleクエリを呼び出す
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
これはエラー「Parameterオブジェクトが正しく定義されていないが発生します。不一致または不完全な情報が提供されました。 "
ADOから名前付きパラメータを使用してOracle/PL/SQLを呼び出す正しい方法は何ですか?実際のSQLコードはやや複雑で、SQLコマンド全体ではさまざまなパラメータが複数回使用されるため、名前付きパラメータを使用する必要があります。
真= NamedParametersの行をコメントしてみて、それが助けかどうかを確認します。 – shahkalpesh
Option Explicitを使用していて、あなたの "広告"定数にいくつかの種類のadovbs.incファイルが含まれていますか? – Funka
私はNamedParametersプロパティの有無にかかわらず試しましたが、私はadovbs.incを含めています。私はいつも明示的にオプションを使う – Buzzrick