0

我的问题与这个问题非常相似——Oracle 的 Addin 参数,除了我使用的是 Oracle 11g。数据库有两个不同的字符集VARCHAR(Western European)NVARCHAR(Unicode)数据类型。

db.AddInParameter(cmd, "nationalColumn", DbType.String, "高野")

数据库中的国家字符集是 unicode,因此 NVARCHAR 列能够保存这些字符。

我的问题是我如何告诉 db.AddInParameter 函数我添加的参数是 NVARCHAR 而不是默认情况下假设的 VARCHAR。

添加到这个 - 我正在使用 System.Data.OracleClient 连接到数据库

4

3 回答 3

1

您不能在西欧编码中对汉字进行编码。此编码定义了有限数量的字符,并且不包括中文。

你期望什么输出?我希望数据出现乱码或返回错误。

于 2012-06-14T12:05:30.380 回答
0

您是自己指定参数还是让 Enterprise Library 尝试找出参数类型?如果你打电话

command.AddInParameter(“parameterName”, value);

尝试调用该过程并让 Enterprise Library 找出参数,例如以下示例:

DB.ExecuteNonQuery(“PKG_USER.DELETE”, userId);

该过程需要一个INT名为 的参数P_ID,但该命令仅传递参数值。EntLib 使用参数 order 来发送它们。

也看看

于 2012-06-22T13:34:41.643 回答
0

我花了一周的时间来回答我自己的问题。System.Data 命名空间不理解它正在处理的列是国家列,除非它被明确指定为 OracleType.Nvarchar。

为了解决上述情况,我必须重写 AddInParameter 函数以添加一个 switch case 检查输入 DBType 是否为 String 并将其映射到 OracleType.NVarchar。

高温高压

于 2012-06-25T10:31:30.967 回答