XS_NAMESPACEパッケージ

XS_NAMESPACEパッケージには、ネームスペース・テンプレートおよび属性を作成、管理および削除するためのサブプログラムが含まれます。

セキュリティ・モデル

XS_NAMESPACEパッケージは、SYSスキーマに作成されます。ネームスペース・テンプレートと属性の管理を許可するADMIN_ANY_SEC_POLICYDBAロールに付与されます。

定数

属性イベント定数は次のとおりです。

NO_EVENT                     CONSTANT PLS_INTEGER := 0;
FIRSTREAD_EVENT              CONSTANT PLS_INTEGER := 1;
UPDATE_EVENT                 CONSTANT PLS_INTEGER := 2;
FIRSTREAD_PLUS_UPDATE_EVENT  CONSTANT PLS_INTEGER := 3;

オブジェクト・タイプ、コンストラクタ・ファンクション、シノニムおよび付与

このパッケージには、次のオブジェクト・タイプ、コンストラクタ・ファンクション、シノニムおよびGRANT文が定義されています。

-- Type definition for namespace template attribute
CREATE OR REPLACE TYPE XS$NS_ATTRIBUTE AS OBJECT (
-- Member Variables
-- Name of the namespace template attribute
-- Must be unique within a namespace template
-- Cannot be null
name              VARCHAR2(4000),
-- Default value assigned to the attribute
default_value     VARCHAR2(4000),
-- Trigger events associated with the attribute
-- Allowed values are :
-- 0 : NO_EVENT
-- 1 : FIRST_READ_EVENT
-- 2 : UPDATE_EVENT
-- 3 : FIRST_READ_PLUS_UPDATE_EVENT
attribute_events  NUMBER,

-- Constructor function
CONSTRUCTOR FUNCTION XS$NS_ATTRIBUTE
                    (name             IN VARCHAR2,
                     default_value    IN VARCHAR2 := NULL,
                     attribute_events IN NUMBER := 0)
                     RETURN SELF AS RESULT,

-- Return the name of the attribute
MEMBER FUNCTION GET_NAME RETURN VARCHAR2,
-- Return the default value of the attribute
MEMBER FUNCTION GET_DEFAULT_VALUE RETURN VARCHAR2,
-- Return the trigger events associated with attribute
MEMBER FUNCTION GET_ATTRIBUTE_EVENTS RETURN NUMBER,
-- Mutator procedures
-- Set the default value for the attribute
MEMBER PROCEDURE SET_DEFAULT_VALUE(default_value IN VARCHAR2),
-- Associate trigger events to the attribute
MEMBER PROCEDURE SET_ATTRIBUTE_EVENTS(attribute_events IN NUMBER)
);
CREATE OR REPLACE TYPE XS$NS_ATTRIBUTE_LIST AS VARRAY(1000) OF XS$NS_ATTRIBUTE;

XS_NAMESPACEサブプログラムの要約

表11-9 XS_NAMESPACEサブプログラムの要約

サブプログラム 説明

CREATE_TEMPLATEプロシージャ

新規ネームスペース・テンプレートを作成します。

ADD_ATTRIBUTESプロシージャ

既存のネームスペース・テンプレートに1つ以上の属性を追加します。

REMOVE_ATTRIBUTESプロシージャ

ネームスペース・テンプレートから1つ以上の属性を削除します。

SET_HANDLERプロシージャ

指定されたネームスペース・テンプレートにハンドラ・ファンクションを割り当てます。

SET_DESCRIPTIONプロシージャ

指定されたネームスペース・テンプレートの説明文字列を設定します。

DELETE_TEMPLATEプロシージャ

指定されたネームスペース・テンプレートを削除します。

この項では次のXS_NAMESPACEサブプログラムについて説明します。

CREATE_TEMPLATEプロシージャ

CREATE_TEMPLATEプロシージャは、新規ネームスペース・テンプレートを作成します。

構文

XS_NAMESPACE.CREATE_TEMPLATE (
  name             IN VARCHAR2,
  attr_list        IN XS$NS_ATTRIBUTE_LIST := NULL,
  schema           IN VARCHAR2 := NULL,
  package          IN VARCHAR2 := NULL,
  function         IN VARCHAR2 := NULL,
  acl              IN VARCHAR2 := 'SYS.NS_UNRESTRICTED_ACL'
  description      IN VARCHAR2 := NULL);

パラメータ

パラメータ 説明

name

作成するネームスペース・テンプレートの名前。

attr_list

ネームスペース・テンプレートに含まれる属性と、それらのデフォルト値およびUPDATE_EVENTなどの関連属性イベント。

schema

ネームスペース・テンプレートのハンドラ・ファンクションを含むスキーマ。

package

ネームスペース・テンプレートのハンドラ・ファンクションを含むパッケージ。

function

ネームスペース・テンプレートのハンドラ・ファンクション。ハンドラ・ファンクションは、属性イベントの発生時にコールされます。

acl

このネームスペース・テンプレートのACLの名前。ACLが提供されていない場合、デフォルトは、アプリケーション・ユーザーによる無制限の属性操作を許可する事前定義済ACL SYS.NS_UNRESTRICTED_ACLです。

description

ネームスペース・テンプレートのオプションの説明文字列。

次の例は、POAttrsというネームスペース・テンプレートを作成します。ネームスペース・テンプレートには、attrlistで定義されている属性のリストが含まれます。ネームスペース・テンプレートのハンドラ・ファンクションはPopulate_Order_Funcと呼ばれます。このハンドラ・ファンクションは、SCOTTスキーマに含まれるOrders_Pckgパッケージの一部です。ネームスペース・テンプレートには、テンプレートから作成されたネームスペースに対する無制限の操作を許可するNS_UNRESTRICTED_ACLがテンプレートに設定されています。

DECLARE
  attrlist XS$NS_ATTRIBUTE_LIST;
BEGIN
  attrlist := XS$NS_ATTRIBUTE_LIST();
  attrlist.extend(2);
  attrlist(1) := XS$NS_ATTRIBUTE('desc', 'general');
  attrlist(2) := XS$NS_ATTRIBUTE(name=>'item_no',
                 attribute_events=>XS_NAMESPACE.FIRSTREAD_EVENT);
  SYS.XS_NAMESPACE.CREATE_TEMPLATE('POAttrs', attrlist, 'SCOTT',
                                   'Orders_Pckg','Populate_Order_Func',
                                   'SYS.NS_UNRESTRICTED_ACL',
                                   'Purchase Order Attributes');
END;

ADD_ATTRIBUTESプロシージャ

ADD_ATTRIBUTESプロシージャは、既存のネームスペース・テンプレートに1つ以上の属性を追加します。

構文

XS_NAMESPACE.ADD_ATTRIBUTES ( 
  template         IN VARCHAR2,
  attribute        IN VARCHAR2,
  default_value    IN VARCHAR2 := NULL,
  attribute_events IN PLS_INTEGER := XS_NAMESPACE.NO_EVENT);

XS_NAMESPACE.ADD_ATTRIBUTES ( 
  template  IN VARCHAR2,
  attr_list IN XS$NS_ATTRIBUTE_LIST); 

パラメータ

パラメータ 説明

template

属性が追加されるネームスペース・テンプレートの名前。

attribute

追加する属性の名前。

attr_list

追加する属性のリスト。

default_value

属性のデフォルト値。

attribute_events

属性に関連付けられている更新イベントなどの属性イベント。

次の例は、item_typeという属性をPOAttrsネームスペースに追加します。追加される新規属性のデフォルト値と属性イベントも指定します。

BEGIN
  SYS.XS_NAMESPACE.ADD_ATTRIBUTES(template=>'POAttrs',attribute=>'item_type',
                                  default_value=>'generic',
                                  attribute_events=>XS_NAMESPACE.update_event);
END;

REMOVE_ATTRIBUTESプロシージャ

REMOVE_ATTRIBUTESプロシージャは、ネームスペース・テンプレートから1つ以上の属性を削除します。属性名が指定されていない場合は、すべての属性がネームスペース・テンプレートから削除されます。

構文

XS_NAMESPACE.REMOVE_ATTRIBUTES ( 
  template  IN VARCHAR2,
  attribute IN VARCHAR2); 

XS_NAMESPACE.REMOVE_ATTRIBUTES ( 
  template  IN VARCHAR2,
  attr_list IN XS$LIST); 

XS_NAMESPACE.REMOVE_ATTRIBUTES ( 
  template   IN VARCHAR2); 

パラメータ

パラメータ 説明

template

属性が削除されるネームスペース・テンプレートの名前。

attribute

削除する属性の名前。

attr_list

削除する属性名のリスト。

次の例は、item_type属性をPOAttrsネームスペースから削除します。

BEGIN
  SYS.XS_NAMESPACE.REMOVE_ATTRIBUTES('POAttrs','item_type');
END;

次の例は、POAttrsネームスペース・テンプレートからすべての属性を削除します。

BEGIN
  SYS.XS_NAMESPACE.REMOVE_ATTRIBUTES('POAttrs');
END;

SET_HANDLERプロシージャ

SET_HANDLERプロシージャは、指定されたネームスペース・テンプレートにハンドラ・ファンクションを割り当てます。

構文

XS_NAMESPACE.SET_HANDLER (
  template         IN VARCHAR2,
  schema           IN VARCHAR2,
  package          IN VARCHAR2,
  function         IN VARCHAR2);

パラメータ

パラメータ 説明

template

ハンドラ・ファンクションを設定するネームスペース・テンプレートの名前。

schema

ハンドラ・パッケージとファンクションを含むスキーマ。

package

ハンドラ・ファンクションを含むパッケージの名前。

function

ネームスペース・テンプレートのハンドラ・ファンクションの名前。

次の例は、Populate_Order_Funcというハンドラ・ファンクションをPOAttrsネームスペース・テンプレートに対して設定します。

BEGIN
  SYS.XS_NAMESPACE.SET_HANDLER('POAttrs','SCOTT',
                               'Orders_Pckg','Populate_Order_Func');
END;

SET_DESCRIPTIONプロシージャ

SET_DESCRIPTIONプロシージャは、指定されたネームスペース・テンプレートの説明文字列を設定します。

構文

XS_NAMESPACE.SET_DESCRIPTION (
  template     IN VARCHAR2,
  description  IN VARCHAR2);

パラメータ

パラメータ 説明

template

説明を設定するネームスペース・テンプレートの名前。

description

指定されたネームスペース・テンプレートの説明文字列。

次の例は、POAttrsネームスペース・テンプレートの説明文字列を設定します。

BEGIN
  SYS.XS_NAMESPACE.SET_DESCRIPTION('POAttrs','Purchase Order Attributes');
END;

DELETE_TEMPLATEプロシージャ

DELETE_TEMPLATEプロシージャは、指定されたネームスペース・テンプレートを削除します。

構文

XS_NAMESPACE.DELETE_TEMPLATE( 
  template      IN VARCHAR2,
  delete_option IN PLS_INTEGER := XS_ADMIN_UTIL.DEFAULT_OPTION); 

パラメータ

パラメータ 説明

template

削除するネームスペース・テンプレートの名前。

delete_option

使用する削除オプション。ネームスペース・テンプレートに対して、次のオプションの動作は同じです。

  • DEFAULT_OPTION:

    デフォルト・オプションでは、他で参照されていない場合にのみネームスペース・テンプレートを削除できます。ネームスペース・テンプレートを参照する他のエンティティがある場合は、ネームスペース・テンプレートを削除できません。

  • CASCADE_OPTION:

    カスケード・オプションは、ネームスペース・テンプレートをそれに対する参照とともに削除します。ネームスペース・テンプレートを削除するユーザーは、それらの参照も削除します。

  • ALLOW_INCONSISTENCIES_OPTION:

    不整合の許可オプションでは、他のエンティティからエンティティへの遅延バインド参照がある場合でもそのエンティティを削除できます。エンティティが前の依存性の一部である場合は、削除が失敗し、エラーが生成されます。

次の例は、デフォルトの削除オプションを使用してPOAttrsネームスペース・テンプレートを削除します。

BEGIN
  SYS.XS_NAMESPACE.DELETE_TEMPLATE('POAttrs',XS_ADMIN_UTIL.DEFAULT_OPTION);
END;