Hóa ra là Thành phần tập lệnh SSIS đã thắng ' không cho phép Đầu ra luồng văn bản đã có câu trả lời, nhưng tôi phải tìm hiểu ý nghĩa của các trường trong câu trả lời.
Tôi sẽ giải thích tất cả các phần để có thể hiểu rõ điều gì đang xảy ra.
Thành phần Tập lệnh có Đầu ra được gọi là Đầu ra 0, với các Cột đầu ra dự báoXML. Đó là những tên mặc định ngoại trừ tên cuối cùng. dự báoXML có kiểu dữ liệu là Luồng văn bản [DT_TEXT]
Trong chính tập lệnh, tôi có một chuỗi có tên dự báoXML (vâng, cùng tên, điều này khiến nó khó hiểu.)
Sau khi điền vào chuỗi dự báoXML với dữ liệu, tôi có thể gán nó cho Bộ đệm đầu ra bằng các dòng sau:
String forecastXML = oResult.XmlResult;
Output0Buffer.AddRow();
Output0Buffer.forecastXML.AddBlobData(System.Text.Encoding.UTF8.GetBytes(forecastXML));
Dòng đầu tiên hoạt động cho tất cả các kiểu dữ liệu. Bởi vì tôi đang viết cho một NTEXT, dòng thứ hai là cần thiết, thay vì một bài tập thẳng. Output0Buffer.forecastXML đề cập đến kiểu dữ liệu NText được xác định trong Đầu ra của tôi 0. Cái cuối cùng là chuỗi của tôi từ mã.
Để rõ ràng hơn, thay vì tạo một chuỗi, tôi nên có
Output0Buffer.forecastXML.AddBlobData(System.Text.Encoding.UTF8.GetBytes(oResult.XmlResult));
trong đó oResut.XmlResult là kết quả của cuộc gọi của tôi lấy XML. Gán nó cho một chuỗi là một bước bổ sung, không cần thiết.
Điều này sẽ đến với Oracle CLOB, vì vậy bước tiếp theo là đưa đầu ra đó vào Cột có nguồn gốc và truyền đầu ra của tôi dự báoXML dưới dạng (DT_NTEXT) dự báoXML. (Tôi nghi ngờ mình đang thực hiện một số thay đổi không cần thiết về loại.)
Và sau đó, tôi ánh xạ trường đó với trường CLOB của tôi trong Đích OLE DB của tôi.