我想創建一個返回BOOLEAN的函數。 該函數將檢查值是否存在(典型驗證,如果一個部門已經存在)。ORACLE FUNCTION testcase
我實現了NO_DATA_FOUND異常,我也想添加WHEN OTHERS;但我沒有考慮任何測試用例。
下面是函數的代碼:
FUNCTION fnc_department_exists(p_dept_name hr.departments.department_name%TYPE) RETURN BOOLEAN IS
v_dummy PLS_INTEGER;
BEGIN
-- Verifica existenta unui anumit departament
pkg_logging.prc_log('HR', 'VERIFIC', 'Verifica daca exista departamentul "' || p_dept_name || '"');
SELECT 1
INTO v_dummy
FROM hr.departments
WHERE UPPER(department_name) = UPPER(p_dept_name);
pkg_logging.prc_log('HR', 'VERIFIC', 'Departamentul "' || p_dept_name || '" exista');
RETURN TRUE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
pkg_logging.prc_log('HR', 'VERIFIC', 'Departamentul "' || p_dept_name || '" nu exista');
RETURN FALSE;
WHEN OTHERS THEN
pkg_logging.prc_log('HR', 'VERIFIC', 'A aparut o alta eroare: ' || SQLCODE || ' - ' || SQLERRM);
RETURN FALSE;
END fnc_department_exists;
有人能提出一個測試用例WHEN OTHERS分支,好嗎?
謝謝
總會有一些系統錯誤,例如損壞的索引塊,在這種情況下,您可能希望事情自然失敗,而不是報告部門不存在。同樣,如果你有機會重構你的日誌包,你可以自己選擇'sqlerrm'並將它捕獲到一個單獨的列中,而不需要開發人員將它與應用程序錯誤消息連接起來。而'sqlcode'在這裏沒有給你任何有用的信息 - 我會刪除它。 –