【发布时间】:2013-06-05 13:47:23
【问题描述】:
我设计了一个流程,将数据从视图复制到 oracle 中的相应表中。我所做的就是调用一个传递“视图名称”作为参数的过程,这会创建相应的表(如果不存在,则删除并创建表)。所以这是动态发生的,我有大约 50 个视图,它们被安排为 oracle 作业。
现在问题来了,我有一些表在某些日子里出现以下错误...
ORA-01723:不允许零长度列
我知道造成这种情况的原因是视图中的几列为空,但并非整天如此。是的,我应该对这些列使用 CAST,但是正如我提到的,这种情况是动态发生的,我不知道这些列是哪一列或那是哪个视图?在我开始创建表之前,任何可以确定视图中是否存在“零长度列”的线索,以便我可以想到一些解决方案。对此的任何更好的补救措施都非常感谢。
注意:
- CREATE TABLE TABLE_NAME AS SELECT * FROM VIEW_NAME --> 这是我的表创建 SQL。
- 我选择这个的原因是'INSERT INTO'可能会因为日志记录和锁定而花费更多的时间和资源。
谢谢, 娜迦'
【问题讨论】:
-
为什么不使用物化视图?您对这些表的具体需求是什么?
-
视图只是从单个表中筛选出来的简单选择,还是您将函数应用于值?
标签: oracle oracle11g database-administration