加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读