SELECT a.gl_account, g.gl
from et_bp_gl_account a,et_bp_gl g
where a.gl_id=g.gl_id
and g.gl in (select replace(:P117_GL,':',',') from et_bp_gl )
-----这是我用来通过绑定变量传递多个值的代码,例如(Asset Mg:Finance)应该返回的子查询( Asset Mg,财务),将“:”替换为“,”,但此方法无效并返回
找不到日期
使用Oracle Sql
答案 0 :(得分:0)
顶点,是吗?既可以是穿梭项目,也可以是允许多项选择的选择项目。无论如何,您应该将以冒号分隔的列表分成几行,如下所示:
SELECT a.gl_account, g.gl
from et_bp_gl_account a,et_bp_gl g
where a.gl_id=g.gl_id
and g.gl in (select regexp_substr(:P117_GL, '[^:]+', 1, level)
from dual
connect by level <= regexp_count(:P117_GL, ':') + 1
)
答案 1 :(得分:0)
无需正则表达式
select * from table(apex_string.split('1:2:3',':'));
所以您的查询看起来像
SELECT a.gl_account, g.gl
from et_bp_gl_account a,et_bp_gl g
where a.gl_id=g.gl_id
and g.gl in (select column_value
from table(apex_string.split(:P117_GL,':'))
)
如果可以进一步简化,这不会令我惊讶