Oracle Form 常见错误

FRM-40657:已更改记录或由另一用户删除。

 一般导致这种错误的原因有:

  1. 界面字段未赋值使用了替代值存入数据库;
  2. 由于Item字段长度不够导致部分数据截断;
  3. 值列表与View字段内容不一致。建议在Lock Row字段中只锁定界面Block上的可见字段,在操作数据前保证Block字段与传入参数保持一致,最后就使用Block字段作为传入参数。

ORA-01722: 无效数字

可能的原因有两种: 

  1. 执行的sql语句中包含显示或者隐式的类型转换,将字符串转换到数字类型的时候失败,字符内容包含非数字字符。检查SQL语句是否包含对字段类型的转换。 
  2. 将一个字符串类型字段绑定或者插入到数字类型时,结果转换失败。检查变量和对应字段的数据类型是否对应。

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的字段类型的长度。

posted @ 2020-11-20 10:46  kiko_0926  阅读(527)  评论(0编辑  收藏  举报