我正在研究Oracle SQL Developer,并且对oracle来说还比较陌生。我创建了一个带有“插入X ... select ...”查询类型的包。 代码如下:
插入my_table t1(t1.a,t1.b,t1.c) 选择不同的t2.a,t2.b, 来自my_source t2的t2.c,其中...
注意:my_table t1和my_source都具有比a,b和c多的列,但是从理论上讲,或者至少在开发环境中,它们是可以为空的。我现在只对那些列感兴趣,但是错误在列“ d”上
它可以在开发环境中正常工作,但是在生产环境中运行时,会出现以下消息“ ORA-01400:无法将NULL插入(“ Schema_name”。“ table_name”。“ table_colum_name”)“。
我的理论是,表列在开发环境中而不是在生产环境中某种程度上可以为空。
我的问题是我无法直接访问生产环境表来验证这一点,因此我需要执行以下操作之一:
我尝试了一些查询来检查:
谢谢您的帮助
答案 0 :(得分:0)
您能否仅对生产运行select语句?只是为了确认在开发中没有看到相同输出的情况下它没有空值。其次,您的开发环境是否是生产环境的副本/备份?如果没有其他要求,您应该能够要求由管理您的生产实例的DBA将备份还原到开发中。
答案 1 :(得分:0)
您可能想要类似的东西
select nullable
from all_tab_columns
where owner = '<<schema owner>>'
and table_name = '<<table name>>'
and column_name = '<<column name>>'
请注意
owner
,table_name
和column_name
在数据字典中应全部为大写。您可以在Oracle中使用区分大小写的标识符,这很少见。user_
,all_
和dba_
个变体。因此,有一个user_tab_columns
显示有关您拥有的表的所有列的信息,一个dba_tab_columns
显示有关数据库中所有表的所有列的信息,还有一个all_tab_columns
显示有关您有权访问的所有表的所有列的信息。根据您拥有的权限和表的所有者,您可以使用数据字典表的dba_
或user_
版本而不是all_tab_columns
。