我一直在使用参数化查询将值插入到 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 FK_VISITFINDINGS_AREA FOREIGN KEY (VISUALFINDINGSSECTIONMAPID)
REFERENCES ALPHA.VISUALFINDINGSSECTIONMAP(VISUALFINDINGSSECTIONMAPID),
CONSTRAINT FK_VISITFINDINGS_FINDINGS FOREIGN KEY (FINDINGSID)
REFERENCES ALPHA.FINDINGS(FINDINGSID),
CONSTRAINT FK_VISITFINDINGS_VISIT FOREIGN KEY (VISITID)
REFERENCES ALPHA.VISITS(VISITID),
CONSTRAINT PK_VISITFINDINGS PRIMARY KEY (ID))
TABLESPACE USERS
STORAGE (
INITIAL 64K
MAXEXTENTS UNLIMITED
)
LOGGING;