暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle ORA-22818 :此处不允许子查询表达式

askTom 2016-01-29
554

问题描述

嗨,
我试图从下面的查询创建一个实例化视图,但是我得到了一个不允许的错误子查询。如何设置查询的格式以产生相同的结果?

创建实体化视图PGALEGO.EQT_SIM_CAMES_MV
表空间EDWH_MICA_DATA
PC已使用0
无PCT10
Inittrans 2
MAXTRANS 255
存储(
初始64K
下一个1M
最小范围1
最大范围无限制
蛋白增加0
缓冲区池默认值
)
无缓存
记录
无压缩
不平行
立即生成
刷新完成
以TO_日期开始('29-Jan-2016年1月15:42:09','dd-mon-yyy hh24:mi:ss')
下一个系统日期+240/1440
带主键
组件
选择到时间戳(
(创建时间, 9、2 )
||'-'
||子STR (创建时间, 5、3 )
||'-'
||子STR (创建时间, -4 )
||'''
||子STR (CREED_ON, 11、9) ,
'DD-MM-YYYY HH24:MI:SS'
--+间隔'1'小时
)“创建日期”,
( SELECT名称
来自xx_分支_bss
在其中的位置ID
(选择分支ID
来自xx_agents_bss
在其中的位置ID
( SELECT创建者_
来自通知_LOGS_BSS
WHERE Customer_id = a.customer_id
AND订阅ID = a.subscription_id
AND订阅旧值= a.subscription_old_value
AND订阅新值= a.subscription_new_value
)
)
)“分支”,
( SELECT c.last_name ||''|| c.last_name
来自xx_customers_bss c
WHERE c.id = a.custender_id
) "客户名称" ,
(选择标识_NUMBER
来自xx_customers_bss c
WHERE c.id = a.custender_id
) "ID_NUMBER" ,
( SELECT TO_CHAR (sc.icid) )
来自xx_sim_目录_bss sc
WHERE sc.imsi = a.SUB scriptION_Lold_VALUE
)“旧的ICCID”,
(选择sc1.TYPE
来自xx_sim_目录_bss sc1
WHERE sc1.imsi = a.SUB scriptION_Lold_VALUE
)“旧型”,
( SELECT TO_CHAR (sc.icid) )
来自xx_sim_目录_bss sc
WHERE sc.imsi = a.SUB scriptION_WN_VALUE
) "新的ICCID" ,
(选择sc2.TYPE
来自xx_sim_目录_bss sc2
WHERE sc2.imsi = a.SUB scriptION_NING_VALUE
)“新类型”,
( SELECT名称
来自xx_agents_bss
WHERE ID = a.创建_by
) "Update_BY" ,
(选择sb.msisdn
来自xx_subscriptions_bss sb
其中sb.id = a.subscription_id
与SB.客户ID = a.客户ID
) "手机号码" ,
( SELECT sc1.vendor
来自xx_sim_目录_bss sc1
WHERE sc1.imsi = a.SUB scriptION_Lold_VALUE
) "老供应商" ,
( SELECT sc1.vendor
来自xx_sim_目录_bss sc1
WHERE sc1.imsi = a.SUB scriptION_WN_VALUE
)“新供应商”
a.id、,
a.subscription_id ,
来自通知_LOGS_BSS a
WHERE a.action_perform ='ChangeSim'
;

专家解答

10g中的实例化视图不支持标量子查询:

You cannot, however, define a materialized view with a subquery in the SELECT list of the defining query


http://docs.oracle.com/cd/B19306_01/server.102/b14223/basicmv.htm#i1007880

为了解决这个问题,您可以将子查询更改为外部连接。例如:

select ...
FROM   NOTIFICATIONS_LOGS_BSS a, xx_sim_catalog_bss sc1
WHERE  a.action_performed = 'ChangeSim'
and    sc1.imsi (+) = a.SUBSCRIPTION_NEW_VALUE
...

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论