gpt4 book ai didi

asp.net - Oracle:如何参数化列表?

转载 作者:行者123 更新时间:2023-12-02 13:08:26 25 4
gpt4 key购买 nike

我有一个带有 where 子句的查询,如下所示:

WHERE field IN ( 1, 2, 3 )

可以对其进行参数化,使其看起来像这样:

( :list ) 中的何处字段?

如何创建 :list 参数(假设它是一个整数列表,可以是 1 到 10 个整数)?

ASP.net、Webforms(如果这有区别的话)。

最佳答案

有两种容纳动态 IN 列表的方法:

  1. 将逗号分隔列表转换为派生表(也称为内联 View )
  2. 使用动态 SQL

非动态

<小时/>

大多数人更喜欢非动态 SQL 方法 - this link provides various ways to do it 。使用这个的最大原因是:

WHERE :list LIKE '%,' || t.column || ',%'

...就是上面的:

  1. 永远无法使用索引
  2. 无法匹配列表中的第一个或最后一个参数,因为两端都需要逗号才能匹配

简单的事实是,它不会按预期工作。 Oracle 10g+ 支持的正则表达式允许对列进行条件检查,但仍然面临将索引渲染为无意义的问题

动态 SQL

<小时/>

提到“动态SQL”,你可能会是hounded about SQL injection attacks 。使用绑定(bind)变量可以减轻这种担忧。

也就是说,动态 SQL 需要对查询进行最少的更改。

关于asp.net - Oracle:如何参数化列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2282991/

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