暂无图片
Oracle apex in 的使用
我来答
分享
Error
2022-05-20
Oracle apex in 的使用

在 oracle apex中使用 in的时候出现了无法返回数据的问题。如下:

select id, name,age from user

where a.id in (select column_value from table(split(:item,':')))

提示:其中split 是一个分割函数,item 参数值为: 1:2:3:4:5 

这样使用无法获取到值, 且sql非常非常慢

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
DarkAthena

1.请贴一下你这个split函数的代码
2.如果不在apex中运行这段sql,而是在其他客户端中运行,是否有同样的问题?
3.你描述了sql运行非常慢,是否有在后台看到对应的会话,这个会话目前的等待事件是什么?还有执行计划是怎样的?

暂无图片 评论
暂无图片 有用 0
打赏 0
Error
题主
2022-05-20
不用split 的方法了,太慢了。两层套表。现在使用了这个:where Instr(:item || ':', a.id||':') >0 这个有效率问题,暂时没有更好的解决方法
Error
只有在apex 运行非常慢,我用了instr 的方法 代替了 in的方法  instr 有效率问题。需要优化。

where Instr(:item || ':', a.id||':') >0 现在 使用的这个方法。但是行数多了会比较慢 ,方便给出更好的多优化方法吗?

暂无图片 评论
暂无图片 有用 0
打赏 0
DarkAthena
2022-05-20
你这个变量的字符串长度会有多长?最多包含多少个值?
DarkAthena
2022-05-20
应该可以直接传数组类型进去,避免进行字符串解析;或者传XML;或者,如果是12c以上版本,可以考虑传json
丁丁

where regexp_like(:item || ':', a.id||':') 效率会好一些吗?

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏