目的
GLOPセット全体を削除したり、GLOPセットから個々のコンポーネントを削除するには、GLOP_Removeを使用します。
DROP GLOP SET文を使用してGLOPセット定義を削除できるようにするには、その前にGLOP_Removeを使用してGLOPセットとそのデータを削除する必要があります。
定義
REPLACE PROCEDURE DBCExtension.GLOP_Remove (IN Set_name VARCHAR(257) CHARACTER SET UNICODE, IN Type_g CHAR(2) CHARACTER SET LATIN, IN Association VARCHAR(257) CHARACTER SET UNICODE, IN Map_Index BYTEINT, IN Options CHAR(1) CHARACTER SET LATIN )
説明
- Set_name
- GLOPセットの名前またはテーブルの名前(Type_g引数の値によって決まります)。Type_gが次の場合:
- 非NULLの場合は、Set_nameはコンポーネントを削除するセットの名前です。名前が完全修飾されていない場合、現行のデフォルト データベースが想定されます。名前が存在しない場合、システムによりエラーが報告されます。
- NULLの場合は、Set_name は、削除するGLOPセットの複数の行に同等のデータが含まれているテーブルの名前です。表が現行のデフォルト データベースに置かれていない場合、名前は完全修飾されていなければなりません。
その他のすべての引数は無視されるので、NULLに設定しなければなりません。
テーブルに指定されていなければならない定義について詳しくは、使用上の注意を参照してください。
- Type_g
- GLOPの型。有効な値は以下のとおりです。
- 'SY': システムGLOPを指します。
- 'RO': ロールGLOPを指します。
- 'US': ユーザーGLOPを指します。
- 'SE': セッションGLOPを指します。
- 'TR': トランザクションGLOPを指します。
- 'RE': リクエストGLOPを指します。
- 'XR': 外部ルーチンGLOPを指します。
- NULLは、Set_name引数が、データを入れるテーブルの名前を提供することを意味します。
GLOP型の意味の詳細については、GLOP型を参照してください。
- Association
- 特定のGLOP型の関係。Options引数の値が'T'の場合、NULLはこれらのGLOP型の有効値です。Type_gが次の場合:
- 'RO': 関連性はロールの名前です。
- 'US': 関連性はユーザー名です。
- 'XR': 関連性は外部ルーチン名です。
外部ルーチンが現行のデフォルト データベースに置かれていない場合、名前は完全修飾されていなければなりません。UDFの場合、外部ルーチン名はルーチンの固有の名前でなければなりません。
- その他の値の場合には、関連性はすべて無視し、NULLに設定します。
- Map_Index
- 削除されるGLOPのマップ後のインデックスの位置。Type_gが次の場合:
- 'RO'、'US'または'XR'の場合、この型の最後のエントリが削除されると、マップ インデックス エントリはNULLに設定されます。
- その他の値の場合には、GLOPインデックス エントリは削除されます。
- Options
- 削除する量。有効な値は次のとおりです。
- 'A': GLOPセットのすべてのGLOPセット エントリを削除するように指定します。
Type_g引数の値がNULLでない場合は無視されます(なぜなら、セット全体が削除されるからです)。NULLは、Set_name引数がデータを入れるテーブルの名前を提供することを意味します。
- 'T': 指定された型のGLOPセット エントリを削除するよう指定します。
Type_g引数の値が'RO'、'US'、または'XR'であり、Association引数の値がNULLの場合、その型のGLOPデータはすべて、特定のセットについて削除されます。Association引数がNULLでない場合、その特定のGLOPデータは特定のセットについて削除されます。
読み取り専用GLOPの個々のページは削除できません。
- 'A': GLOPセットのすべてのGLOPセット エントリを削除するように指定します。
許可
多数のユーザーのためにGLOPデータの削除を行なう管理者は、DBCExtension.GLOP_Set、DBCExtension.GLOP_Map、およびDBCExtension.GLOP_Dataの各テーブルに対するDELETE権限を持っていなければなりません。Set_Name引数には、削除するセットが入っているデータベースが含まれている必要があります。
- GLOPを除去するデータベースに対してGLOPまたはDROP GLOP権限を持っている。
- GLOPセットの作成者または所有者であり、GLOP MEMBER権限を持っている。
'RO'、'US'、または'XR' GLOPを削除するには、現行許可がそのロール、ユーザー、または外部ルーチンに対して少なくとも1つの権限を所有しているか、持っている必要があります。
Set_name引数が、GLOPセット情報を含むテーブルの名前を渡す場合、プロシージャを実行するユーザーは指定されたテーブルに対するSELECT権限を持っていなければなりません。
GLOP権限について詳しくは、<Teradata Vantage™ - SQLデータ制御言語、B035-1149>を参照してください。
使用上の注意
既存のGLOPセットの全体または一部分を削除するには、GLOP_Removeプロシージャを使用します。GLOPセットのすべてのトレースを永久に削除するには、GLOP_Removeプロシージャを呼び出した後でDROP GLOP SET文を使用します。
すべてのパラメータで、データと整合性の有効な組み合わせが検査されます。ある場合に、提供された情報が無視されることがあります。例えば、'SE' GLOPセットを削除すると、Association引数は無効になります。パラメータが正しくないか、文脈どおりに使用されていない場合、システムによりエラーが報告されます。
このプロシージャはトランザクション内から呼び出してはなりません。なぜなら、このプロシージャはそれ自体のトランザクションを場合によっては複数個作成し、さらにDDL文を実行するかもしれないからです。このプロシージャはTeradataモード セッションから実行するよう設計されています。
特定のGLOPデータ型への参照がすべて削除されると、データも削除されます。非共有GLOPの場合、このことは特定の型のエントリがGLOPセットから削除されるときに行なわれます。共有GLOPの場合、GLOPデータへの最後のGLOPセットの参照が削除されるときに行なわれます。
Type_gフィールドがNULLの場合、Set_nameパラメータにはGLOPセットから削除されるデータを入れるテーブルの名前が含まれることが期待されます。テーブルには以下の定義がなければなりません。テーブルは一時テーブルでも構いません。
CREATE TABLE GLOP_Remove_Table /* the name can be anything */ (Sequence INTEGER NOT NULL, Set_name VARCHAR(257) CHARACTER SET UNICODE, Type_g CHAR(2) CHARACTER SET LATIN, Association VARCHAR(257) CHARACTER SET UNICODE, Map_Index BYTEINT, Options CHAR(1) CHARACTER SET LATIN) PRIMARY INDEX (Sequence);
定義済みの列の説明は、ストアド プロシージャのバージョンと同一で、同じ名前を持ちます。追加された列はSequence列のみで、ここにはデータが適用される順に増えていく番号が含まれていなければなりません。順序番号が増えていない場合、システムによりエラーが報告されます。
例: DBCExtension.GLOP_Removeストアド プロシージャ
'Auditor'ロールはもう使用されないため、このロールのエントリを削除します。
CALL DBCExtension.GLOP_Remove( 'Accounting', -- the accounting GLOP set 'RO', -- removing a role 'Auditor', -- role being removed from the set 2, -- mapped to index 2 'T'); -- remove only specified type
これが最後のエントリである場合、DROP GLOP SET文を実行します。
DROP GLOP SET Accounting;