Plsqlap_Record_API Overview¶
NOTE: This package is obsolete and has been deprecated. The new package, Plsqlap_Document_API, should be used instead. The Plsqlap_Record_API package will be remained "as is" but will not be maintained any more, which means that possible future problems related to this package should be solved by re-writing code to use the new, Plsqlap_Document_API package.
The Plsqlap_Record_API package is used to create and manipulate records. Records are the dynamic data structures underlying the object views used in Extended Server. This package has no access to meta data. It is the responsibility of the applications using the package to create the records according to the meta data definitions. Any discrepancy from the meta data definition will result in runtime errors.
Record handling¶
New_record will reserve space in a temporary tablespace, and code which calls New_record without calling Clear_Record will cause superfluous resource consumption. To enable server reliability and stability, Clear_Record must be called when finished processing a record.
Some Plsqlap_Server_API Invoke/Post methods will implicitly call Clear_Record. Please check the "Record Handling" guidelines for respective Plsqlap_Server_API method.
Data Types and Constants¶
| Type List | Global constant variable list |
Methods¶
Method | Description |
---|---|
Procedure Add_Aggregate | Add a record to a record attribute of type aggregate |
Procedure Add_Array | Add a record to a record attribute of type array. |
Function Check_Elements (Record, Name) | Checks if attribute with given name exists in record. |
Procedure Clear_Dirty (Record) | Changes the record attribute dirty flag to False on all attributes and changes the record state to Queried_Record |
Procedure Clear_Dirty (Record, Name) | Changes the record attribute dirty flag to False. |
ProcedureClear_Record | Clear a record. The complete record is removed from memory. |
Function Count_Attributes | Returns number of attributes in a record. |
Function Count_Elements | Returns number of elements in a record attribute of type array. |
Procedure Debug | Prints the buffer representation of a record |
Procedure Debug_Item_Record | Prints an item record |
Procedure Debug_Record | Prints a record |
Function From_XML | Deserialize record from an XML document. |
Function Get_Attribute (Record, Position) | Returns a record attribute by position. |
Function Get_Attribute (Record, Name) | Returns a record attribute by name. |
Function Get_Binary_Value | Returns a record attribute value as BLOB. |
Function Get_Blob_Value (Record, Name) | Returns a record attribute value as BLOB. |
Function Get_Clob_Value | Returns a record attribute value as CLOB. |
Function Get_Domain | Returns domain value from a Reference or Key attribute. |
Function Get_Element | Returns a record element from an array of attributes by element position. |
Function Get_Item_Value (Record, Name) | Returns a record attribute value, but ignores exception. |
Function Get_Long_Text_Value (Record, Name) | Returns a record attribute value as CLOB. |
Function Get_Name (Record) | Returns a record name. |
Function Get_Name | Returns a record attribute name. |
Function Get_Next_Element | Returns next record element from an array of attributes. |
Function Get_Record_Attr (Record) | Converts a record to attribute string. |
Function Get_Status (Record) | Returns the record state. |
Function Get_Status | Returns a record attribute state. (See Is_Dirty) |
Function Get_Type (Record) | Returns a record type. |
Function Get_Type | Returns a record attribute type. |
Function Get_Value | Returns a record attribute value as VARCHAR2. |
Function Is_Dirty (Record, Name) | Returns True if record attribute is dirty otherwise False. |
Procedure Make_Dirty (Record, Name) | Changes a record attribute state to dirty (Modified). |
Function New_Record(Name, Status) | Creates a Record |
Procedure Set_Blob_Value | Set a value on a record attribute. |
Procedure Set_Clob_Value | Set a value on a record attribute. Same as Set_Value with CLOB. |
Procedure Set_Domain (Record) | Set the domain value on every key-attribute and every not-null reference-attribute in the record. |
Procedure Set_Domain (Record, Name) | Set the domain value on a record key- or reference-attribute. |
Procedure Set_New (Record) | Set the record state to New_Record |
Procedure Set_Queried (Record) | Set the record state to Querid_Record |
Procedure Set_Removed (Record) | Set the record state to Removed_Record |
Procedure Set_Value | Set a value on a record attribute |
Function To_XML | Serialize a record to XML document (up to 32 kB) |
Procedure To_Xml | Serialize a record to XML document |
Example¶
PROCEDURE Send_Application_Message_rec (
sender_ VARCHAR2,
message_type_ VARCHAR2,
address_data_ VARCHAR2,
sent_ VARCHAR2) IS
AM Plsqlap_Record_API.type_record_;
AL Plsqlap_Record_API.type_record_;
AL1 Plsqlap_Record_API.type_record_;
AL2 Plsqlap_Record_API.type_record_;
AL4 Plsqlap_Record_API.type_record_;
TB Plsqlap_Record_API.type_record_;
Domain_ Plsqlap_Record_API.type_buffer_;
cnt_ NUMBER;
sent_date_ DATE;
BEGIN
AM := Plsqlap_Record_API.New_record('APPLICATION_MESSAGE');
AL := Plsqlap_Record_API.New_record('ADDRESS_LABEL');
AL1 := Plsqlap_Record_API.New_record('ADDRESS_LABEL');
AL2 := Plsqlap_Record_API.New_record('ADDRESS_LABEL');
TB := Plsqlap_Record_API.New_record('TEXT_BODY');
Plsqlap_Record_API.Set_Value(AM,'APPLICATION_MESSAGE_ID','100',Plsqlap_Record_API.dt_Text_Key,FALSE);
Plsqlap_Record_API.Set_Value(AM,'SENDER',sender_,Plsqlap_Record_API.dt_Text);
Plsqlap_Record_API.Set_Value(AM,'MESSAGE_TYPE',message_type_,Plsqlap_Record_API.dt_Text);
Plsqlap_Record_API.Set_Value(AL,'TRANSPORT_CONNECTOR','Mail',Plsqlap_Record_API.dt_Text);
Plsqlap_Record_API.Set_Value(AL,'ADDRESS_DATA',address_data_,type_ => Plsqlap_Record_API.dt_Text);
Plsqlap_Record_API.Set_Value(AL,'SENT',sent_,Plsqlap_Record_API.dt_Date);
Plsqlap_Record_API.Set_Value(AL1,'TRANSPORT_CONNECTOR','Mail',Plsqlap_Record_API.dt_Text);
Plsqlap_Record_API.Set_Value(AL1,'ADDRESS_DATA','Olle',type_ => Plsqlap_Record_API.dt_Text);
Plsqlap_Record_API.Set_Value(AL1,'SENT',sent_,Plsqlap_Record_API.dt_Date);
Plsqlap_Record_API.Set_Value(TB,'TEXT_VALUE','This is the message body',Plsqlap_Record_API.dt_Long_Text);
Plsqlap_Record_API.Add_Array(AM,'ADDRESS_LABEL_LIST',AL);
Plsqlap_Record_API.Add_Array(AM,'ADDRESS_LABEL_LIST',AL1);
Plsqlap_Record_API.Add_Aggregate(AM,'TEXT_BODY',TB);
Plsqlap_Server_API.Invoke_Record_Impersonate('Utility_Application_Messaging','Route_Message',AM);
-----------------
-- STATISTICS: --
-----------------
-- See the contents of the whole record
Plsqlap_Record_API.Debug(AM);
-- Count_Attributes(Record)
dbms_output.put_line(to_char(Plsqlap_Record_API.Count_Attributes(AM)));
-- Count_Elements(Record,Element)
dbms_output.put_line(to_char(Plsqlap_Record_API.Count_Elements(AM,'ADDRESS_LABEL_LIST')));
dbms_output.put_line(to_char(Plsqlap_Record_API.Count_Elements(AM,'TEXT_BODY')));
-- Get_Status(Record)
dbms_output.put_line(Plsqlap_Record_API.Get_Status(AM));
-- Get_Status(Record,Attribute)
dbms_output.put_line(nvl(Plsqlap_Record_API.Get_Status(AM,'APPLICATION_MESSAGE_ID'),'Queried'));
-- Get_Domain (Record,Attribute)
dbms_output.put_line(Plsqlap_Record_API.Get_Domain(AM,'APPLICATION_MESSAGE_ID'));
-- Get_Type(Record,Attribute)
dbms_output.put_line(Plsqlap_Record_API.Get_Type(AM,'APPLICATION_MESSAGE_ID'));
-- Get_Type(Record,Element)
AL2 := Plsqlap_Record_API.Get_Element(AM,'ADDRESS_LABEL_LIST',2);
dbms_output.put_line(Plsqlap_Record_API.Get_Type(AL2,'SENT'));
-- Get_Value(Record,Element)
sent_date_ := to_date(Plsqlap_Record_API.Get_Value(AL2,'SENT'),'yyyy-mm-dd-hh24:mi:ss');
dbms_output.put_line(to_char(sent_date_,'yyyy-mm-dd-hh24:mi:ss');
-- Get_Status(Record,Element)
dbms_output.put_line(Plsqlap_Record_API.Get_Status(AL2,'SENT'));
-- Clear_Dirty(Record)
Plsqlap_Record_API.Clear_Dirty(AM);
-- Change Value
AL4 := Plsqlap_Record_API.Get_Element(AM,'ADDRESS_LABEL_LIST',4);
Plsqlap_Record_API.Set_Value(AL4,'ADDRESS_DATA','New_Addressee',Plsqlap_Record_API.dt_Text);
-- Plsqlap_Record_API.Add_Array(AM,'ADDRESS_LABEL_LIST',AL4);
-- NOT ALLOWED, already exists!
-- Invoke Record and Debug for instance...
Plsqlap_Server_API.Invoke_Record_Impersonate('Utility_Application_Messaging','Route_Message',AM);
Plsqlap_Record_API.Debug(AM);
Plsqlap_Record_API.Clear_Record(AM);
END Send_Application_Message_rec;