我在oracle报告构建器(p_user)中创建了一个参数,它可以返回一个包含多个用户的列表。
如何在我的select语句中使用它来获取正确的列表?
我现在有:
选择note,user,dep_name,dep_id 来自departement_notes user =:p_user
现在,如果我选择1个用户,它将显示该用户的所有笔记。当我选择多个用户时,它将不会显示任何内容,因为“用户”与p_user值不匹配。
实施例
如果参数'p_user'= AR,则列表显示用户AR的所有内容 当参数'p_user'= AR,CZ,GD时,则不显示任何内容
答案 0 :(得分:0)
你基本上想要参数化IN
子句,以便它是user in (:p_user)
,其中p_user是以逗号分隔的列表。不幸的是,这是不可能的。但是,有很多方法可以参见here。
在你的情况下,它看起来像这样:
select note,user,dep_name,dep_id
from departement_notes
WHERE ','||:p_user||',' LIKE '%,'||user||',%'
这样,您可以在字符串,(username),
中搜索字符串,AR,CZ,GD,
。逗号是必要的,这样您就不会匹配用户名A
。请记住,此方法不允许您使用user
列上的索引,因此请谨慎使用。还有另一种方法here。