SQL> CONNECT employee/employee Connected. SQL> SELECT ename, pno 2 FROM scott.emp LEFT OUTER JOIN scott.phone 3 USING (empno);
ENAME PNO ---------- -------------------- SMITH 409-2351 ALLEN 625-1171 WARD 506-9715 MARTIN 108-8113 SCOTT 187-3972 TURNER 609-2430 ADAMS 421-3324 JAMES 550-4204 FORD 713-9878 MILLER 924-5401 KING CLARK BLAKE JONES
14 rows selected.
SQL> SAVE phones REPLACE Wrote file phones.sql SQL> CONNECT head/head Connected. SQL> /
ENAME PNO ---------- -------------------- SMITH 409-2351 ALLEN 625-1171 WARD 506-9715 JONES 600-1573 MARTIN 108-8113 BLAKE 738-6815 CLARK 650-1728 SCOTT 187-3972 KING 393-8155 TURNER 609-2430 ADAMS 421-3324 JAMES 550-4204 FORD 713-9878 MILLER 924-5401
14 rows selected.
Упражнение. Выдать вслед за предыдущим:
CONNECT scott/tiger / CONNECT lbacsys/lbacsys /
Объяснить результаты.
Пусть теперь в рамках той же политики EMPSEC_POLICY часть сотрудников также секретны, например сотрудники отдела разработок RESEARCH:
BEGIN SA_POLICY_ADMIN.APPLY_TABLE_POLICY (POLICY_NAME => 'EMPSEC_POLICY' , SCHEMA_NAME => 'SCOTT' , TABLE_NAME => 'EMP' , TABLE_OPTIONS => 'LABEL_DEFAULT, READ_CONTROL'); END; /
UPDATE scott.emp SET EMPSEC_LABEL = CHAR_TO_LABEL('EMPSEC_POLICY', 'OPEN');
UPDATE scott.emp SET EMPSEC_LABEL = CHAR_TO_LABEL('EMPSEC_POLICY', 'LIMITED') WHERE deptno IN (SELECT deptno FROM scott.dept WHERE dname = 'RESEARCH');
Новая проверка:
SQL> CONNECT employee/employee SQL> @phones
ENAME PNO ---------- -------------------- ALLEN 625-1171 WARD 506-9715 MARTIN 108-8113 TURNER 609-2430 JAMES 550-4204 MILLER 924-5401 BLAKE KING CLARK
9 rows selected.
SQL> CONNECT head/head SQL> /
ENAME PNO ---------- -------------------- SMITH 409-2351 ALLEN 625-1171 WARD 506-9715 JONES 600-1573 MARTIN 108-8113 BLAKE 738-6815 CLARK 650-1728 SCOTT 187-3972 KING 393-8155 TURNER 609-2430 ADAMS 421-3324 JAMES 550-4204 FORD 713-9878 MILLER 924-5401
14 rows selected.