XS_NAMESPACEパッケージ
XS_NAMESPACEパッケージには、ネームスペース・テンプレートおよび属性を作成、管理および削除するためのサブプログラムが含まれます。
オブジェクト・タイプ、コンストラクタ・ファンクション、シノニムおよび付与
このパッケージには、次のオブジェクト・タイプ、コンストラクタ・ファンクション、シノニムおよび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サブプログラムの要約
| サブプログラム | 説明 |
|---|---|
|
新規ネームスペース・テンプレートを作成します。 |
|
|
既存のネームスペース・テンプレートに1つ以上の属性を追加します。 |
|
|
ネームスペース・テンプレートから1つ以上の属性を削除します。 |
|
|
指定されたネームスペース・テンプレートにハンドラ・ファンクションを割り当てます。 |
|
|
指定されたネームスペース・テンプレートの説明文字列を設定します。 |
|
|
指定されたネームスペース・テンプレートを削除します。 |
この項では次の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);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
作成するネームスペース・テンプレートの名前。 |
|
|
ネームスペース・テンプレートに含まれる属性と、それらのデフォルト値および |
|
|
ネームスペース・テンプレートのハンドラ・ファンクションを含むスキーマ。 |
|
|
ネームスペース・テンプレートのハンドラ・ファンクションを含むパッケージ。 |
|
|
ネームスペース・テンプレートのハンドラ・ファンクション。ハンドラ・ファンクションは、属性イベントの発生時にコールされます。 |
|
|
このネームスペース・テンプレートのACLの名前。ACLが提供されていない場合、デフォルトは、アプリケーション・ユーザーによる無制限の属性操作を許可する事前定義済ACL |
|
|
ネームスペース・テンプレートのオプションの説明文字列。 |
例
次の例は、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);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
属性が追加されるネームスペース・テンプレートの名前。 |
|
|
追加する属性の名前。 |
|
|
追加する属性のリスト。 |
|
|
属性のデフォルト値。 |
|
|
属性に関連付けられている更新イベントなどの属性イベント。 |
例
次の例は、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);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
属性が削除されるネームスペース・テンプレートの名前。 |
|
|
削除する属性の名前。 |
|
|
削除する属性名のリスト。 |
例
次の例は、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);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
ハンドラ・ファンクションを設定するネームスペース・テンプレートの名前。 |
|
|
ハンドラ・パッケージとファンクションを含むスキーマ。 |
|
|
ハンドラ・ファンクションを含むパッケージの名前。 |
|
|
ネームスペース・テンプレートのハンドラ・ファンクションの名前。 |
例
次の例は、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);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
説明を設定するネームスペース・テンプレートの名前。 |
|
|
指定されたネームスペース・テンプレートの説明文字列。 |
例
次の例は、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);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
削除するネームスペース・テンプレートの名前。 |
|
|
使用する削除オプション。ネームスペース・テンプレートに対して、次のオプションの動作は同じです。
|
例
次の例は、デフォルトの削除オプションを使用してPOAttrsネームスペース・テンプレートを削除します。
BEGIN
SYS.XS_NAMESPACE.DELETE_TEMPLATE('POAttrs',XS_ADMIN_UTIL.DEFAULT_OPTION);
END;