
场景一:特定版本中存在,原因为:不同类型的列进行合并查询
构造案例如下:
--创建测试表
create table TEST(A INT,B VARCHAR2(50));
INSERT INTO TEST VALUES(1,6201);
create table TEST1(A INT,B VARCHAR2(50));
INSERT INTO TEST1 VALUES(2,6202);
--创建测试视图
CREATE OR REPLACE VIEW TEST_VIEW AS
SELECT * FROM
(SELECT A,'' B FROM TEST
UNION ALL
SELECT A,B FROM TEST1);
--复现
SELECT * FROM TEST_VIEW WHERE B ='6201'
此时查询提示-4083:引用列未找到
解决方案
调整代码格式或使用最新版代码数据库版本:
--调整代码如下:
SELECT * FROM
(SELECT A,cast('' as varchar2(50)) B FROM TEST
UNION ALL
SELECT A,B FROM TEST1);
SELECT * FROM TEST_VIEW WHERE B ='6201'
原创文章,作者:lzb,如若转载,请注明出处:https://www.wlkjzx.com/2023/02/13/dm_-4083_%e5%bc%95%e7%94%a8%e5%88%97%e6%9c%aa%e6%89%be%e5%88%b0/