来自 SSIS 项目的 oracle 更新查询中的 Varchar2

Varchar2 in oracle update query from SSIS project

我需要使用 SSIS 更新 Oracle 数据库。我正在使用自定义数据库任务并使用如下查询:

  UPDATE Table SET column1 = ? where KEY = ?

key取自SQL服务器table,是nvarchar(3)类型,oracle数据库中的key是varchar2(3)类型。首先它抱怨密钥是 4 个字符,所以我将查询更改为

  UPDATE Table SET column1 = ? where KEY = TRIM(CAST(? AS VARCHAR(3)))

它适用于具有 3 个字符的键,但也有 2 个字符长的键。我已经试过了 trim 它,转换它。但我不能让它适用于 2 个字符的键。

Oracle 字符集的 char 是 AL32UTF8,NCHAR 是 AL16UTF16。

我已经通过在更新步骤之前使用 KEY_LEN 作为 LEN(key) 创建派生列解决了这个问题。然后我在更新中将它用作第三个参数:

UPDATE Table SET column1 = ? where KEY = SUBSTR(?,0,?)