ケース スタディー: SQLプロシージャ - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ制御言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/sqd1591723147563.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1149
Product Category
Software
Teradata Vantage

ユーザーuser_1には、accountingデータベースに対するCREATE PROCEDURE権限が付与されていると想定します。付与者がデータベースの所有者であり、自分自身に対するWITH GRANT OPTION付きの明示的なCREATE PROCEDUREおよびEXECUTE PROCEDURE権限を持っているとします。この付与は、次の条件のどちらかが当てはまらない限り行なえません。

  • 付与者が自身とユーザーやデータベースに対する、WITH GRANT OPTION付きでCREATE PROCEDUREとEXECUTE PROCEDUREの両方の権限を所有している。
  • 付与者がユーザーDBCである。

user_1accountingデータベース内に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;