Slide 26
Slide 26 text
PL/SQL Code
Copyright © 2021, Oracle and/or its affiliates
28
declare
l_deptno dept.deptno%type;
begin
-- 部門の番号を取得する。未登録であれば表DEPTに登録する。
begin
select deptno into l_deptno from dept where dname = :DNAME and loc = :LOC;
exception
when no_data_found then
insert into dept(dname, loc) values(:DNAME, :LOC) returning deptno into l_deptno;
end;
-- 表EMPを操作します。
case :APEX$ROW_STATUS
when 'C' then
-- 主キーの値を対話グリッドに返すことは必須です。
insert into emp(ename, job, mgr, hiredate, sal, comm, deptno)
values(:ENAME, :JOB, :MGR, :HIREDATE, :SAL, :COMM, l_deptno)
returning empno into :EMPNO;
when 'U' then
-- 更新するのは従業員の情報のみです。
update emp set ename = :ENAME, job = :JOB, mgr = :MGR, hiredate = :HIREDATE,
sal = :SAL, comm = :COMM, deptno = l_deptno
where empno = :EMPNO;
when 'D' then
-- 削除するのも従業員の情報のみです。
delete from emp where empno = :EMPNO;
end case;
end;