5

where句を含むoracleに対してクエリを実行しようとしています

BETWEEN date AND date2

調査の最初のラウンドでは、Oracle OLEDBプロバイダーがパラメーター化されたクエリを許可していないことが示されているため、これらは変数に設定する必要があります。そこで、3つの変数を作成しました。2は正しく入力された日付を保持し、1つは式が次で終わるクエリを保持します。

 BETWEEN to_date('" + (DT_WSTR, 30)@[User::lastRun]  + "','DD/MM/YYYY HH:MI:SS AM') AND to_date('" + (DT_WSTR, 30) @[User::thisRun] + "','DD/MM/YYYY HH:MI:SS AM')"

式ビルダーで「式の評価」をクリックすると、正しく評価されます。

BETWEEN to_date('1/1/1900','DD/MM/YYYY HH:MI:SS AM') AND
to_date('1/1/2010','DD/MM/YYYY HH:MI:SS AM')

そして、他のツールを使用して、これをOracleに対して正常に実行できます。

しかし、パッケージを実行しようとすると、次のようになります。

[mySource 1 ]エラー:SSISエラーコードDTS_E_OLEDBERROR。OLEDBエラーが発生しました。エラーコード:0x80040E51。OLEDBレコードが利用可能です。ソース: "OraOLEDB" Hresult:0x80040E51説明: "プロバイダーはパラメーター情報を取得できず、SetParameterInfoが呼び出されていません。"

mySourceはOLEDBソースです。AccessModeが「SQLCommandFromVariable」に設定され、SQLCommandVariableがクエリ変数に設定されています。

また、すべての出力外部列を手動で設定し、クエリで選択した値の一部を変更して、oracleDATEデータ型を破棄しようとしました。

to_char(PT.CREATED_DTTM,'DD/MM/YYYY HH:MI:SS AM')

私はまだSSISに慣れていないので、このエラーの原因を正しい場所で探しているかどうかさえわかりません。誰かがここからどこへ行くべきか考えがありますか?

要求に応じたスクリーンショット。ご覧のとおり、「変数から」クエリはプレビューモードで期待どおりに機能しますが、実行しようとするとエラーが発生します。

制御フロー 情報源 デバッグエラー

4

1 に答える 1

1

結局、これをOLD DBソースではなく、DataFlowの「式」に設定し、変数に「EvaluateAsExpression」=Trueが残っていることを確認しました。

また、OLEDBからAttunityOracleコネクタを使用するように更新したこともわかります。

DataFlowSource

于 2012-05-15T13:02:20.323 に答える