The XS_NAMESPACE package includes subprograms to create, manage, and delete namespace templates and attributes.
The following object types, constructor functions, synonyms, and GRANT statements are defined for this package.
-- 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;
Table 11-9 Summary of XS_NAMESPACE Subprograms
| Subprogram | Description |
|---|---|
|
Creates a new namespace template. |
|
|
Adds one or more attributes to an existing namespace template. |
|
|
Removes one or more attributes from a namespace template. |
|
|
Assigns a handler function for the specified namespace template. |
|
|
Sets a description string for the specified namespace template. |
|
|
Deletes the specified namespace template. |
This section describes the following XS_NAMESPACE subprograms:
The CREATE_TEMPLATE procedure creates a new namespace template.
Syntax
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);
Parameters
| Parameter | Description |
|---|---|
|
|
The name of the namespace template to be created. |
|
|
The attributes contained in the namespace template together with their default values and associated attribute events, such as |
|
|
The schema that contains the handler function for the namespace template. |
|
|
The package that contains the handler function for the namespace template. |
|
|
The handler function for the namespace template. The handler function is called when an attribute event occurs. |
|
|
The name of the ACL for this namespace template. If no ACL is provided, the default is the predefined ACL |
|
|
An optional description string for the namespace template. |
Examples
The following example creates a namespace template called POAttrs. The namespace template contains a list of attributes defined by attrlist. The handler function for the namespace template is called Populate_Order_Func. This handler function is part of the Orders_Pckg package, which is contained in the SCOTT schema. The namespace template has NS_UNRESTRICTED_ACL set on the template, which allows unrestricted operation on namespaces created from the template.
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;
The ADD_ATTRIBUTES procedure adds one or more attributes to an existing namespace template.
Syntax
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);
Parameters
| Parameter | Description |
|---|---|
|
|
The name of the namespace templates to which the attribute(s) is/are to be added. |
|
|
The name of the attribute to be added. |
|
|
The list of attributes to be added. |
|
|
The default value of the attribute. |
|
|
The attribute event associated with the attribute, such as update event. |
Examples
The following example adds an attribute called item_type to the POAttrs namespace. It also specifies a default value and attribute event for the new attribute that is added.
BEGIN
SYS.XS_NAMESPACE.ADD_ATTRIBUTES(template=>'POAttrs',attribute=>'item_type',
default_value=>'generic',
attribute_events=>XS_NAMESPACE.update_event);
END;
The REMOVE_ATTRIBUTES procedure removes one or more attributes from a namespace template. If no attribute names are specified, then all attributes are removed from the namespace template.
Syntax
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);
Parameters
| Parameter | Description |
|---|---|
|
|
The name of the namespace template from which the attribute(s) is/are to be removed. |
|
|
The name of the attribute to be removed. |
|
|
The list of attribute names to be removed. |
Examples
The following example removes the item_type attribute from the POAttrs namespace.
BEGIN
SYS.XS_NAMESPACE.REMOVE_ATTRIBUTES('POAttrs','item_type');
END;
The following example removes all attributes from the POAttrs namespace template.
BEGIN
SYS.XS_NAMESPACE.REMOVE_ATTRIBUTES('POAttrs');
END;
The SET_HANDLER procedure assigns a handler function for the specified namespace template.
Syntax
XS_NAMESPACE.SET_HANDLER ( template IN VARCHAR2, schema IN VARCHAR2, package IN VARCHAR2, function IN VARCHAR2);
Parameters
| Parameter | Description |
|---|---|
|
|
The name of the namespace template for which the handler function is to be set. |
|
|
The schema containing the handler package and function. |
|
|
The name of the package that contains the handler function. |
|
|
The name of the handler function for the namespace template. |
Examples
The following example sets a handler function, called Populate_Order_Func, for the POAttrs namespace template.
BEGIN
SYS.XS_NAMESPACE.SET_HANDLER('POAttrs','SCOTT',
'Orders_Pckg','Populate_Order_Func');
END;
The SET_DESCRIPTION procedure sets a description string for the specified namespace template.
Syntax
XS_NAMESPACE.SET_DESCRIPTION ( template IN VARCHAR2, description IN VARCHAR2);
Parameters
| Parameter | Description |
|---|---|
|
|
The name of the namespace template whose description is to be set. |
|
|
A description string for the specified namespace template. |
Examples
The following example sets a description string for the POAttrs namespace template.
BEGIN
SYS.XS_NAMESPACE.SET_DESCRIPTION('POAttrs','Purchase Order Attributes');
END;
The DELETE_TEMPLATE procedure deletes the specified namespace template.
Syntax
XS_NAMESPACE.DELETE_TEMPLATE( template IN VARCHAR2, delete_option IN PLS_INTEGER := XS_ADMIN_UTIL.DEFAULT_OPTION);
Parameters
| Parameter | Description |
|---|---|
|
|
The name of the namespace template to be deleted. |
|
|
The delete option to use. To the namespace template, the behavior of the following options is the same:
|
Examples
The following example deletes the POAttrs namespace template using the default delete option.
BEGIN
SYS.XS_NAMESPACE.DELETE_TEMPLATE('POAttrs',XS_ADMIN_UTIL.DEFAULT_OPTION);
END;