【发布时间】:2019-12-09 08:01:21
【问题描述】:
此代码适用于单个值的查询参数:
public void GetById(long id)
{
var sql = "SELECT * FROM table1 WHERE id = :id";
using(var cmd = new OracleCommand(sql, oracleConnection)) {
cmd.Parameters.Add(new OracleParameter("id", id));
...
}
}
数组或值列表的等价物是什么?
public void GetByIds(long[] ids)
{
var sql = "SELECT * FROM table1 WHERE id IN (:ids)";
using(var cmd = new OracleCommand(sql, oracleConnection)) {
cmd.Parameters.Add(new OracleParameter("ids", /* ??? */));
...
}
}
如果不清楚,我正在寻找可以像这样工作的东西:
sql = "SELECT * FROM table1 WHERE id IN (" + string.Join(',', ids) + ")";
但作为一个干净的参数化查询。
【问题讨论】:
-
@LukeWoodward 很好地找到了这些 - 如果我的搜索找到了它们,我会自己链接它们。但是所有的答案都非常复杂,其中很多都涉及破解动态 sql 字符串(我试图避免的事情)或使用新类型和函数修改数据库模式......这很难通过吗?一个数组?
-
我决定使用来自stackoverflow.com/questions/541466/… 的答案之一,现在我将尝试将这个问题作为它的副本来结束。
标签: c# oracle sqlparameter