从视图创建表- Oracle SQL SQL错误:ORA-01723:不允许零长度列

70gysomp  于 2023-03-29  发布在  Oracle
关注(0)|答案(2)|浏览(2460)

我需要从视图中创建一个表,语句如下

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
lp0sw83n

lp0sw83n1#

当为列指定了NULL,但没有指定类型时,我会遇到这个问题。
你需要查看代码。这经常发生在我用途:

select '' as x

因为我认为''应该有正确的类型。
在任何情况下,解决方案都很简单:

select cast(NULL as varchar2(255)),
       cast(NULL as number)

或者其他什么类型的
您需要更改视图定义,或者使用带有显式强制转换的子查询的查询。

a11xaf1n

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. Exceute FORCE VIEW脚本
    1.执行MATERIALIZED VIEW脚本
    1.执行FORCE VIEW原始脚本
    1.执行Drop_table.txt
    我的经理帮助我解决了这个问题。谢谢Ashish。
    问候
    尼哈里卡

相关问题