【发布时间】:2019-08-29 19:30:49
【问题描述】:
我正在开发 Oracle SQL Developer,对 oracle 还比较陌生。我创建了一个带有“插入 X...选择...”查询类型的包。 代码如下:
插入 my_table t1 (t1.a, t1.b, t1.c) 选择不同的 t2.a, t2.b, t2.c 来自 my_source t2 where ...
注意:my_table t1 和 my_source 的列都比 a、b 和 c 多,但理论上,或者至少在开发环境中,它们可以为空。我现在只对这些列感兴趣,但错误出现在“d”列上
它在开发环境中工作没问题,但是在生产环境中运行时会出现以下消息“ORA-01400: cannot insert NULL into ("Schema_name"."table_name"."table_colum_name")”。
我的理论是,不知何故,表格列在开发环境中可以为空,而不是在生产环境中。
我的问题是我无法直接访问生产环境表来验证这一点,因此我需要执行以下操作之一:
- 找到一种方法来查询 prod 中的表(很可能使用数据库链接)并验证该列是否可以为空) 或
- 为我的插入添加条件。但我插入第 1-3 列,它说第 4 列不能插入空值。因此,我认为这是不可行的。
我尝试了一些查询来检查:
- 选择列属性(object_id('Schema.table','U'),'column','allowsnull');但这是针对 SQL 的。
- 从 sys.colmns 中选择 is_nullable,其中 object_id = object_id('schema.table') 和 name = 'column';这告诉我该表不存在。我确定我的拼写(在我的真实代码中)。
感谢您的帮助
【问题讨论】: