The DBMS_XDB_REPOS
package provides an interface to operate on the Oracle XML database Repository.
See Also:
Oracle XML DB Developer's Guide for more information regarding:This chapter contains the following topics:
Overview
Security Model
Constants
The DBMS_XDB_REPOS
package lets you operate on the Oracle XML DB Repository to create, modify and delete resources, including managing security based on access control lists (ACLs). The interface provides both query and DML functions. Using a combination of PL/SQL packages - DBMS_XDB_REPOS
, DBMS_XDBZ, and DBMS_XDB_VERSION - you can create, delete, and rename documents and folders, move a file or folder within the folder hierarchy, set and change the access permissions on a file or folder, and initiate and manage versioning.
Owned by XDB, the DBMS_XDB_REPOS
package must be created by SYS
or XDB. The EXECUTE
privilege is granted to PUBLIC
. Subprograms in this package are executed using the privileges of the current user. Subprograms that operate on the XDB Configuration will succeed only if the current user is SYS
or XDB, or the current user has the XDBADMIN
or DBA
role.
The DBMS_XDB_REPOS
package uses the constants shown in Table 185-1, "DBMS_XDB_REPOS Constants".
Table 185-1 DBMS_XDB_REPOS Constants
Constant | Type | Value | Description |
---|---|---|---|
|
|
1 |
Deletes a resource; fails if the resource has children. |
|
|
2 |
Deletes a resource and its children, if any. |
|
|
3 |
Deletes the resource, even if the object it contains is invalid |
|
|
4 |
Deletes a resource and its children, if any, even if the object it contains is invalid |
|
|
1 |
Deletes the row in the metadata |
|
|
2 |
Does not delete the row |
|
|
(60*60) |
Timeout value (in seconds) of the webdav lock |
|
|
1 |
Hard link of a folder to a resource |
|
|
2 |
Weak link of a folder to a resource |
|
|
3 |
Symbolic link of a folder to a resource |
Table 185-2 DBMS_XDB_REPOS Package Subprograms
Subprogram | Description |
---|---|
Checks access privileges granted to the current user by specified ACL document on a resource whose owner is specified by the 'owner' parameter. |
|
Takes in user-defined metadata either as a |
|
Changes the owner of the resource/s to the specified owner. |
|
Adds a specified ACE to a specified resource's ACL |
|
Checks access privileges granted to the current user on the specified resource |
|
Creates a new folder resource in the hierarchy |
|
Creates a virtual path to the resource based on object ID |
|
Creates a new resource |
|
Deletes a resource from the hierarchy |
|
Deletes metadata from a resource (can be used for schema-based or nonschema-based metadata) |
|
Determines if a resource is the hierarchy, based on its absolute path |
|
Retrieves ACL document that protects resource given its path name |
|
Retrieves the contents of a resource returned as a BLOB |
|
Retrieves the contents of a resource returned as a CLOB |
|
Retrieves the contents of a resource returned as a string |
|
Retrieves the contents of a resource returned as a a |
|
Retrieves the contents of a resource returned as an |
|
Returns that resource's lock token for the current user given a path to a resource |
|
Gets all privileges granted to the current user on a specified resource |
|
Returns the object ID of the resource from its absolute path |
|
Returns the current tablespace of the XDB (user) |
|
Returns |
|
Returns |
|
Returns |
|
Returns |
|
Returns |
|
Creates a link to an existing resource |
|
Gets a WebDAV-style lock on that resource given a path to that resource |
|
Processes document links in the specified resource |
|
Deletes all user metadata from a resource |
|
Renames the XDB resource |
|
Sets the ACL on a specified resource |
|
Splits the path into a parentpath and childpath |
|
Changes the modification time of the resource to the current time |
|
Unlocks the resource given a lock token and resource path |
|
Updates metadata for a resource |
This function checks access privileges granted to the current user by specified ACL document by the OWNER
of the resource. Returns positive integer if all privileges are granted.
DBMS_XDB_REPOS.ACLCHECKPRIVILEGES( acl_path IN VARCHAR2, owner IN VARCHAR2, privs IN xmltype) RETURN PLS_INTEGER;
Table 185-3 ACLCHECKPRIVILEGES Function Parameters
Parameter | Description |
---|---|
|
Absolute path in the Hierarchy for ACL document |
|
Resource owner name; the pseudo user "DAV:owner" is replaced by this user during ACL privilege resolution |
|
An |
This procedure takes in user-defined metadata either as a REF
to XMLTYPE
or an XMLTYPE
and adds it to the desired resource.
DBMS_XDB_REPOS.APPENDRESOURCEMETADATA ( abspath IN VARCHAR2, metadata IN XMLTYPE); DBMS_XDB_REPOS.APPENDRESOURCEMETADATA ( abspath IN VARCHAR2, metadata IN REF SYS.XMLTYPE);
In the case in which a REF
is passed in, the procedure stores the REF
in the resource, and the metadata is stored in a separate table. In this case you are responsible for populating the RESID
column for the metadata table. Note that theREF
passed in must be unique. In other words, there must not be aREF
with the same value in the resource metadata, as this would violate uniqueness of properties. An error is thrown if users attempt to add a REF
that already exists.
In the case where the XMLTYPE is passed in, the data is parsed to determine if it is schema-based or not and stored accordingly.
This procedure changes the owner of the resource/s to the specified owner.
DBMS_XDB_REPOS.CHANGEOWNER( abspath IN VARCHAR2, owner IN VARCHAR2, recurse IN BOOLEAN := FALSE);
This function checks access privileges granted to the current user on the specified resource.
The functions create a new resource. The description of the overload options precede each version of the syntax
Creates a new resource with a specified string as its contents:
DBMS_XDB_REPOS.CREATERESOURCE( abspath IN VARCHAR2, data IN VARCHAR2) RETURN BOOLEAN;
Creates a new resource with a specified XMLType
data as its contents:
DBMS_XDB_REPOS.CREATERESOURCE( abspath IN VARCHAR2, data IN SYS.XMLTYPE) RETURN BOOLEAN;
Given a REF
to an existing XMLType
row, creates a resource whose contents point to that row. That row should not already exist inside another resource:
DBMS_XDB_REPOS.CREATERESOURCE( abspath IN VARCHAR2, datarow IN REF SYS.XMLTYPE) RETURN BOOLEAN;
Creates a resource with a specified BLOB
as its contents, and specifies character set of the source BLOB
:
DBMS_XDB_REPOS.CREATERESOURCE( abspath IN VARCHAR2, data IN BLOB, csid IN NUMBER :=0) RETURN BOOLEAN;
Creates a resource with a specified BFILE
as its contents, and specifies character set of the source BFILE
:
DBMS_XDB_REPOS.CREATERESOURCE ( abspath IN VARCHAR2, data IN BFILE, csid IN NUMBER :=0) RETURN BOOLEAN;
Creates a resource with a specified CLOB
as its contents:
DBMS_XDB_REPOS.CREATERESOURCE ( abspath IN VARCHAR2, data IN CLOB) RETURN BOOLEAN;
Given a string, inserts a new resource into the hierarchy with the string as the contents:
DBMS_XDB_REPOS.CREATERESOURCE ( abspath IN VARCHAR2, data IN VARCHAR2, schemaurl IN VARCHAR2 := NULL, elem IN VARCHAR2 := NULL) RETURN BOOLEAN;
Given an XMLTYPE
and a schema URL, inserts a new resource into the hierarchy with the XMLTYPE
as the contents:
DBMS_XDB_REPOS.CREATERESOURCE ( abspath IN VARCHAR2, data IN SYS.XMLTYPE, schemaurl IN VARCHAR2 := NULL, elem IN VARCHAR2 := NULL) RETURN BOOLEAN;
Table 185-10 CREATERESOURCE Function Parameters
Parameter | Description |
---|---|
|
Absolute path of the resource to create. The path name's parent folder must already exist in the hierarchy. In other words, if |
|
String buffer containing new resource's contents. The data is parsed to check if it contains a schema-based XML document, and the contents are stored as schema-based in the schema's default table. Otherwise, it is saved as binary data. |
|
|
|
Character set id of the document. Must be a valid Oracle ID; otherwise returns an error. If CSID is not specified, or if a zero CSID is specified, then the character set id of the document is determined as follows:
|
|
For XML data, schema URL data conforms to (default |
|
Element name (default |
This procedure takes in a resource by absolute path and removes either the schema-based metadata identified by the REF, or the metadata identified by the namespace and name combination, which can be either schema-based or non-schema based. It also takes an additional (optional) parameter that specifies how to delete it. This parameter is only relevant for schema-based resource metadata that needs to be deleted. For non-schema based metadata, this parameter is ignored.
Can be used only for schema-based metadata:
DBMS_XDB_REPOS.DELETERESOURCEMETADATA ( abspath IN VARCHAR2, metadata IN REF SYS.XMLTYPE, delete_option IN pls_integer := DBMS_XDB_REPOS.DELETE_RESOURCE_METADATA_CASCADE);
Can be used for schema-based or nonschema-based metadata:
DBMS_XDB_REPOS.DELETERESOURCEMETADATA ( abspath IN VARCHAR2, metadatans IN VARCHAR2, metadataname IN VARCHAR2, delete_option IN pls_integer := DBMS_XDB_REPOS.DELETE_RESOURCE_METADATA_CASCADE);
Table 185-12 DELETERESOURCEMETADATA Procedure Parameters
Parameter | Description |
---|---|
|
Absolute path of the resource |
|
|
|
Namespace of the metadata fragment to be removed |
|
Local name of the metadata fragment to be removed |
|
Only applicable for schema-based metadata, this can be one of the following:
|
This function indicates if a resource is in the hierarchy. Matches resource by a string that represents its absolute path.
This function retrieves ACL document that protects resource given its path name.
This function retrieves the contents of a resource returned as a BLOB
.
DBMS_XDB_REPOS.GETCONTENTBLOB( abspath IN VARCHAR2, csid OUT PLS_INTEGER, locksrc IN BOOLEAN := FALSE) RETURN BLOB;
This function retrieves the contents of a resource returned as a a REF
to an XMLTYPE
.
This function retrieves the contents of a resource returned as an XMLTYPE
.
Given a path to a resource, this procedure returns that resource's lock token for the current user.
This function gets all privileges granted to the current user on a specified resource.
This procedure creates from a specified folder to a specified resource.
DBMS_XDB_REPOS.LINK( srcpath IN VARCHAR2, linkfolder IN VARCHAR2, linkname IN VARCHAR2);
DBMS_XDB_REPOS.LINK( srcpath IN VARCHAR2, linkfolder IN VARCHAR2, linkname IN VARCHAR2, linktype IN PLS_INTEGER := DBMS_XDB_REPOS.LINK_TYPE_HARD);
Table 185-28 LINK Procedure Parameters
Parameter | Description |
---|---|
|
Path name of the resource to which a link is created |
|
Folder in which the new link is placed |
|
Name of the new link |
|
Type of link to be created:
|
Given a path to a resource, this function gets a WebDAV-style lock on that resource.
DBMS_XDB_REPOS.LOCKRESOURCE( path IN VARCHAR2, depthzero IN BOOLEAN, shared IN boolean) RETURN BOOLEAN;
This procedure processes document links in the specified resource.
Table 185-30 PROCESSLINKS Procedure Parameters
Parameter | Description |
---|---|
|
Absolute path of the resource. If the path is a folder, use the |
|
Used only if |
This procedure deletes all user metadata from a resource. Schema-based metadata is removed in cascade mode, rows being deleted from the corresponding metadata tables.
This procedure renames the XDB resource.
DBMS_XDB_REPOS.RENAMERESOURCE( srcpath IN VARCHAR2, destfolder IN CARCHAR2, newname IN VARCHAR2);
This procedure sets the ACL on a specified resource to be the ACL specified by path.
This procedure splits the path into a parentpath and childpath.
DBMS_XDB_REPOS.SPLITPATH( abspath IN VARCHAR2, parentpath OUT VARCHAR2, childpath OUT VARCHAR2);
This procedure changes the modification time of the resource to the current time.
This function unlocks the resource given a lock token and a path to the resource.
This procedure updates metadata for a resource. The procedure takes in a resource identified by absolute path and the metadata in it to replace identified by its REF
. It replaces that piece of metadata with user-defined metadata which is either in the form of a REF
to XMLTYPE
or an XMLTYPE
.
Can be used to update schema-based metadata only. The new metadata must be schema-based:
DBMS_XDB_REPOS.UPDATERESOURCEMETADATA( abspath IN VARCHAR2, oldmetadata IN REF SYS.XMLTYPE, newmetadata IN REF SYS.XMLTYPE)
Can be used to update schema-based metadata only. The new metadata must be schema-based or nonschema-based:
DBMS_XDB_REPOS.UPDATERESOURCEMETADATA( abspath IN VARCHAR2, oldmetadata IN REF SYS.XMLTYPE, newmetadata IN XMLTYPE);
Can be used for both schema-based and nonschema-based metadata:
DBMS_XDB_REPOS.UPDATERESOURCEMETADATA( abspath IN VARCHAR2, oldns IN VARCHAR2, oldname IN VARCHAR, newmetadata IN XMLTYPE);
Can be used for both schema-based or nonschema-based metadata. New metadata must be schema-based:
DBMS_XDB_REPOS.UPDATERESOURCEMETADATA( abspath IN VARCHAR2, oldns IN VARCHAR2, oldname IN VARCHAR, newmetadata IN REF SYS.XMLTYPE);
Table 185-37 UPDATERESOURCEMETADATA Procedure Parameters
Parameter | Description |
---|---|
|
Absolute path of the resource |
|
|
|
|
|
Namespace identifying old metadata |
|
Local name identifying old metadata |