Кто может изменить хранимую процедуру?
Выполнить оператор ALTER PROCEDURE
могут:
-
Владелец хранимой процедуры;
-
Пользователи с привилегией
ALTER ANY PROCEDURE
.
Выполнить оператор ALTER PROCEDURE
могут:
Владелец хранимой процедуры;
Пользователи с привилегией ALTER ANY PROCEDURE
.
ALTER PROCEDURE GET_EMP_PROJ (
EMP_NO SMALLINT)
RETURNS (
PROJ_ID VARCHAR(20))
AS
BEGIN
FOR SELECT
PROJ_ID
FROM
EMPLOYEE_PROJECT
WHERE
EMP_NO = :emp_no
INTO :proj_id
DO
SUSPEND;
END
CREATE OR ALTER PROCEDURE
Создание новой или изменение существующей хранимой процедуры.
DSQL, ESQL
CREATE OR ALTER PROCEDURE procname [(<inparam> [, <inparam> ...])] [ RETURNS (<outparam> [, <outparam> ...]) ] <routine-body> Подробнее см. CREATE PROCEDURE.
Оператор CREATE OR ALTER PROCEDURE
создаёт новую или изменяет существующую хранимую процедуру.Если хранимая процедура не существует, то она будет создана с использованием предложения CREATE PROCEDURE
.Если она уже существует, то она будет изменена и откомпилирована, при этом существующие привилегии и зависимости сохраняются.
CREATE OR ALTER PROCEDURE GET_EMP_PROJ (
EMP_NO SMALLINT)
RETURNS (
PROJ_ID VARCHAR(20))
AS
BEGIN
FOR SELECT
PROJ_ID
FROM
EMPLOYEE_PROJECT
WHERE
EMP_NO = :emp_no
INTO :proj_id
DO
SUSPEND;
END
DROP PROCEDURE
Удаление существующей хранимой процедуры.
DSQL, ESQL
DROP PROCEDURE procname
Параметр | Описание |
---|---|
procname |
Имя хранимой процедуры. |
Оператор DROP PROCEDURE
удаляет существующую хранимую процедуру.Если от хранимой процедуры существуют зависимости, то при попытке удаления такой процедуру будет выдана соответствующая ошибка.
Выполнить оператор DROP PROCEDURE
могут:
Владелец хранимой процедуры;
Пользователи с привилегией DROP ANY PROCEDURE
.
DROP PROCEDURE GET_EMP_PROJ;
RECREATE PROCEDURE
Создание новой или пересоздание существующей хранимой процедуры.
DSQL, ESQL
RECREATE PROCEDURE procname [(<inparam> [, <inparam> ...])] [ RETURNS (<outparam> [, <outparam> ...]) ] <routine-body> Подробнее см. CREATE PROCEDURE.
Оператор RECREATE PROCEDURE
создаёт новую или пересоздаёт существующую хранимую процедуру.Если процедура с таким именем уже существует, то оператор попытается удалить её и создать новую процедуру.Операция закончится неудачей при подтверждении транзакции, если процедура имеет зависимости.
Note
|
Имейте в виду, что ошибки зависимостей не обнаруживаются до фазы подтверждения транзакции. |
После пересоздания процедуры привилегии на выполнение хранимой процедуры и привилегии самой хранимой процедуры не сохраняются.
RECREATE PROCEDURE GET_EMP_PROJ (
EMP_NO SMALLINT)
RETURNS (
PROJ_ID VARCHAR(20))
AS
BEGIN
FOR SELECT
PROJ_ID
FROM
EMPLOYEE_PROJECT
WHERE
EMP_NO = :emp_no
INTO :proj_id
DO
SUSPEND;
END