Oracle Form 常見錯誤
阿新 • • 發佈:2020-11-20
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 --資料存在的處理SQLELSE --資料不存在的處理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的欄位型別的長度。