Помощь в написании студенческих работ
Антистрессовый сервис

Использование процедурных объектов для изменения данных

РефератПомощь в написанииУзнать стоимостьмоей работы

Создав процедуру, которую вы будете вызывать при необходимости внесения изменений в таблицу, можно дать возможность другим пользователям вызывать эту процедуру каждый раз, когда им потребуется изменить данные в таблице. Эту процедуру смогут вызывать пользователи Oracle с соответствующими привилегиями. Однако другим пользователям Oracle нет необходимости иметь какие-либо привилегии на таблицы… Читать ещё >

Использование процедурных объектов для изменения данных (реферат, курсовая, диплом, контрольная)

Другая возможность управлять тем, кто может выполнять выборки и вносить изменения в данные, состоит в использовании процедур, функций и пакетов.

Создав процедуру, которую вы будете вызывать при необходимости внесения изменений в таблицу, можно дать возможность другим пользователям вызывать эту процедуру каждый раз, когда им потребуется изменить данные в таблице.

Эту процедуру смогут вызывать пользователи Oracle с соответствующими привилегиями. Однако другим пользователям Oracle нет необходимости иметь какие-либо привилегии на таблицы, используемые процедурой.

В следующем примере кода показана простая процедура для удаления данных в таблице delegates. Пользователю TAEJEN дана привилегия объектного уровня execute, чтобы он имел возможность вызывать эту процедуру:

SQL> CREATE OR REPLACE PROCEDURE deletc_delegate (p_delegate_id, IN delegates. d_delegate_id%.

TYPE).

IS.

BEGIN.

DELETE FROM delegates.

WHERE d_delegate_id=p_delegate Jd;

END;

Procedure created.

SQL>GRANT EXEGUTE ON delete_delegate TO taejen;

Grant succeeded.

SQL> CONNECT taejen/taejen.

Connected.

SQL> EXECUTE asgend. delete_delegate (l);

PL/SQL procedure successfullycompleted.

SQL>

SQL> SHOW USER.

user is «TAEJEN» .

SQL> SELECT * FROM ascend. delegates;

SELECT * FROM ascend.delegates.

*.

ERROR at line 1:

OBA-942: table or view does not exist.

SQL>

В предыдущем примере показано, что пользователь с привилегией EXECUTE может вызвать процедуру (используя перед именем процедуры префикс владельца таким же образом, как вызываются и другие таблицы пользователя Oracle), но пользователь TAEJEN базы данных Oracle не может непосредственно обращаться к таблицам — никакие прямые привилегии на таблицы, используемые процедурой, пользователю TAEJEN даны не были.

Таким же способом, как создаются синонимы для таблиц, можно создать синоним для процедуры, чтобы избежать необходимости определять в прикладном коде владельца процедуры.

Показать весь текст
Заполнить форму текущей работой