298 SODA Types
This chapter describes the SODA types SODA_DOCUMENT_T and SODA_COLLECTION_T. These are the object types to work with SODA to perform various operations with documents and collections. The SODA types are not persistable.
This chapter contains the following topics:
298.1 SODA Types Overview
There are two SODA types; SODA_DOCUMENT_T and SODA_COLLECTION_T. These SODA types represent the two primary abstractions provided by SODA: documents and collections.
298.2 SODA Types Security Model
The SODA Types are available to users with the SODA_APP role.
All SODA types are SYS types. PUBLIC is granted EXECUTE privilege on the SODA types described in this chapter:
-
TYPE
SODA_Collection_T -
TYPE
SODA_Document_T
298.3 Summary of SODA Types
This chapter lists the SODA types and describes them.
Table 298-1 SODA Types
| Type | Description |
|---|---|
|
This |
|
|
This |
298.3.1 SODA_Collection_T Type
This SODA type represents a SODA collection. A reference of SODA collection can only be obtained by either calling DBMS_SODA.CREATE_COLLECTION() or DBMS_SODA.OPEN_COLLECTION().
Table 298-2 SODA_Collection_T Type Subprograms
| Subprogram | Description |
|---|---|
|
Fetches the document matching the key. |
|
|
Returns the metadata of the collection in |
|
|
Returns the name of the collection. |
|
|
Inserts a document into the collection. |
|
|
Inserts a document into the collection and returns a result document with all components except for content. |
|
|
Removes the document matching the key. |
|
|
Replaces the content and (optionally) the media type of the document matching the key. |
|
|
Replaces the content and (optionally) the media type of the document matching the key and returns a result document with all components (except content). |
298.3.1.1 FIND_ONE Function
This function fetches the document matching the given key.
Syntax
FIND_ONE (
key IN VARCHAR2)
RETURN SODA_Document_T;
Parameters
Table 298-3 FIND_ONE Function Parameters
| Parameter | Description |
|---|---|
|
|
The key of the document to be fetched. |
Return Values
This function returns the document that matches the key. Returns NULL if no match is found.
Exceptions
Error—If an error occurs while finding the document.
298.3.1.2 GET_METADATA Function
This function returns the metadata of the collection in JSON format.
Syntax
GET_METADATA () RETURN VARCHAR2;
Return Values
This function returns the metadata of the collection in JSON format.
298.3.1.3 GET_NAME Function
This function returns the name of the collection.
Syntax
GET_NAME () RETURN NVARCHAR2;
Return Values
This function returns the name of the collection.
298.3.1.4 INSERT_ONE Function
This function inserts a document into the collection.
Syntax
INSERT_ONE (
document IN SODA_Document_T)
RETURN NUMBER;
Parameters
Table 298-4 INSERT_ONE Function Parameters
| Parameter | Description |
|---|---|
|
|
The input document. |
Return Values
The function returns a number–1 if the doc was inserted successfully, 0 otherwise.
Exceptions
Error—If an error occurs while inserting the document into the collection.
298.3.1.5 INSERT_ONE_AND_GET Function
This function inserts a document into the collection.
Syntax
INSERT_ONE_AND_GET (
document IN SODA_Document_T)
RETURN SODA_Document_T;
Parameters
Table 298-5 INSERT_ONE_AND_GET Function Parameters
| Parameter | Description |
|---|---|
|
|
The input document. |
Return Values
The function returns the result document containing all document components supported by the given collection, with the exception of content.
Exceptions
Error—If an error occurs while inserting the document into the collection.
298.3.1.6 REMOVE_ONE Function
This function removes the document matching the given key.
Syntax
REMOVE_ONE (
key IN VARCHAR2)
RETURN NUMBER;
Parameters
Table 298-6 REMOVE_ONE Function Parameters
| Parameter | Description |
|---|---|
|
|
The key of the document. |
Return Values
This function returns the following values:
-
1–If the document was successfully removed. -
0–If the document with the specified key was not found.
Exceptions
Error—If an error occurs while deleting the document from the collection.
298.3.1.7 REPLACE_ONE Function
This function updates the existing document with a new content and (optionally) media type using the key. Any components set in document with the exception of content and media type are not used during the replace. They are ignored.
Syntax
REPLACE_ONE (
key IN VARCHAR2,
document IN SODA_Document_T)
RETURN NUMBER;
Parameters
Table 298-7 REPLACE_ONE Parameters
| Parameter | Description |
|---|---|
|
|
The key of the document. |
|
|
The document with the new content and (optionally) media type to replace the old one. |
Return Values
This function returns a number—1 if the document was replace, 0 otherwise.
Exceptions
Error—If an error occurs while replacing the document in the collection.
298.3.1.8 REPLACE_ONE_AND_GET Function
This function updates the existing document with a new content and (optionally) media type using the key. Any components set in document with the exception of content and media type are not used during the replace. They are ignored.
Syntax
REPLACE_ONE_AND_GET (
key IN VARCHAR2,
document IN SODA_Document_T)
RETURN SODA_Document_T;
Parameters
Table 298-8 REPLACE_ONE_AND_GET Function Parameters
| Parameter | Description |
|---|---|
|
|
The key of the document. |
|
|
The document with the new content and (optionally) media type to replace the old one. |
Return Values
The function returns the result document containing all document components supported by the given collection, with the exception of content. Last-modified and version components, if supported by the given collection, will be updated with new values. If no document in the collection had the supplied key, NULL is returned instead of the result document.
Exceptions
Error—If an error occurs while replacing the document in the collection.
298.3.2 SODA_Document_T Type
This SODA type represents a document with content, that is usually in JSON format.
This type is not persistable pl/sql type. However, SODA is a system that basically provides persistence — it has read and write operations. So you do not persist SODA_DOCUMENT_T directly, but you pass it to a write operation (like insert or replace), which is defined on SODA_COLLECTION_T, in order to write the document content and other components to the database.
A document has the following components:
-
key
-
content
-
created-on timestamp
-
last-modified timestamp
-
version
-
media type
Table 298-9 SODA_Document_T Type Subprograms
| Subprogram | Description |
|---|---|
|
Fetches the BLOB content of a |
|
|
Fetches the |
|
|
Fetches the created-on timestamp in |
|
|
Fetches the SQL datatype of the document content with which it was created. |
|
|
Fetches the document key in |
|
|
Fetches the last modified timestamp in |
|
|
Fetches the media type of the document content in |
|
|
Fetches the |
|
|
Fetches the version of the document in |
|
|
There are three different |
298.3.2.1 GET_BLOB Function
This functions fetches the BLOB content of the document. It assumes that the document was constructed with BLOB content, or was returned from a collection with BLOB content. Otherwise, an error is returned.
Syntax
GET_BLOB () RETURN BLOB;
Return Values
This function returns the BLOB content of a document.
Exceptions
SODA Error: If the document was initially not created with BLOB content.
298.3.2.2 GET_CLOB Function
The function fetches CLOB content of the document. It assumes that the document was constructed with CLOB content, or was returned from a collection with CLOB content. Otherwise, an error is returned.
Syntax
GET_CLOB () RETURN CLOB;
Return Values
This function returns the CLOB content of a document.
Exceptions
SODA Error: If the document was initially not created with CLOB content.
298.3.2.3 GET_CREATED_ON Function
This function fetches the created-on timestamp. The timestamp string is in ISO-8601 format, in particular this form: YYYY-MM-DDThh:mm:ss.ssssssZ format. As indicated by the Z at the end, timestamps are returned in UTC (Z indicates zero UTC offset).
Syntax
GET_CREATED_ON () RETURN VARCHAR2;
Return Values
This function returns the created-on timestamp.
298.3.2.4 GET_DATA_TYPE Function
This function fetches the SQL datatype of the document content with which it was created.
Syntax
GET_DATA_TYPE () RETURN PLS_INTEGER;
Return Values
Table 298-10 GET_DATA_TYPE Return Values
| Constant | Value | Description |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
298.3.2.5 GET_KEY Function
This function fetches the document key.
Syntax
GET_KEY () RETURN VARCHAR2;
Return Values
This function returns the document key.
298.3.2.6 GET_LAST_MODIFIED Function
This function fetches the last modified timestamp. The timestamp string is in ISO-8601 format, in particular this form: YYYY-MM-DDThh:mm:ss.ssssssZ format. As indicated by the Z at the end, timestamps are returned in UTC (Z indicates zero UTC offset).
Syntax
GET_LAST_MODIFIED () RETURN VARCHAR2;
Return Values
This function returns the last modified timestamp.
298.3.2.7 GET_MEDIA_TYPE Function
This function fetches the media type of the document content.
Syntax
GET_MEDIA_TYPE () RETURN VARCHAR2;
Return Values
This function returns the media type of the document content. application/JSON is the media type for JSON documents (default).
298.3.2.8 GET_VARCHAR2 Function
This function fetches the VARCHAR2 content of the document. It assumes that the document was constructed with VARCHAR2 content, or was returned from a collection with VARCHAR2 content. Otherwise, an error is returned.
Syntax
GET_VARCHAR2 () RETURN VARCHAR2;
Return Values
This function returns the VARCHAR2 content of a document.
Exceptions
SODA Error: If the document was initially not created with VARCHAR2 content.
298.3.2.9 GET_VERSION Function
This function fetches the version of the document.
Syntax
GET_VERSION () RETURN VARCHAR2;
Return Values
This function returns the version of the document.
298.3.2.10 SODA_Document_T Function
This function instantiates a document object using key, content, and media type. There are three different SODA_DOCUMENT_T constructor functions. The second parameter (<v|b|c>_Content) is different in each constructor. It is VARCHAR2 in the first variant, BLOB in the second, and CLOB in the third.
Syntax
Key and media type are optional parameters (will be defaulted to NULL). All three parameters can be set to NULL. If media_Type is set to NULL, it will be defaulted to application/json.
SODA_DOCUMENT_T (
key IN VARCHAR2 DEFAULT NULL,
v_Content IN VARCHAR2,
media_Type IN VARCHAR2 DEFAULT NULL)
RETURN SODA_Document_T;
SODA_DOCUMENT_T (
key IN VARCHAR2 DEFAULT NULL,
b_Content IN BLOB,
media_Type IN VARCHAR2 DEFAULT NULL)
RETURN SODA_Document_T;
SODA_DOCUMENT_T (
key IN VARCHAR2 DEFAULT NULL,
c_Content IN CLOB,
media_Type IN VARCHAR2 DEFAULT NULL)
RETURN SODA_Document_T;
Parameters
Table 298-11 SODA_Document_T Parameters
| Parameter | Description |
|---|---|
|
|
The key of the document. |
|
|
The content of the document in |
|
|
The content of the document in |
|
|
The content of the document in |
|
|
The media type of the document. The media type could be |
Note:
v_Content, b_Content, and c_Content are not all parameters of a single SODA_DOCUMENT_T constructor function. Each one corresponds to a particular variant of the constructor function as shown in the Syntax section.
Return Values
This function returns a document of type SODA_Document_T.