Tag: ora 01722

为什么我会收到ORA-01722(无效号码)?

我一直在使用参数化查询将值插入到Oracle表中,如下所示: var q = “insert into MyTable(Field1, Field2…) values(:Field1, :Field2…)”; var cmd = new OracleCommand(q, conn); // conn is a pre-existing connection cmd.Parameters.Add(“Field1”, field1Val); cmd.Parameters.Add(“Field2”, field2Val); // etc… cmd.ExecuteNonQuery(); 这一直工作正常,但突然这已停止工作,我收到Oracle错误ORA-01722(无效数字)。 我检查了参数,所有数字无疑都是有效的数字。 我甚至为任何空值替换了虚拟值,我仍然得到错误。 我在直接sql(使用OraDeveloper Studio)中尝试了相同的查询,即使使用相同的参数也可以。 如何跟踪这个? 编辑:评论中的每个请求,这是创建表语句: CREATE TABLE ALPHA.VISITFINDINGS ( ID NUMBER(12), VISITID NUMBER(12) NOT NULL, DESCRIPTION VARCHAR2(100), CUSTOMIMAGE CLOB, VISUALFINDINGSSECTIONMAPID NUMBER(12), FINDINGSID NUMBER(12), CONSTRAINT […]

在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); } 所以,如果我运行此查询,我得到: ORA-01722:无效的号码 但如果我只插入一个数字,即“3857”,它将返回查询确定数据。