Составители:
Рубрика:
ГУАП МЦИТ
Введение в «ORACLE»
Под ред. проф. В.М.Космачёва
67
соответствующими типами данных атрибутов к моменту создания тела пакета создана. Протокол создания тела пакета
приведен ниже.
Пример 2.3.29
SQL>CREATE OR REPLACE PACKAGE BODY РАС IS
2 PAC
_
COUNT NUMBER:=0;
3 FUNCTION MUL(Argl NUMBER, Arg2 NUMBER)
4
RETURN NUMBER IS
5 BEGIN
6 AUDIT
;
7 RETURN Argl* PAC_CONST+Arg2*PAC_CONST;
8 END
;
9
PROCEDURE AUDIT IS
10 BEGIN
11 РАС COUNT:=PAC
_
COUNT+1;
12 INSERT INTO TabAUD VALUES
(
PAC COUNT
,
SYSDATE
)
;
13 COMMIT;
14 END;
15 END;
16 /
Package body created.
Константа или переменная, описанная в спецификации пакета, может быть доступна из пользовательской программы
(если процедуре или функции такой доступ разрешен). Чтобы обратиться к глобальной переменной или константе
пакета, нужно указать в качестве префикса имя пакета
Ниже приведен пример, иллюстрирующий возможность доступа к глобальной константе пакета и невозможность
доступа к частной переменной пакета.
SQL>EXEC DBMSJDUTPUT.PUT LINE{РАС.PAC_CONST);
20.0
PL/SQL procedure successfully completed.
SQL>EXEC DBMS_OUTPUT.PUT_LINE(РАС.PAC_COUNT);
begin
dbms_output. put_line (рас. pac_count) ;
end;
ERROR at line 1;
ORA-06550: line I, column 34:
PLS-00302: component ‘PAC_COUNT' must be declared
ORA-06550: line I, column 7:
PL/SQL: Statement ignored
Чтобы вызвать процедуру или функцию пакета, в вызове нужно указать в качестве префикса имя пакета.
В заключение рассмотрим пример использования функции созданного пакета:
SQL>EXEC DBMS_OUTPUT.PUT_LINE(PAC.MUL(111,222)) ;
PL/SQL procedure successfully completed.
При использовании переменных пакета инициализация локальных переменных пакета происходит при запуске
сервера Oracle. В данном случае, после останова и повторного запуска сервера, счетчик обращений PAC_COUNT
будет установлен в нулевое состояние. Если по смыслу решаемой задачи требуется независимое от остановов сервера
приращение счетчика, можно воспользоваться таким объектом, как последовательность.
Для освобождения ресурсов сервера может потребоваться уничтожить пакет. В собственной схеме пользователю не
требуются дополнительные привилегии для уничтожения пакета. Для уничтожения пакета в схеме другого
пользователя необходима привилегия DROP ANY PROCEDURE.
Страницы
- « первая
- ‹ предыдущая
- …
- 65
- 66
- 67
- 68
- 69
- …
- следующая ›
- последняя »
