嗨, 我有一个变量$ 1,其中包含逗号分隔的电子邮件地址,例如john @ example.com,pat @ example.com。我希望在类似where的子句中传递此变量
where myColumn in ($1)
但是显然这行不通,我尝试了APEX_UTIL.STRING_TO_TABLE和DBMS_UTILITY.COMMA_TO_TABLE但徒劳。
任何帮助表示赞赏。
正如Pavanred所暗示的那样,最简单的方法(虽然不一定是最好的方法)是自己内插值。您没有说出呼叫语言是什么,而是类似:
sql = "SELECT something FROM whatever WHERE myColumn in (" + $1 + ")"
但是,这意味着非常重要的一点是,您必须预先检查$ 1中的所有值,以确保它们是数字或正确的转义字符串,或者您需要传递但不能为a所提供的原始值的任何其他值用户,以避免SQL注入。
另一个选择是使其分为两个步骤。首先,将$ 1中的值插入到临时表中,然后选择这些值作为子查询:
WHERE myColumn in (SELECT temp_value FROM temp_table)