2016-10-27 64 views
3

我正在使用SQL Server 2014和SSIS設計器SSDT BI與Sisual studio 2013.我有一個執行SQL任務與單個結果集分配值變量「角色」字符串數據類型。對象類型的SSIS變量到字符串轉換

SELECT DISTINCT (STUFF((SELECT CAST(',' + SubTableUser.UserRole AS VARCHAR(MAX)) 
     FROM TableUser AS SubTableUser 
     WHERE SubTableUser.UserID = TableUser.UserID 
     FOR XML PATH('')), 1, 1, '')) AS UserRole 
FROM TableUser 

執行SQL任務錯誤:

值類型(__ComObject)只能被轉換爲Object類型的變量。 將值賦給變量「role」時發生錯誤:「賦值給變量 」User :: role「的值的類型(DBNull)不同於當前變量類型(String)。變量可能不會在期間更改類型執行 變量類型是嚴格的,除了Object類型的變量。「。

我試圖對象變量值賦給一個字符串變量在腳本任務String.Format("{0}", Dts.Variables["User::role"])和得到這個值「系統.__ ComObject」,而不是實際值。

+0

.Value.ToString(作品? –

回答

0

您創建的對象類型變量設置爲datatable,因爲查詢返回一組行。從腳本任務讀取它作爲數據表。你想要的值賦給字符串變量

或者與頂部1,因此返回一行更換不同的,它可以被分配到字符串)(只有一個每個變量列)

+0

嘗試DataTable並沒有運氣。 'OleDbDataAdapter dataAdapter = new OleDbDataAdapter(); System.Data.DataTable dataTable = new System.Data.DataTable(); dataAdapter.Fill(dataTable,Dts.Variables [「User :: role」]。Value); foreach(DataRow dataRow in dataTable.Rows) { string RoleName; object [] roleArray = dataRow.ItemArray; RoleName = roleArray [0] .ToString(); }' – user25407

+0

System.Data.DataTable dataTable = new System.Data.DataTable(); dataTable = Dts.Variables [「User :: role」]。Value; – Hadi

+0

記住要將變量添加到腳本ReadOnlyVariables [閱讀更多](http://stackoverflow.com/questions/13450289/how-to-access-ssis-package-variables-inside-script-component) – Hadi