C#   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c# – 在SELECT IN中使用Oracle参数的问题大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
SQL查询中插入一串数字时遇到问题

SELECT * 
    FROM tablename a 
   WHERE a.flokkurid IN (3857,3858,3863,3285) 
ORDER BY sjodategund,rodun

…要么:

SELECT * 
    FROM tablename a 
   WHERE a.flokkurid IN (:strManyNumbers) 
ORDER BY sjodategund,rodun

…使用此代码

using (OracleCommand sel = new OracleCommand(sql,connectionstring)) {
  sel.Parameters.Add(":strManyNumbers",OracleDbType.Varchar2,"Client",ParameterDirection.Input);
}

所以,如果我运行此查询,我得到:

但如果我只插入一个数字,即“3857”,它将返回带数据的查询OK.

解决方法

要传递一组值,您需要使用Oracle的表或数组类型.

首先,您创建一个表类型(例如,对于NUMBER):

CREATE TYPE number_table AS TABLE OF NUMBER;

查询创建参数时,将其声明为关联的PL / sql数组:

OracleParameter param1 = new OracleParameter(); 
param1.OracleDbType = OracleDbType.Int32; 
param1.CollectionType = OracleCollectionType.PLsqlAssociativeArray;

然后分配一些值:

param1 = new int[] { 3857,3285 };

你的查询需要一个演员:

SELECT * FROM tablename a 
where a.flokkurid in (TABLE(CAST(:manyNumbers AS number_table)))
order by sjodategund,rodun

大佬总结

以上是大佬教程为你收集整理的c# – 在SELECT IN中使用Oracle参数的问题全部内容,希望文章能够帮你解决c# – 在SELECT IN中使用Oracle参数的问题所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: