如何参数化字符串的可变长度?

时间:2016-11-24 16:21:19

标签: sql oracle bi-publisher

我正在编写一个查询,其中'batch_name'是参数,有时我只得到一个批名称,有时我得到2个或更多批名称。如何在Oracle BI Publisher查询中处理此问题,

这是我的查询,

process_list=["/test/fruit/apple","/test/fruit/pineapple","/test/fruit/banana","/test/tech/apple-pen","/test/animal/python","/test/animal/penguin"]

现在这个查询只处理一个批处理名称,我希望它能处理多个批处理名称。

exclude_list=["apple","python"] 之类的东西 但是使用IN子句的问题是我无法预测我必须查询的批次数。任何人都可以帮助我。

1 个答案:

答案 0 :(得分:1)

你有两个选择。一种是将变量组合成一个字符串并使用某种方法,例如regexp_like()

where regexp_like(upper(pbh.batch_name), ??)

参数字符串应如下所示:'^abc|def|ghi|jkl$'。只要你愿意,你就可以制作它。

另一种方法是使用execute immediate。使用IN将值作为字符串转储到SQL查询中。这种方法的优点是它可以更容易地使用索引