【发布时间】:2013-11-22 05:46:38
【问题描述】:
我已成功地将现有应用程序的数据库从 SqlServer 转换为 Oracle。 一切正常,但空字符串。
应用程序通常将空字符串存储到非空的 nvarchar2 字段中,Oracle 会默默地将它们转换为空并导致以下错误:
ORA-01400: 无法插入 NULL
有什么解决方法吗?
注意:我使用的是 Oracle Managed Driver ODP.NET + NHibernate Castle Active Record
【问题讨论】:
-
@Jeffrey 我知道这一点,但不幸的是,根据这些条件,答案没有提供任何可行的解决方案。
-
那是因为 is 没有解决方案 - 在 Oracle 中的空字符串 are 为空。而已。你只需要以某种方式解决它。
-
重复问题中的答案是使用
varchar2? -
@Jeffrey,即使是 NHibernate 或 .net 也有解决方法
-
是的,重复的问题是指 VARCHAR2,但同样的原则也适用于 NVARCHAR2。空字符串为空。您必须查看您的应用程序并找出 为什么 您的应用程序将空字符串视为特殊的,即为什么您希望空字符串绕过 NOT NULL 约束 - 什么可能的值是空字符串 vs 。 空值?如果您能回答这个问题,也许我们可以为您的应用程序提供替代设计。