[英]Passing parameterized query list of int's returns error ora-01722
使用oledb提供程序。 查询是这样的:
SELECT appid
FROM table
WHERE response_id IN (?)
我获取一个int数组并将其发送到一个方法,该方法在数组值之间添加逗号分隔符,并返回一个字符串。 然后将该字符串作为参数发送。
如果我有一个值可以通过,这可以正常工作,但是当我发送两个值时,我得到ORA-01722
错误。
我已经尝试查看v_$sql
表以查看正在执行的内容,但它没有显示我的页面执行的查询。 我只能看到我通过toad执行的操作,即使我在两种情况下都使用相同的登录。 不确定是否有其他表存储sql数据。
字符串生成器如下。
public string intArrayToString(int[] array)
{
if (array != null)
{
string delimiter = ",";
if (array.Length > 0)
{
StringBuilder builder = new StringBuilder();
builder.Append(array[0]);
for (int i = 1; i < array.Length; i++)
{
builder.Append(delimiter);
builder.Append(array[i]);
}
return builder.ToString();
}
else
{
return string.Empty;
}
}
else
{
return null;
}
}
不幸的是,您不能将逗号分隔的字符串作为IN
值。 你可以做的是自动为每个数组元素生成一个绑定变量并绑定每个值,如下所示:
select appid from table where response_id in (:id1, :id2, :id3)
您使用哪个驱动程序连接到Oracle? 这里有两个不同的odp.net解决方案: http ://forums.oracle.com/forums/thread.jspa?threadID = 892457&tstart = 810
编辑:我看到您使用oledb提供程序。 我想这限制了可能性? (我从未使用过该提供商,所以我不知道)。 也许是时候换了?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.