Het blijkt dat SSIS Script Component zal' geen tekststream-uitvoer toestaan had het antwoord, maar ik moest uitzoeken wat de velden in het antwoord betekenden.
Ik zal alle onderdelen uitleggen, zodat het duidelijk is wat er aan de hand is.
De Script Component heeft een Output genaamd Output 0, met Output Columns forecastXML. Dat zijn standaardnamen, behalve de laatste. forecastXML heeft het gegevenstype Tekststroom [DT_TEXT]
In het script zelf heb ik een string met de naam forecastXML (ja, dezelfde naam, wat het verwarrend maakt.)
Na het vullen van de string forecastXML met gegevens, kan ik het toewijzen aan de Output0Buffer met de volgende regels:
String forecastXML = oResult.XmlResult;
Output0Buffer.AddRow();
Output0Buffer.forecastXML.AddBlobData(System.Text.Encoding.UTF8.GetBytes(forecastXML));
De eerste regel werkt voor alle gegevenstypen. Omdat ik naar een NTEXT schrijf, is de tweede regel nodig, in plaats van een rechte opdracht. De Output0Buffer.forecastXML verwijst naar het NText-gegevenstype dat is gedefinieerd in mijn Output 0. De laatste is mijn tekenreeks uit de code.
Om duidelijker te zijn, in plaats van een string te maken, zou ik
. moeten hebbenOutput0Buffer.forecastXML.AddBlobData(System.Text.Encoding.UTF8.GetBytes(oResult.XmlResult));
waarbij oResut.XmlResult het resultaat is van mijn aanroep die de XML krijgt. Het toewijzen aan een string is een extra, onnodige stap.
Dit gaat naar een Oracle CLOB, dus de volgende stap is om die output naar een afgeleide kolom te brengen en mijn output forecastXML te casten als (DT_NTEXT)forecastXML. (Ik vermoed dat ik een aantal onnodige wijzigingen van typen aan het doen ben.)
En dan wijs ik dat veld toe aan mijn CLOB-veld in mijn OLE DB-bestemming.