Oracle Form 常见错误
FRM-40657:已更改记录或由另一用户删除。
一般导致这种错误的原因有:
- 界面字段未赋值使用了替代值存入数据库;
- 由于Item字段长度不够导致部分数据截断;
- 值列表与View字段内容不一致。建议在Lock Row字段中只锁定界面Block上的可见字段,在操作数据前保证Block字段与传入参数保持一致,最后就使用Block字段作为传入参数。
ORA-01722: 无效数字
可能的原因有两种:
- 执行的sql语句中包含显示或者隐式的类型转换,将字符串转换到数字类型的时候失败,字符内容包含非数字字符。检查SQL语句是否包含对字段类型的转换。
- 将一个字符串类型字段绑定或者插入到数字类型时,结果转换失败。检查变量和对应字段的数据类型是否对应。
ORA-01403: 未找到数据
报错原因一:存储过程中存在查询SQL,当查询不到数据时,且把查询结果注入到定义的变量,结果报错;
解决方法:1.跳出此次存储过程:可以写个错误提示,如
BEGIN --查询SQL EXCEPTION WHEN no_data_found THEN --错误的数据提示消息 END;
2.不跳出存储过程,如
BEGIN --查询SQL 的结果赋值给临时变量 SELECT COUNT(1) INTO l_count FROM TABLE WHERE 1 = 1; IF l_count > 0 THEN --数据存在的处理SQL ELSE --数据不存在的处理SQL END IF; END;
注解:因为查询SQL查询不到数据时count(1)为0,可以赋值给l_count,避免了空值赋值问题,不会报找不到数据错误。如果查询到数据,count(1)为大于0的整数。
报错原因二:存在变量的赋值,如v_char1 := v_char2,但是v_char1的字段类型的长度小于v_char2的值长度,结果报错;
解决方法:查询v_char2的值最大长度,适当增大v_char1的字段类型的长度。