我需要在oracle中创建一个物化视图。基表已经存在,并且在 MV 中,我只需提取一组字段。基表的字段为 VARCHAR2(CHAR),但当我创建 MV 时,它将字段视为 VARCHAR2(BYTE)。关于如何在 MV 中保持相同数据类型的任何线索?我尝试过在 DDL 中指定和不指定字段,但这两种方式都不起作用。我正在使用 Oracle 19c
代码:
CREATE MATERIALIZED VIEW MY_MV
as
select field1,field2,field3 from MY_TABLE;
代码:
CREATE MATERIALIZED VIEW MY_MV (field1, field2, field3)
as
select field1,field2,field3 from MY_TABLE;
一种方法是进行强制转换(field_name as varchar2(Char)),但是对于 50 个字段,我必须进行强制转换,这是默认行为吗?
它不应该改变基表的语义。您是否可能从远程数据库中提取数据?
尝试在会话中设置默认语义:
alter session set nls_length_semantics=CHAR;
然后创建你的 mview。