いくつかの RDO コードを .NET の ODBC プロバイダー コードに変換しています。
問題は、元のコードではパラメーター名が指定されていませんでしたが、コマンドの実行後にパラメーター名によってパラメーター値が取得されたことです。
コマンドが実行されると、プロバイダーによってパラメーター名が設定され、呼び出し元のコードが名前でパラメーターにアクセスできるようになります。
param の宣言とアクセスの例を示します。
With rdqryClntBasic
.Parameters.Add(.CreateParameter) : .Parameters(0).Direction = ParameterDirection.Input
.Parameters(0).DbType = DbType.String
.Parameters(0).Value = sClntProdCd
で終わる
.EffectiveDate = ToDate(rdqryClntBasic.Parameters("dtEffDt").Value)
これがどのように「RDO/VB で機能していたのか」を確認できます。何らかの理由でこれを受け入れ、実行後にパラメーター名が何であるかを知るでしょう。この情報を取得するには、データベースへの別のラウンドトリップを行う必要があったと思います。
.NET for ODBC Provider (Oracle を使用) でこの動作を模倣する方法はありますか? または、コードでパラメーター名を手動で指定するのに行き詰まっています(これがより良いオプションであることは理解していますが、元のコードにできるだけ近づけるための代替手段は何なのか疑問に思っています)。