暂无图片
分享
2021-05-11
oracle 存储过程报错ORA-12854: Parallel query is not supported on temporary LOBs

image.png

收藏
分享
10条回答
默认
最新

网上查了好久不知道怎么解决

暂无图片 评论
暂无图片 有用 0
lastwinner

关掉并行。
语句里没写并行提示的话,检查对象的degree属性(字符串类型),trim(degree)不为’0’和’1’的就是说明对象上开启了并行属性。

暂无图片 评论
暂无图片 有用 0

查了数据库表都是默认并行度1,也没开启并行
image.png

暂无图片 评论
暂无图片 有用 0

image.png

暂无图片 评论
暂无图片 有用 0

发现是wm_concat这个函数的问题
select wm_concat(BM_DO_TRAN_RALA.SEQ_ID) as order_ids
from BM_DO_TRAN_ITEM, BM_DO_TRAN_RALA, BM_DO_TRAN, bm_do_depart, BM_DO
where BM_DO_TRAN_ITEM.id = BM_DO_TRAN_RALA.trans_id
AND BM_DO.DO_ID = BM_DO_TRAN_RALA.DO_ID
AND BM_DO_TRAN.DO_ID = BM_DO_TRAN_RALA.DO_ID
AND BM_DO_TRAN_RALA.DO_ID = BM_DO_TRAN_ITEM.DO_ID
and BM_DO_TRAN_RALA.Plan_id is null
AND BM_DO_TRAN_ITEM.IS_INNER = ‘1’
AND BM_DO_TRAN_RALA.DEPART_NO IS not NULL
and BM_DO_TRAN_RALA.DEPART_ID = bm_do_depart.SEQ_ID
–加入合单条件
and BM_DO_TRAN_RALA.CARRIER_NO = ‘1500102964’
and (BM_DO_TRAN_ITEM.start_com = ‘0002’ or ‘0002’ = ‘0000’)
and BM_DO_TRAN_RALA.IS_CHARTERED in (‘0’, ‘1’)
AND (BM_DO_TRAN_ITEM.TRANS_TYPE = ‘01’ OR ‘01’ IS NULL)
AND BM_DO_TRAN_ITEM.REVERSE_FLAG = ‘0’
and BM_DO_TRAN_ITEM.DELIVER_TIME between
to_date(‘2021-04-01’, ‘YYYY-MM-DD’) + 3 / 24 AND
to_date(‘2021-04-21’, ‘YYYY-MM-DD’) + 3 / 24
and BM_DO_TRAN_RALA.DEPART_NO is not null
and BM_DO_TRAN.SERVICE_ADDRESS is not null
GROUP BY BM_DO_TRAN_RALA.DEPART_NO,
BM_DO_TRAN.SERVICE_ADDRESS,
BM_DO_TRAN_ITEM.START_COM,
BM_DO_TRAN_ITEM.TRANS_TYPE,
trunc(BM_DO_TRAN_ITEM.DELIVER_TIME - 3 / 24)
image.png

暂无图片 评论
暂无图片 有用 0
lastwinner

去掉wm_concat这一段,整个SQL就正常了?

暂无图片 评论
暂无图片 有用 0

嗯,去掉就可以查了

暂无图片 评论
暂无图片 有用 0
lastwinner

ok。
那问题根源,就是wm_concat导致的。根据报错,可以推出你的库是11g的,因为该函数在10g返回varchar2,在11g才返回clob。
而在12c之后,该内置函数就无法使用了,故而建议你们尽早将其改为用listagg函数来替代。

暂无图片 评论
暂无图片 有用 0

好的,谢谢

暂无图片 评论
暂无图片 有用 0
问题已关闭: 问题已经得到解决
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏