我需要从视图中创建一个表,语句如下
CREATE TABLE NEW_TABLE AS SELECT * from VIEW
它给出如下错误信息。无法从视图创建表(使用Select * 语句)?
Error report - SQL Error: ORA-01723: zero-length columns are not allowed 01723. 00000 - "zero-length columns are not allowed
lp0sw83n1#
当为列指定了NULL,但没有指定类型时,我会遇到这个问题。你需要查看代码。这经常发生在我用途:
NULL
select '' as x
因为我认为''应该有正确的类型。在任何情况下,解决方案都很简单:
''
select cast(NULL as varchar2(255)), cast(NULL as number)
或者其他什么类型的您需要更改视图定义,或者使用带有显式强制转换的子查询的查询。
a11xaf1n2#
错误〉〉“零长度列是不允许的“我最近遇到了类似的问题,在这种情况下,我总是谷歌和来堆栈溢出网站的解决方案,但这一次我没有得到我的问题的解决方案。我检查了不同的其他网站,但没有帮助。我尝试了几种方法,但没有运气。最后我的经理建议我一些提示和技巧,最后我们能够解决这个问题。我发布了下面的步骤,我遵循的时间和解决问题。所以,我得到了上面的错误“零长度列不允许“。当我检查MV脚本时,我发现大多数列的长度为零。因此,我无法创建MV。步骤遵循1.使用MV表结构创建表任意名称abc。1.我们的MV是使用力视图作为源。所以我创建了VW脚本使用该表abc作为源像CREATE OR REPLACE FORCE VIEW xyz.VW(columns)as select * from abc;1.现在创建MV脚本如下删除MV;创建mv mv_name(列)按需刷新完成带主键AS标准select * from VW ;1.执行原始VW脚本1.现在删除您创建的表。1.执行table_script.sql〉〉模式XYZ
2条答案
按热度按时间lp0sw83n1#
当为列指定了
NULL
,但没有指定类型时,我会遇到这个问题。你需要查看代码。这经常发生在我用途:
因为我认为
''
应该有正确的类型。在任何情况下,解决方案都很简单:
或者其他什么类型的
您需要更改视图定义,或者使用带有显式强制转换的子查询的查询。
a11xaf1n2#
错误〉〉“零长度列是不允许的“我最近遇到了类似的问题,在这种情况下,我总是谷歌和来堆栈溢出网站的解决方案,但这一次我没有得到我的问题的解决方案。我检查了不同的其他网站,但没有帮助。我尝试了几种方法,但没有运气。最后我的经理建议我一些提示和技巧,最后我们能够解决这个问题。
我发布了下面的步骤,我遵循的时间和解决问题。所以,我得到了上面的错误“零长度列不允许“。当我检查MV脚本时,我发现大多数列的长度为零。因此,我无法创建MV。步骤遵循
1.使用MV表结构创建表任意名称abc。
1.我们的MV是使用力视图作为源。所以我创建了VW脚本使用该表abc作为源像
CREATE OR REPLACE FORCE VIEW xyz.VW(columns)as select * from abc;
1.现在创建MV脚本如下
删除MV;创建mv mv_name(列)
按需刷新完成
带主键
AS标准
select * from VW ;
1.执行原始VW脚本
1.现在删除您创建的表。
1.执行table_script.sql〉〉模式XYZ
1.执行MATERIALIZED VIEW脚本
1.执行FORCE VIEW原始脚本
1.执行Drop_table.txt
我的经理帮助我解决了这个问题。谢谢Ashish。
问候
尼哈里卡