我有一个简单的任务 - 使用 Execute SQL 任务中的 ResultSet 填充用户变量
SELECT MainID FROM TableA WHERE TableA_ID = 1`
(这只会返回一列和一行)。
MainID 当前作为用户定义的数据类型存储在数据库中。该值以 XXXX.Y 格式存储(例如 8008.1)。
如果我将 UserVariable 更改为 String 数据类型,我可以毫无问题地分配该值,将 ResultSet 转换或转换为 STRING/NUMERIC/FLOAT。
SELECT CAST(MainID as NUMERIC(9,1)) as 'MainID' FROM TableA WHERE TableA_ID = 1;
SELECT CAST(MainID as FLOAT) as 'MainID' FROM TableA WHERE TableA_ID = 1;
SELECT CAST(MainID as VARCHAR(10)) as 'MainID' FROM TableA WHERE TableA_ID = 1;
或者
SELECT CONVERT(NUMERIC(9,1), MainID) as 'MainID' FROM TableA WHERE TableA_ID = 1;
SELECT CONVERT(FLOAT, MainID) as 'MainID' FROM TableA WHERE TableA_ID = 1;
SELECT CONVERT(VARCHAR(10), MainID) as 'MainID' FROM TableA WHERE TableA_ID = 1;
但是,如果用户变量数据类型为 DOUBLE,我无法分配该值。我收到以下错误消息:
[执行 SQL 任务] 错误:将值分配给变量“dUserVariable”时发生错误:“分配给变量“User::dUserVariable”的值的类型与当前变量类型不同。变量在执行期间可能不会更改类型. 变量类型是严格的,除了 Object 类型的变量。”。
我对 SSIS 还很陌生,所以我对如何进行这种转换有点困惑。
有任何想法吗?