1. 程式人生 > 實用技巧 >Oracle Form 常見錯誤

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的欄位型別的長度。