在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); }
所以,如果我运行此查询,我得到:
ora-01722: invalid number
解决方法
要传递一组值,您需要使用Oracle的表或数组类型.
首先,您创建一个表类型(例如,对于NUMBER):
CREATE TYPE number_table AS TABLE OF NUMBER;
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。