我的问题与这个问题非常相似 - Addin parameter for Oracle,除了我正在使用Oracle 11g。数据库有两个不同的字符集用于VARCHAR(Western European)
和NVARCHAR(Unicode)
数据类型。
db.AddInParameter(cmd, "nationalColumn", DbType.String, "高野")
数据库中的国家字符集是unicode,因此NVARCHAR列可以保存这些字符。
我的问题是如何告诉db.AddInParameter函数我正在添加的参数是NVARCHAR而不是默认情况下假设的VARCHAR。
添加到此 - 我正在使用System.Data.OracleClient连接到数据库
答案 0 :(得分:1)
您无法在西欧编码中对中文字符进行编码。此编码定义的字符数有限,不包含中文。
您期望得到什么输出?我希望数据可能会出现乱码或返回错误。
答案 1 :(得分:0)
您是自己指定参数还是让Enterprise Library尝试找出参数类型? 如果你打电话
command.AddInParameter(“parameterName”, value);
尝试调用该过程并让Enterprise Library找出参数,例如:
DB.ExecuteNonQuery(“PKG_USER.DELETE”, userId);
该过程需要一个名为INT
的{{1}}参数,但该命令仅传递参数值。 EntLib使用参数顺序发送它们。
另外看看
答案 2 :(得分:0)
我正在回答我自己的问题,因为我花了一周时间搞清楚这个问题。 System.Data命名空间不理解它处理的列是国家列,除非它明确指定为OracleType.Nvarchar。
要解决上述情况,我必须覆盖AddInParameter函数以添加一个switch case,检查输入DBType是否为String并将其映射到OracleType.NVarchar。
HTH