2
2 개의 예외 오류가있는 저장 프로 시저를 작성하려고합니다.SQL PL/SQL 사용자 정의 다중 예외 오류 처리 (null)
Create table Employee
(emp_num varchar(10) primary key,
emp_name varchar(10),
DOB date,
job_title varchar(15),
marriage_date date,
spouseid varchar(10) references Employee(emp_num),
dept_id varchar(10) references Department(dept_id));
직원 정보가있는 테이블이 있습니다. 배우자가 회사에 종업원 일 경우 배우자 정보를 제공해야한다는 재귀 적 관계가 있습니다 (spouseid + marriage_date). 직원 번호를 묻는 저장 프로 시저를 만들었고 배우자 이름, 이름 및 결혼 날짜를 제공합니다.
CREATE OR REPLACE PROCEDURE DISP_SPOUSE
(SP_EMP_NUM IN EMPLOYEE.EMP_NUM%TYPE) AS
SP_NAME EMPLOYEE.EMP_NAME%TYPE;
SP_SPOUSEID EMPLOYEE.SPOUSEID%TYPE;
SP_MARRIAGE_DATE EMPLOYEE.MARRIAGE_DATE%TYPE;
BEGIN
SELECT SPOUSEID, EMP_NAME, MARRIAGE_DATE
INTO SP_SPOUSEID, SP_NAME, SP_MARRIAGE_DATE
FROM EMPLOYEE
WHERE EMP_NUM = SP_EMP_NUM;
DBMS_OUTPUT.PUT_LINE ((SP_SPOUSEID)||' '||
(SP_NAME)||' '||(SP_MARRIAGE_DATE));
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('NO EMPLOYEE WITH THAT NUMBER:'||SP_EMP_NUM);
END;
/
제발 spouseid가없는 경우 발생되는 두 번째 사용자 정의 예외를 추가해야합니다. 그래서 나는이 같은 것을 생각하고 있어요 : 다음
DECLARE
SP_EXCEPTION EXCEPTION;
PRAGMA EXCEPTION_INIT (SP_EXCEPTION, -20001);
BEGIN
RAISE_APPLICATION_ERROR (-20001, 'NO EMPLOYEE SPOUSE');
EXCEPTION
WHEN SP_EXCEPTION
THEN
DBMS_OUTPUT.PUT_LINE (SQLERRM);
END;
/
과 후 또는 NO_DATA_FOUND 예외 전에 (저장 프로 시저 코드에 두 번째 예외를 추가 : 나는 spouseid = 널 (null)에 문제가있어
WHEN SPOUSEID IS NULL
RAISE SP_EXCEPTION;
end;
/
을 . 그를 작성하는 다른 방법이? (spouseid에 삽입 된 일부 값은 참으로 널 (null)입니다).