如何在oracle sql的WHERE IN子句中传递变量?
发布时间:2020-12-12 16:24:54 所属栏目:百科 来源:网络整理
导读:你好 我有一个变量1美元,其中包含逗号分隔的电子邮件地址,如john @ example.com,pat @ example.com.我希望在where子句中传递这个变量 where myColumn in ($1) 但显然这不起作用,我尝试了APEX_UTIL.STRING_TO_TABLE和DBMS_UTILITY.COMMA_TO_TABLE但是徒劳无功
你好
我有一个变量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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |