ユーザーuser_1には、accountingデータベースに対するCREATE PROCEDURE権限が付与されていると想定します。付与者がデータベースの所有者であり、自分自身に対するWITH GRANT OPTION付きの明示的なCREATE PROCEDUREおよびEXECUTE PROCEDURE権限を持っているとします。この付与は、次の条件のどちらかが当てはまらない限り行なえません。
- 付与者が自身とユーザーやデータベースに対する、WITH GRANT OPTION付きでCREATE PROCEDUREとEXECUTE PROCEDUREの両方の権限を所有している。
- 付与者がユーザーDBCである。
user_1がaccountingデータベース内にSQLプロシージャを作成できるよう、以下のGRANTリクエストを実行依頼する必要があります。
GRANT CREATE PROCEDURE ON accounting TO user_1;
accountingデータベースに対するCREATE PROCEDURE、DROP PROCEDURE、およびEXECUTE PROCEDURE権限をuser_1に与えるため、以下のGRANTリクエストを実行依頼します。
GRANT CREATE PROCEDURE, EXECUTE PROCEDURE, DROP PROCEDURE ON accounting TO user_1;
キーワードPROCEDUREを、GRANTリクエストにCREATEまたはDROPなしで指定した場合、CREATE PROCEDUREおよびDROP PROCEDURE権限の両方がユーザーまたはデータベース レベルで与えられます。
次の例では、授与者が、accountingデータベースに対するCREATE PROCEDUREおよびDROP PROCEDURE権限をuser_1に付与するのに必要な権限を持っていると想定しています。
GRANT PROCEDURE ON accounting TO user_1;
user_1が、accountingデータベース内のプロシージャdaily_updatesに対して、WITH GRANT OPTIONがあるEXECUTE PROCEDURE権限を受ける必要があると想定します。また、付与者がプロシージャまたはそれを含むデータベースに対するEXECUTE PROCEDURE権限をWITH GRANT OPTION付きで持っているものとします。以下のGRANTリクエストを実行依頼する必要があります。
GRANT EXECUTE ON PROCEDURE accounting.daily_updates TO user_1 WITH GRANT OPTION;
このリクエストは以下の構文で指定することもできます。
GRANT EXECUTE PROCEDURE ON accounting.daily_updates TO user_1 WITH GRANT OPTION;
次のGRANTリクエストはエラーを返します。構文はマクロに対してのみ有効であり、daily_updateはマクロではありません。
GRANT EXECUTE ON accounting.daily_update TO user_1 WITH GRANT OPTION;
user_1に、SQLプロシージャweekly_updateに対するALTER PROCEDURE、EXECUTE PROCEDURE、およびDROP PROCEDURE権限を与える場合、必要なGRANTリクエストは以下のいずれかのようになります(付与者には付与を実行する権限があると想定します)。
GRANT ALTER PROCEDURE, EXECUTE, DROP PROCEDURE ON PROCEDURE weekly_update TO user_1; GRANT ALL ON PROCEDURE accounting.weekly_update TO user_1;