gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:22:53 24 4
gpt4 key购买 nike

你好
我有一个变量 $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 注入(inject)。

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

关于sql - 如何在oracle sql的WHERE IN子句中传递变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4462415/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com