Базы данных Oracle - статьи

         

Пример редакций процедур


Заведение разных редакций одной и той же процедуры в схеме со свойством EDITIONS_ENABLED = TRUE выглядит достаточно прозрачно. Так, для добавления данных о сотрудниках можно завести две редакции процедуры INSERT_EMPLOYEE следующим образом: CONNECT yard/pass ALTER SESSION SET EDITION = ora$base;

CREATE OR REPLACE PROCEDURE insert_employee ( eno NUMBER , ename VARCHAR2 , dno NUMBER ) AS BEGIN INSERT INTO yard.emp_view ( empno, ename, deptno ) VALUES ( eno, ename, dno ) ; END; / GRANT EXECUTE ON insert_employee TO scott;

ALTER SESSION SET EDITION = app_release_1;

CREATE OR REPLACE PROCEDURE insert_employee ( eno NUMBER , ename VARCHAR2 ) AS BEGIN INSERT INTO yard.emp_view ( empno, ename ) VALUES ( eno, ename ) ; END; / GRANT EXECUTE ON insert_employee TO scott;

Проверка: SQL> CONNECT scott/tiger Connected. SQL> ALTER SESSION SET EDITION = ora$base;

Session altered.

SQL> EXECUTE yard.insert_employee ( 1111, 'OBAMA', 10 )

PL/SQL procedure successfully completed.

SQL> ROLLBACK;

Rollback complete.

SQL> ALTER SESSION SET EDITION = app_release_1;

Session altered.

SQL> EXECUTE yard.insert_employee ( 1111, 'OBAMA' )

PL/SQL procedure successfully completed.

SQL> ROLLBACK;

Rollback complete.

Откат транзакций сделан (а) чтобы сохранить прежние данные, и (б) в первом случае – чтобы закрыть транзакцию перед переключением на новую редакцию.



Содержание раздела