エディション・ベースの再定義の記事の2番目になります。前回はプロシージャを扱いました。今回はエディションング・ビューを使ったOracle APEXアプリケーションを作ってみます。
環境は前回と同じAlways FreeのAutonomous Transaction Processingを使います。Oracle APEXのワークスペースとして、APEXDEVが作成されていることが前提です。
コマンドラインの操作も前回と同様にSQLclを使用します。
0. 行う作業の説明。
サンプル・データセットのEMP/DEPTをインストールして、それを元に最初のアプリケーションを作成します。
新規にエディションを作成し、表EMPに列WORK_LOCATIONを追加します。アプリケーションもWORK_LOCATIONを扱うように更新します。
1. サンプル・データセットをインストールし、アプリケーションの初版を作る。
SQLワークショップよりユーティリティに含まれるサンプル・データセットを開きます。
SQL> create edition ed01;
Edition ED01は作成されました。
SQL>
SQL> grant use on edition ed01 to apexdev;
Grantが正常に実行されました。
SQL>
SQL> alter table emp rename to emp_b;
Table EMPが変更されました。
SQL> alter table dept rename to dept_b;
Table DEPTが変更されました。
SQL>
SQL> drop trigger emp_trg1;
Trigger EMP_TRG1が削除されました。
SQL> create or replace noneditionable TRIGGER emp_trg1
2 before insert on "EMP_B"
3 for each row
4 begin
5 if :new.empno is null then
6 select emp_seq.nextval into :new.empno from sys.dual;
7 end if;
8 end;
9 /
Trigger EMP_TRG1がコンパイルされました
SQL> drop trigger dept_trg1;
Trigger DEPT_TRG1が削除されました。
SQL> create or replace noneditionable TRIGGER dept_trg1
2 before insert on "DEPT_B"
3 for each row
4 begin
5 if :new.deptno is null then
6 select dept_seq.nextval into :new.deptno from sys.dual;
7 end if;
8 end;
9 /
Trigger DEPT_TRG1がコンパイルされました
SQL>
SQL> alter session set edition = ed01;
Sessionが変更されました。
SQL> create editioning view emp
2 as
3 select * from emp_b;
View EMPは作成されました。
SQL> create editioning view dept
2 as
3 select * from dept_b;
View DEPTは作成されました。
SQL>
SQL> select * from emp_dept_v;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO DNAME LOC
________ _________ _________ _________ ____________ _______ _______ _________ ________ ______
7839 中島 亜希子 社長 17-NOV-81 5000 10 会計 東京
7782 坂本 明 マネージャー 中島 亜希子 09-JUN-81 2450 10 会計 東京
7934 石原 裕美 店員 坂本 明 23-JAN-82 1300 10 会計 東京
7566 関口 晃 マネージャー 中島 亜希子 02-APR-81 2975 20 研究開発 京都
7788 新井 敦子 アナリスト 関口 晃 09-DEC-82 3000 20 研究開発 京都
7902 石橋 敦 アナリスト 関口 晃 03-DEC-81 3000 20 研究開発 京都
7369 村田 淳 店員 石橋 敦 17-DEC-80 800 20 研究開発 京都
7876 増田 秀樹 店員 新井 敦子 12-JAN-83 1100 20 研究開発 京都
7698 伊藤 明子 マネージャー 中島 亜希子 01-MAY-81 2850 30 セールス 大阪
7499 村上 綾子 セールス 伊藤 明子 20-FEB-81 1600 300 30 セールス 大阪
7521 斉藤 大介 セールス 伊藤 明子 22-FEB-81 1250 500 30 セールス 大阪
7654 高橋 大輔 セールス 伊藤 明子 28-SEP-81 1250 1400 30 セールス 大阪
7844 金子 恵美 セールス 伊藤 明子 08-SEP-81 1500 0 30 セールス 大阪
7900 佐野 英樹 店員 伊藤 明子 03-DEC-81 950 30 セールス 大阪
14行が選択されました。
SQL>
begin
apex_util.set_edition('ED01');
end;
SQL> create edition ed02 as child of ed01;
Edition ED02は作成されました。
SQL> grant use on edition ed02 to apexdev;
Grantが正常に実行されました。
SQL>
SQL> alter session set edition = ed02;
Sessionが変更されました。
SQL> alter table emp_b add (work_location varchar2(80));
Table EMP_Bが変更されました。
SQL> create or replace editioning view emp
2 as
3 select * from emp_b;
View EMPは作成されました。
SQL>
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO WORK_LOCATION
________ _________ _________ _______ ____________ _______ _______ _________ ________________
7839 中島 亜希子 社長 17-NOV-81 5000 10
7698 伊藤 明子 マネージャー 7839 01-MAY-81 2850 30
7782 坂本 明 マネージャー 7839 09-JUN-81 2450 10
7566 関口 晃 マネージャー 7839 02-APR-81 2975 20
7788 新井 敦子 アナリスト 7566 09-DEC-82 4000 20
7902 石橋 敦 アナリスト 7566 03-DEC-81 3000 20
7369 村田 淳 店員 7902 17-DEC-80 800 20
7499 村上 綾子 セールス 7698 20-FEB-81 1610 300 30
7521 斉藤 大介 セールス 7698 22-FEB-81 1250 500 30
7654 高橋 大輔 セールス 7698 28-SEP-81 1250 1400 30
7844 金子 恵美 セールス 7698 08-SEP-81 1500 0 30
7876 増田 秀樹 店員 7788 12-JAN-83 1100 20
7900 佐野 英樹 店員 7698 03-DEC-81 950 30
7934 石原 裕美 店員 7782 23-JAN-82 1300 10
14行が選択されました。
SQL>
SQL> alter session set edition = ed01;
Sessionが変更されました。
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
________ _________ _________ _______ ____________ _______ _______ _________
7839 中島 亜希子 社長 17-NOV-81 5000 10
7698 伊藤 明子 マネージャー 7839 01-MAY-81 2850 30
7782 坂本 明 マネージャー 7839 09-JUN-81 2450 10
7566 関口 晃 マネージャー 7839 02-APR-81 2975 20
7788 新井 敦子 アナリスト 7566 09-DEC-82 4000 20
7902 石橋 敦 アナリスト 7566 03-DEC-81 3000 20
7369 村田 淳 店員 7902 17-DEC-80 800 20
7499 村上 綾子 セールス 7698 20-FEB-81 1610 300 30
7521 斉藤 大介 セールス 7698 22-FEB-81 1250 500 30
7654 高橋 大輔 セールス 7698 28-SEP-81 1250 1400 30
7844 金子 恵美 セールス 7698 08-SEP-81 1500 0 30
7876 増田 秀樹 店員 7788 12-JAN-83 1100 20
7900 佐野 英樹 店員 7698 03-DEC-81 950 30
7934 石原 裕美 店員 7782 23-JAN-82 1300 10
14行が選択されました。
SQL>
SQL> select * from user_editioning_views_ae;
VIEW_NAME TABLE_NAME EDITION_NAME
____________ _____________ _______________
DEPT DEPT_B ED01
EMP EMP_B ED01
EMP EMP_B ED02
SQL>
- データベースのデフォルト・エディションをED02に変更する。
- エディションORA$BASEに開発のために使用するエディショニング・ビューを作成する。
SQL> alter session set edition = ora$base;
Sessionが変更されました。
SQL> create editioning view emp
2 as
3 select * from emp_b;
View EMPは作成されました。
SQL> create editioning view dept
2 as
3 select * from dept_b;
View DEPTは作成されました。
SQL>