ORA-01722: Invalid number(无效数字)
Oracle含义
在需要数值的上下文中使用了无法转换为数字的字符串。隐式或显式转换失败。
原因
将数值列与文本比较(如 WHERE num_col = 'ABC')、向数值字段插入含字母的值、TO_NUMBER 的格式不合适,或小数/分组分隔符不匹配(逗号与句点)。
解决方法
找出转换失败的表达式;通常是 WHERE 条件或 INSERT 的值。在文本/数字比较中确保类型兼容,必要时使用显式转换:TO_NUMBER(my_column),或在文本一侧使用 TO_CHAR。在应用层阻止非数字输入进入数值列。注意 NLS_NUMERIC_CHARACTERS 设置。
同一数据库的其他条目
- ORA-00018Maximum number of sessions exceeded(超出最大会话数)
- ORA-28000The account is locked(账户已锁定)
- ORA-01578Oracle data block corrupted (file #, block #)(Oracle 数据块损坏(文件号,块号))
- ORA-02049Timeout: distributed transaction waiting for lock(超时:分布式事务正在等待锁)
- enq: TX - row lock contention等待:会话被另一事务持有的行级锁阻塞
- log file sync等待:会话在提交时等待 LGWR 将 redo 刷新到磁盘
- db file sequential read等待:单块物理读,通常为索引或表查找