如何在oracle sql的WHERE IN子句中传递变量?

Rav*_*pta 5 sql string oracle where-clause

嗨,
我有一个变量1美元,其中包含逗号分隔的电子邮件地址,如john @ example.com,pat @ example.com.我希望在where子句中传递这个变量

where myColumn in ($1)
Run Code Online (Sandbox Code Playgroud)

但显然这不起作用,我尝试了APEX_UTIL.STRING_TO_TABLE和DBMS_UTILITY.COMMA_TO_TABLE但是徒劳无功.

任何帮助赞赏.

Dan*_*Dan 4

正如 Pavanred 提到的,最简单的方法(尽管不一定是最好的)是自己插入值。你没有说你的呼叫语言是什么,而是说:

sql = "SELECT something FROM whatever WHERE myColumn in (" + $1 + ")"
Run Code Online (Sandbox Code Playgroud)

但是,这意味着您必须预先检查 $1 中的所有值,以确保它们是数字、正确转义的字符串,或者您需要传递但不能是由用户,以避免 SQL 注入。

另一种选择是使其成为一个两步过程。首先,将 $1 中的值插入到临时表中,然后选择这些值作为子查询:

WHERE myColumn in (SELECT temp_value FROM temp_table)
Run Code Online (Sandbox Code Playgroud)