SSIS スクリプト コンポーネントが勝てないことがわかりました。テキスト ストリーム出力を許可しない 答えはありましたが、答えのフィールドが何を意味するのかを理解する必要がありました.
すべての部分を説明するので、何が起こっているのかは明らかです。
スクリプト コンポーネントには、Output 0 と呼ばれる出力があり、出力列はforecastXML です。これらは、最後を除いてデフォルトの名前です。 ForecastXML のデータ型はテキスト ストリーム [DT_TEXT] です
スクリプト自体には、forecastXML という文字列があります (同じ名前なのでわかりにくいです)。
文字列forecastXMLにデータを入力した後、次の行でそれをOutput0Bufferに割り当てることができます:
String forecastXML = oResult.XmlResult;
Output0Buffer.AddRow();
Output0Buffer.forecastXML.AddBlobData(System.Text.Encoding.UTF8.GetBytes(forecastXML));
最初の行は、すべてのデータ型で機能します。私は NTEXT に書き込んでいるので、単純な代入ではなく 2 行目が必要です。 Output0Buffer.forecastXML は、出力 0 で定義された NText データ型を参照します。最後のものは、コードからの文字列です。
より明確にするために、文字列を作成するのではなく、
を使用する必要がありますOutput0Buffer.forecastXML.AddBlobData(System.Text.Encoding.UTF8.GetBytes(oResult.XmlResult));
ここで、oResut.XmlResult は、XML を取得する呼び出しの結果です。文字列への代入は余分な不要な手順です。
これは Oracle CLOB に送信されるため、次のステップは、その出力を派生列に取得し、出力のforecastXML を (DT_NTEXT)forecastXML としてキャストすることです。 (不必要な型の変更を行っているのではないかと思います。)
次に、そのフィールドを OLE DB Destination の CLOB フィールドにマップします。