MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/rdbms/admin/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/rdbms/admin/dbmslcr.sql

Rem
Rem $Header: rdbms/admin/dbmslcr.sql /main/44 2015/08/19 11:54:50 raeburns Exp $
Rem
Rem dbmslcr.sql
Rem
Rem Copyright (c) 2001, 2015, Oracle and/or its affiliates. 
Rem All rights reserved.
Rem
Rem    NAME
Rem      dbmslcr.sql - Logical Change Record
Rem
Rem    DESCRIPTION
Rem      Has opaque type definitions for
Rem       - sys.lcr$_row_record
Rem       - sys.lcr$_ddl_record
Rem       - sys.lcr$_procedure_record
Rem
Rem    NOTES
Rem
Rem
Rem BEGIN SQL_FILE_METADATA
Rem SQL_SOURCE_FILE: rdbms/admin/dbmslcr.sql
Rem SQL_SHIPPED_FILE: rdbms/admin/dbmslcr.sql
Rem SQL_PHASE: DBMSLCR
Rem SQL_STARTUP_MODE: NORMAL
Rem SQL_IGNORABLE_ERRORS: NONE
Rem SQL_CALLING_FILE: rdbms/admin/dbmsstr.sql
Rem END SQL_FILE_METADATA
Rem
Rem    MODIFIED   (MM/DD/YY)
Rem    raeburns    05/31/15  - remove OR REPLACE for types with table dependents
Rem    surman      12/29/13  - 13922626: Update SQL metadata
Rem    surman      03/27/12  - 13615447: Add SQL patching tags
Rem    tianli      05/30/11  - remove dest_database_name
Rem    tianli      05/14/11  - change src_root_name to source_root_name
Rem    elu         05/25/11  - remove xml schema
Rem    tianli      03/24/11  - support PDB in xstream
Rem    elu         03/07/11  - add current_user
Rem    elu         01/25/10  - xmlschema and logon_user
Rem    juyuan      01/25/10  - get_object_id
Rem    xingjin     11/11/09  - add bind_by_pos in lcr$_row_record constructor
Rem    elu         10/05/09  - stmt LCR
Rem    rmao        04/08/09  - bug8418598: rename get_instance_number to
Rem                            get_thread_number
Rem    juyuan      02/24/09  - add get_commit_time
Rem    jinwu       02/25/09  - refactor handler code
Rem    jinwu       12/29/08  - add apply stmt handler
Rem    praghuna    12/20/08  - Add get_where_clause to lcr$_lcr_record
Rem    tianli      10/29/08  - Add edition to lcr$_ddl_record
Rem    elu         10/17/08  - remove commit pos
Rem    rihuang     08/18/08  - Add keep_columns to type lcr$_row_record
Rem    praghuna    06/16/08  - Added get_row_text methods
Rem    legao       06/02/08  - change get_instance_number return type
Rem    elu         03/31/08  - lcr id
Rem    thoang      03/18/08  - Add get_instance_number function 
Rem    jinwu       11/13/06  - restructure: move anonymous block to execstr.sql
Rem    bpwang      05/31/06  - add get/set_xml_flags 
Rem    elu         05/31/06  - add get/set_xml_flags 
Rem    liwong      06/09/04  - Add get_source_time 
Rem    liwong      02/21/04  - Fast column value evaluation 
Rem    lkaplan     06/04/03  - LONG to LOB
Rem    nshodhan    04/07/03  - add constructor for lcr$_row_unit
Rem    nshodhan    03/21/03  - modify lcr$_row_unit for longs.
Rem    nshodhan    03/11/03  - Expose LONG columns
Rem    liwong      01/20/03  - Support compatible
Rem    alakshmi    10/02/02  - grant privileges with grant option
Rem    liwong      07/22/02  - Extended attributes
Rem    alakshmi    06/19/02  - Add signature for get_commit_scn
Rem    alakshmi    04/29/02  - Bug 2346481: add use_old to get methods
Rem    rvenkate    01/28/02  - re-order parameters
Rem    liwong      01/25/02  - Suppress errors during eval ctx creation
Rem    alakshmi    02/04/02  - Lob API changes
Rem    liwong      12/18/01  - Support fast method eval
Rem    weiwang     12/10/01  - change reference to sys.re$variable_type
Rem    liwong      11/16/01  - Unify evaluation contexts
Rem    liwong      11/14/01  - Grant streams$_evaluation_context to PUBLIC
Rem    liwong      11/13/01  - Unifying evaluation contexts
Rem    alakshmi    11/08/01  - Merged alakshmi_apicleanup
Rem    lkaplan     10/29/01 -  API - dml hdlr, lcr.execute, set key options
Rem    liwong      10/31/01 - Hack evaluation context for partial rule
Rem                         - evaluation
Rem    elu         10/27/01 - modify eval ctx
Rem    alakshmi    10/29/01 - use clob for ddl_text
Rem    rvenkate    10/24/01 - remove is_present
Rem    alakshmi    10/24/01 - DEFAULT_USER => CURRENT_SCHEMA in ddl lcr
Rem    liwong      10/23/01 - API cleanup
Rem    lkaplan     10/14/01 - lcr.execute
Rem    alakshmi    10/13/01 - lcr API changes
Rem    elu         10/12/01 - add eval ctx
Rem    alakshmi    10/08/01 - Add redo_tag  APIs
Rem    rvenkate    10/01/01 - combine int/ext lcrs
Rem    alakshmi    10/05/01 - lcr interface changes
Rem    rvenkate    10/01/01 - combine int/ext lcrs
Rem    alakshmi    10/01/01 - get_publication=>is_null_redo_tag
Rem    rvenkate    09/12/01 - add map fn, remove rba, thread
Rem    alakshmi    09/12/01 - changes to object_type/command_type
Rem    rvenkate    09/12/01 - add map fn, remove rba, thread
Rem    rvenkate    08/30/01 - add internal lcr header struct
Rem    liwong      08/31/01 - Add streams$_evaluation_context
Rem    alakshmi    09/07/01 - change object_type to ub1 in XDLCR
Rem    arrajara    08/14/01 - Merged arrajara_external_ddl_lcr
Rem    arrajara    08/10/01 - Created
Rem

@@?/rdbms/admin/sqlsessstart.sql

CREATE OR REPLACE PACKAGE dbms_lcr AS

  -- Constants for LOBs
  not_a_lob          CONSTANT NUMBER := 1;
  null_lob           CONSTANT NUMBER := 2;
  inline_lob         CONSTANT NUMBER := 3;
  empty_lob          CONSTANT NUMBER := 4;
  lob_chunk          CONSTANT NUMBER := 5;
  last_lob_chunk     CONSTANT NUMBER := 6;

  -- Constants for LONGs
  not_a_long         CONSTANT NUMBER := 1;
  null_long          CONSTANT NUMBER := 2;
  inline_long        CONSTANT NUMBER := 3;
  long_chunk         CONSTANT NUMBER := 4;
  last_long_chunk    CONSTANT NUMBER := 5;

  -- Constants for XML
  not_xml            CONSTANT NUMBER := 1; 
  xml_doc            CONSTANT NUMBER := 2;
  xml_diff           CONSTANT NUMBER := 3;

END dbms_lcr;
/
show errors

CREATE OR REPLACE PUBLIC SYNONYM dbms_lcr FOR dbms_lcr
/

GRANT EXECUTE ON dbms_lcr TO PUBLIC
/

CREATE OR REPLACE LIBRARY lcr_row_lib TRUSTED IS STATIC;
/

CREATE TYPE lcr$_row_unit AS OBJECT (
  column_name        VARCHAR2(4000),
  data               SYS.ANYDATA,
  lob_information    NUMBER,
  lob_offset         NUMBER,
  lob_operation_size NUMBER,
  long_information   NUMBER,
  -- as we are adding a new attribute, create a constructor for
  -- older type def to preserve backwards compatibility.
  CONSTRUCTOR FUNCTION lcr$_row_unit(
    column_name        VARCHAR2,
    data               SYS.ANYDATA,
    lob_information    NUMBER,
    lob_offset         NUMBER,
    lob_operation_size NUMBER)
    RETURN SELF AS RESULT   
  );
/
CREATE OR REPLACE TYPE BODY lcr$_row_unit AS
  CONSTRUCTOR FUNCTION lcr$_row_unit(
    column_name        VARCHAR2,
    data               SYS.ANYDATA,
    lob_information    NUMBER,
    lob_offset         NUMBER,
    lob_operation_size NUMBER) 
    RETURN SELF AS RESULT 
  AS
  BEGIN
    SELF.column_name        := column_name;
    SELF.data               := data;
    SELF.lob_information    := lob_information;
    SELF.lob_offset         := lob_offset;
    SELF.lob_operation_size := lob_operation_size;
    SELF.long_information   := dbms_lcr.not_a_long;  
    RETURN;
  END;
END;
/

GRANT EXECUTE ON LCR$_ROW_UNIT TO PUBLIC WITH GRANT OPTION
/

CREATE TYPE lcr$_row_list AS TABLE OF sys.lcr$_row_unit;
/
GRANT EXECUTE ON LCR$_ROW_LIST TO PUBLIC WITH GRANT OPTION
/
CREATE TYPE lcr$_row_record OID '00000000000000000000000000020013'
AS OPAQUE VARYING (*)
USING LIBRARY lcr_row_lib
(
   -- Constructor
   STATIC FUNCTION construct(
     source_database_name       in varchar2,
     command_type               in varchar2,
     object_owner               in varchar2,
     object_name                in varchar2,
     tag                        in raw               DEFAULT NULL,
     transaction_id             in varchar2          DEFAULT NULL,
     scn                        in number            DEFAULT NULL,
     old_values                 in sys.lcr$_row_list DEFAULT NULL,
     new_values                 in sys.lcr$_row_list DEFAULT NULL,
     position                   in raw               DEFAULT NULL,
     statement                  in varchar2          DEFAULT NULL,
     bind_variables             in sys.lcr$_row_list DEFAULT NULL,
     bind_by_position           in varchar2          DEFAULT 'N',
     root_name                  in varchar2          DEFAULT NULL
   )  RETURN lcr$_row_record,

   MAP MEMBER FUNCTION map_lcr RETURN NUMBER,

   ---------------## Accessors for lcr$_row_record.source_database_name
   -- Returns the source database name
   MEMBER FUNCTION get_source_database_name RETURN varchar2,

   -- Sets the source database name
   MEMBER PROCEDURE set_source_database_name
   (self in out nocopy lcr$_row_record, source_database_name IN varchar2),

   --------------## Accessors for lcr$_row_record.command_type
   -- Returns the command type of the LCR
   MEMBER FUNCTION get_command_type RETURN VARCHAR2,

   -- Sets the command type
   MEMBER PROCEDURE set_command_type (self in out nocopy lcr$_row_record,
                                      command_type IN VARCHAR2),
   --------------## Accessors for lcr$_row_record.object_owner
   -- Sets the object owner
   MEMBER procedure set_object_owner
    (self in out nocopy lcr$_row_record, object_owner IN VARCHAR2),

   -- Returns the object owner
   MEMBER FUNCTION get_object_owner RETURN varchar2,

   --------------## Accessors for lcr$_row_record.object_name
   -- Returns the object name
   MEMBER FUNCTION get_object_name RETURN varchar2,

   -- Sets the object name
   MEMBER procedure set_object_name
    (self in out nocopy lcr$_row_record, object_name IN VARCHAR2),

   --------------## Accessors for the the column values
   -- This FUNCTION returns the old or new value for the corresponding column.
   -- value_type can only be 'OLD' or 'NEW'.
   -- If the value is NULL, then a sys.AnyData instance with a NULL
   -- value inside is returned. If no value for such a column exists, 
   -- NULL is returned.
   -- If use_old is 'Y' and value_type is NEW, and no new value exists then
   -- returns the corresponding old value. If N and value_type is new, then 
   -- does not return the old value if new value does not exist.
   -- If the value_type is old or if the command_type of the row LCR is not
   -- UPDATE, then the value of the use_old parameter is ignored.
   MEMBER FUNCTION get_value(
        value_type          IN VARCHAR2,
        column_name         IN VARCHAR2,
        use_old             IN VARCHAR2  DEFAULT 'Y') RETURN Sys.AnyData,

   -- Overwrites the old or new value for the specified column
   MEMBER procedure set_value(self in out nocopy lcr$_row_record,
        value_type          IN VARCHAR2,
        column_name         IN VARCHAR2,
        column_value        IN Sys.AnyData),

   -- Returns long information for the column. Could be one of the following
   --    dbms_lcr.not_a_long
   --    dbms_lcr.null_long
   --    dbms_lcr.inline_long
   --    dbms_lcr.long_chunk
   --    dbms_lcr.last_long_chunk
   -- If use_old is 'Y' and value_type is NEW, and no new value exists then
   -- returns the corresponding old value. If N and value_type is new, then 
   -- does not return the old value if new value does not exist.
   -- If the value_type is old or if the command_type of the row LCR is not
   -- UPDATE, then the value of the use_old parameter is ignored.
   MEMBER FUNCTION get_long_information(
        value_type          IN VARCHAR2,
        column_name         IN VARCHAR2,
        use_old             IN VARCHAR2  DEFAULT 'Y') RETURN NUMBER,

   -- Returns lob information for the column. Could be one of the following
   --    dbms_lcr.not_a_lob
   --    dbms_lcr.null_lob
   --    dbms_lcr.inline_lob
   --    dbms_lcr.empty_lob
   --    dbms_lcr.lob_chunk
   --    dbms_lcr.last_lob_chunk
   -- If use_old is 'Y' and value_type is NEW, and no new value exists then
   -- returns the corresponding old value. If N and value_type is new, then 
   -- does not return the old value if new value does not exist.
   -- If the value_type is old or if the command_type of the row LCR is not
   -- UPDATE, then the value of the use_old parameter is ignored.
   MEMBER FUNCTION get_lob_information(
        value_type          IN VARCHAR2,
        column_name         IN VARCHAR2,
        use_old             IN VARCHAR2  DEFAULT 'Y') RETURN NUMBER,

   -- Sets lob information for the column. An exception is raised if
   -- column doesn't exist. Valid values for lob_information
   --    dbms_lcr.not_a_lob
   --    dbms_lcr.null_lob
   --    dbms_lcr.inline_lob
   --    dbms_lcr.empty_lob
   --    dbms_lcr.lob_chunk
   --    dbms_lcr.last_lob_chunk
   MEMBER PROCEDURE set_lob_information(self in out nocopy lcr$_row_record,
        value_type          IN VARCHAR2,
        column_name         IN VARCHAR2,
        lob_information     IN NUMBER),

   -- Returns lob offset for the column. value_type can only be 'OLD' or 
   -- 'NEW'. If no value exists for the column
   -- or if there is no lob offset for the column, NULL is returned
   MEMBER FUNCTION get_lob_offset(
        value_type          IN VARCHAR2,
        column_name         IN VARCHAR2) RETURN NUMBER,

   -- Sets lob offset for the column. An exception is raised if
   -- column doesn't exist
   MEMBER PROCEDURE set_lob_offset(self in out nocopy lcr$_row_record,
        value_type          IN VARCHAR2,
        column_name         IN VARCHAR2,
        lob_offset          IN NUMBER),

   -- Returns operation size for the lob column. value_type can only be 
   -- 'OLD' or 'NEW'. If no value exists for the column
   -- or if this is not an out-of-line lob column 
   -- or if the LCR operation is not LOB_ERASE or LOB_TRIM, 
   -- NULL is returned
   MEMBER FUNCTION get_lob_operation_size(
        value_type          IN VARCHAR2,
        column_name         IN VARCHAR2) RETURN NUMBER,

   -- Sets the operation size for the lob column. An exception is raised if
   -- column doesn't exist.
   -- Applicable to lob_erase and lob_trim only
   MEMBER PROCEDURE set_lob_operation_size(self in out nocopy lcr$_row_record,
        value_type          IN VARCHAR2,
        column_name         IN VARCHAR2,
        lob_operation_size  IN NUMBER),

   -- Returns xml information for the column. Could be one of the following
   --    dbms_lcr.not_xml
   --    dbms_lcr.xml_doc
   --    dbms_lcr.xml_diff
   MEMBER FUNCTION get_xml_information(
        column_name         IN VARCHAR2) RETURN NUMBER,

   -- Sets xml information for the column. An exception is raised if
   -- column doesn't exist. Valid values for xml_flags
   --    dbms_lcr.not_xml
   --    dbms_lcr.xml_doc
   --    dbms_lcr.xml_diff
   -- The xmlschema owner and url can also be set.
   MEMBER PROCEDURE set_xml_information(self in out nocopy lcr$_row_record,
        column_name         IN VARCHAR2,
        xml_information     IN NUMBER),

   -- Returns a list of old or new values, depending on the value type
   -- specified
   -- If use_old is 'Y' and value_type is NEW, then returns a list of all
   -- new values in the LCR. If a new value does not exist in the list, then
   -- returns the corresponding old value. Therefore, the returned list 
   -- contains all existing new values and old values for the new values that
   -- do not exist. If N and value_type is new, then returns a list of all
   -- new values in the LCR without returning any old values.
   -- If the value_type is old or if the command_type of the row LCR is not
   -- UPDATE, then the value of the use_old parameter is ignored.
   MEMBER FUNCTION get_values(
        value_type          IN VARCHAR2,
        use_old             IN VARCHAR2  DEFAULT 'Y')
        return sys.lcr$_row_list,

   -- Replaces all the old values or all the new values for the LCR,
   -- depending on the value type specified
   MEMBER procedure set_values(self in out nocopy lcr$_row_record,
        value_type          IN VARCHAR2,
        value_list          IN sys.lcr$_row_list),

   -- Deletes the old or new values depending on the value type
   -- specified. An exception is raised if the column doesn't exist
   -- value_type is last in order to let default be useful
   MEMBER procedure delete_column(self in out nocopy lcr$_row_record,
       column_name    IN varchar2,
       value_type     IN varchar2 DEFAULT '*'),

   -- Keeps the old or new values depending on the value type
   -- specified. An exception is raised if the column list is NULL
   -- value_type is last in order to let default be useful
   MEMBER procedure keep_columns(self in out nocopy lcr$_row_record,
       column_list    IN varchar2,
       value_type     IN varchar2 DEFAULT '*'),

   -- Adds the value as old or new, depending on the value type
   -- specified, for the column
   MEMBER procedure add_column(self in out nocopy lcr$_row_record,
       value_type     IN varchar2,
       column_name    IN varchar2,
       column_value   IN Sys.AnyData),

   --  This procedure renames the old column, new column or
   --  both (default) depending on the value type specified
   -- value_type is last in order to let default be useful
   MEMBER procedure rename_column(self in out nocopy lcr$_row_record,
       from_column_name  IN varchar2,
       to_column_name    IN varchar2,
       value_type        IN varchar2  DEFAULT '*'),

   --------------## Accessors for lcr$_row_record.source_database_name
   -- This function returns the transaction ID of the LCR.
   MEMBER FUNCTION get_transaction_id       RETURN VARCHAR2,

   -- This function returns the system change NUMBER (SCN) of the LCR.
   MEMBER FUNCTION get_scn RETURN NUMBER,

   --------------------------------------------## Methods for tag
   -- This function sets the tag for the LCR
   MEMBER PROCEDURE set_tag(self in out nocopy lcr$_row_record,
       tag    IN RAW),

   -- This function gets the tag for the LCR
   MEMBER FUNCTION get_tag      RETURN RAW,

   -- This function returns 'Y' or 'N' depending on whether or not
   -- tag for the LCR is NULL
   MEMBER FUNCTION is_null_tag  RETURN VARCHAR2,

   -- This procedure constructs and applys the statement from the row lcr
   MEMBER procedure execute(self in lcr$_row_record,
                            conflict_resolution in boolean),
   -- This function returns the system change NUMBER (SCN) of the commit lcr
   -- for the transaction to which this lcr belongs.
   -- FOR INTERNAL USE ONLY
   MEMBER FUNCTION get_commit_scn RETURN NUMBER,

   -- This function returns the source time of the commit lcr
   -- for the transaction to which this lcr belongs to.
   MEMBER FUNCTION get_commit_time RETURN DATE,

   -- This FUNCTION returns the value for the corresponding optional attribute.
   -- If the value is NULL, then a sys.AnyData instance with a NULL
   -- value inside is returned. If no value for such an attribute exists, 
   -- NULL is returned.
   MEMBER FUNCTION get_extra_attribute(
        attribute_name         IN VARCHAR2) RETURN Sys.AnyData,

   -- Overwrites the attribute value for the specified attribute
   MEMBER procedure set_extra_attribute(self in out nocopy lcr$_row_record,
        attribute_name         IN VARCHAR2,
        attribute_value        IN Sys.AnyData),

   -- Returns the minimum compatible setting when such LCR is supported
   -- by Streams.
   MEMBER FUNCTION get_compatible RETURN NUMBER,

   -- Replaces LONG/LONG RAW chunks to fixed width CLOB/BLOB chunks
   -- in the given LCR.
   MEMBER PROCEDURE convert_long_to_lob_chunk(
     self in out nocopy lcr$_row_record),

   -- Returns the creation/redo generation time of the lcr
   MEMBER FUNCTION get_source_time RETURN DATE,

   -- Returns the thread number where the redo for the lcr was generated
   MEMBER FUNCTION get_thread_number RETURN NUMBER,

   -- Returns the position
   MEMBER FUNCTION get_position RETURN RAW,

   -- Return the LCR SCN from an XStream Out position.
   STATIC FUNCTION get_scn_from_position(position IN RAW) RETURN NUMBER,

   -- Return the commit SCN from an XStream Out position.
   STATIC FUNCTION get_commit_scn_from_position(position IN RAW) RETURN NUMBER,

   -- Returns the SQL statement in a CLOB.
   MEMBER PROCEDURE get_row_text
      (self     IN lcr$_row_record, 
       row_text IN OUT NOCOPY CLOB),
   
   -- Returns the WHERE CLAUSE in a CLOB.
   MEMBER PROCEDURE get_where_clause
      (self     IN lcr$_row_record, 
       where_clause IN OUT NOCOPY CLOB),

   -- Returns the SQL statement, which will use bind 
   -- variables. The values for the bind variables are 
   -- in variable_list, and are in order of the binds. 
   -- bind_var_syntax can have value ':' (binds will 
   -- be of form :1, :2, etc.) or '?' (binds will be
   -- of the form '?').
   MEMBER PROCEDURE get_row_text
      (self            IN            lcr$_row_record,
       row_text        IN OUT NOCOPY CLOB,
       variable_list   IN OUT NOCOPY sys.lcr$_row_list,
       bind_var_syntax IN            VARCHAR2 DEFAULT ':'),

   -- Returns the WHERE CLAUSE , which will use bind 
   -- variables. The values for the bind variables are 
   -- in variable_list, and are in order of the binds. 
   -- bind_var_syntax can have value ':' (binds will 
   -- be of form :1, :2, etc.) or '?' (binds will be
   -- of the form '?').
   MEMBER PROCEDURE get_where_clause
      (self            IN            lcr$_row_record,
       where_clause    IN OUT NOCOPY CLOB,
       variable_list   IN OUT NOCOPY sys.lcr$_row_list,
       bind_var_syntax IN            VARCHAR2 DEFAULT ':'),

   -- This function returns 'Y' or 'N' depending on whether or not
   -- the LCR is a statement LCR
   MEMBER FUNCTION is_statement_lcr  RETURN VARCHAR2,
 
   -- This procedure sets the SQL statment with bind variables.
  -- Use lcr$_row_unit.column_name for the bind variable name
  -- for bind by name.
  -- Specify the bind position in lcr$_row_unit.column_name for
  -- bind by position.
  MEMBER PROCEDURE set_row_text
    (self in out nocopy lcr$_row_record,
     row_text           IN CLOB,
     variable_list IN sys.lcr$_row_list DEFAULT NULL,
     bind_by_position   IN varchar2 DEFAULT 'N'),

   --
   -- get base object name of a row LCR
   --
   MEMBER FUNCTION get_base_object_id  RETURN NUMBER,

   MEMBER FUNCTION get_object_id  RETURN NUMBER,

   -- This procedure sets the source root name 
   MEMBER PROCEDURE set_root_name
    (self in out nocopy lcr$_row_record, root_name IN VARCHAR2),
   -- This FUNCTION returns the source root name 
   MEMBER FUNCTION get_root_name RETURN varchar2
)
/

show errors
GRANT EXECUTE ON LCR$_ROW_RECORD TO PUBLIC WITH GRANT OPTION
/

-------------------------------------------------------------------------
-- External DDL LCR : lcr$_ddl_record
-------------------------------------------------------------------------
CREATE OR REPLACE LIBRARY lcr_ddl_lib TRUSTED IS STATIC;
/
CREATE TYPE lcr$_ddl_record OID '00000000000000000000000000020014'
AS OPAQUE VARYING (*)
USING LIBRARY lcr_ddl_lib
(
   -- Constructor
   STATIC FUNCTION construct(
     source_database_name       in varchar2,
     command_type               in varchar2,
     object_owner               in varchar2,
     object_name                in varchar2,
     object_type                in varchar2,
     ddl_text                   in clob,
     logon_user                 in varchar2,
     current_schema             in varchar2,
     base_table_owner           in varchar2,
     base_table_name            in varchar2,
     tag                        in raw               DEFAULT NULL,
     transaction_id             in varchar2          DEFAULT NULL,
     scn                        in number            DEFAULT NULL,
     position                   in raw               DEFAULT NULL,
     edition_name               in varchar2          DEFAULT NULL,
     current_user               in varchar2          DEFAULT NULL,
     root_name                  in varchar2          DEFAULT NULL
   )
   RETURN lcr$_ddl_record,

   MAP MEMBER FUNCTION map_lcr RETURN NUMBER,

   ---------------## Accessors for lcr$_ddl_record.source_database_name
   -- This function returns the source database name. If there is
   -- no source database name, NULL is returned.
   MEMBER FUNCTION get_source_database_name RETURN varchar2,

   -- Sets the name of the source database
   MEMBER PROCEDURE set_source_database_name
   (self in out nocopy lcr$_ddl_record,
    source_database_name IN varchar2),

   --------------## Accessors for lcr$_ddl_record.command_type
   -- This FUNCTION returns command type.
   MEMBER FUNCTION get_command_type RETURN varchar2,

   -- This procedure sets command type. If an input command_type
   -- does not make sense, an exception will be raised. For example,
   -- changing INSERT to GRANT.
   MEMBER PROCEDURE set_command_type (self in out nocopy lcr$_ddl_record,
                                      command_type IN varchar2),
   --------------## Accessors for lcr$_ddl_record.object_owner
   -- This FUNCTION returns the owner of the object.
   MEMBER FUNCTION get_object_owner RETURN varchar2,

   -- This procedure sets the owner of the object.
   MEMBER PROCEDURE set_object_owner
    (self in out nocopy lcr$_ddl_record, object_owner IN VARCHAR2),

   --------------## Accessors for lcr$_ddl_record.object_name
   -- This FUNCTION returns the name of the object.
   MEMBER FUNCTION get_object_name RETURN varchar2,

   -- This procedure sets the name of the object.
   MEMBER PROCEDURE set_object_name
    (self in out nocopy lcr$_ddl_record, object_name IN VARCHAR2),

   --------------## Accessors for lcr$_ddl_record.transaction_id
   -- This function returns the transaction ID of the LCR.
   MEMBER FUNCTION get_transaction_id       RETURN VARCHAR2,

   -- This function returns the system change NUMBER (SCN) of the LCR.
   MEMBER FUNCTION get_scn RETURN NUMBER,

   --------------## Accessors for lcr$_ddl_record.object_type
   -- This FUNCTION returns the type of the object.
   MEMBER FUNCTION get_object_type RETURN varchar2,

   -- This procedure sets the type of the object.
   MEMBER PROCEDURE set_object_type
    (self in out nocopy lcr$_ddl_record, object_type IN VARCHAR2),

   --------------## Accessors for lcr$_ddl_record.logon_user
   -- This FUNCTION returns the logon user name
   MEMBER FUNCTION get_logon_user RETURN varchar2,

   -- This procedure sets the logon user name
   MEMBER PROCEDURE set_logon_user
    (self in out nocopy lcr$_ddl_record, logon_user IN VARCHAR2),

   --------------## Accessors for lcr$_ddl_record.current_schema
   -- This FUNCTION returns the current schema
   MEMBER FUNCTION get_current_schema RETURN varchar2,

   -- This procedure sets the current schema
   MEMBER PROCEDURE set_current_schema
    (self in out nocopy lcr$_ddl_record, current_schema IN VARCHAR2),

   --------------## Accessors for lcr$_ddl_record.base_table_owner
   -- This FUNCTION returns the base owner name
   MEMBER FUNCTION get_base_table_owner RETURN varchar2,

   -- This procedure sets the base owner name
   MEMBER PROCEDURE set_base_table_owner
    (self in out nocopy lcr$_ddl_record, base_table_owner IN VARCHAR2),

   --------------## Accessors for lcr$_ddl_record.base_table_name
   -- This FUNCTION returns the base table name
   MEMBER FUNCTION get_base_table_name RETURN varchar2,

   -- This procedure sets the base table name
   MEMBER PROCEDURE set_base_table_name
    (self in out nocopy lcr$_ddl_record, base_table_name IN VARCHAR2),

   --------------## Accessors for lcr$_ddl_record.ddl_text
   -- This FUNCTION returns ddl text
   MEMBER PROCEDURE get_ddl_text 
    (self in lcr$_ddl_record, ddl_text IN OUT NOCOPY CLOB),

   -- This procedure sets ddl text
   MEMBER PROCEDURE set_ddl_text
    (self in out nocopy lcr$_ddl_record, ddl_text IN CLOB),

   --------------------------------------------## Methods for tag
   -- This function sets the tag for the LCR
   MEMBER PROCEDURE set_tag(self in out nocopy lcr$_ddl_record,
       tag    IN RAW),

   -- This function gets the tag for the LCR
   MEMBER FUNCTION get_tag      RETURN RAW,

   -- This function returns 'Y' or 'N' depending on whether or not
   -- tag for the LCR is NULL
   MEMBER FUNCTION is_null_tag  RETURN VARCHAR2,

   -- This procedure constructs and applys the statement from the ddl lcr
   MEMBER procedure execute(self in lcr$_ddl_record),

   -- This function returns the system change NUMBER (SCN) of the commit lcr
   -- for the transaction to which this lcr belongs.
   -- FOR INTERNAL USE ONLY
   MEMBER FUNCTION get_commit_scn RETURN NUMBER,

   -- This function returns the source time of the commit lcr
   -- for the transaction to which this lcr belongs to.
   MEMBER FUNCTION get_commit_time RETURN DATE,

   --------------## Accessors for the the optional attributes
   -- This FUNCTION returns the value for the corresponding optional attribute.
   -- If the value is NULL, then a sys.AnyData instance with a NULL
   -- value inside is returned. If no value for such an attribute exists, 
   -- NULL is returned.
   MEMBER FUNCTION get_extra_attribute(
        attribute_name         IN VARCHAR2) RETURN Sys.AnyData,

   -- Overwrites the attribute value for the specified attribute
   -- If value is NULL, the existing attribute will be removed.
   MEMBER procedure set_extra_attribute(self in out nocopy lcr$_ddl_record,
        attribute_name         IN VARCHAR2,
        attribute_value        IN Sys.AnyData),

   -- Returns the minimum compatible setting when such LCR is supported
   -- by Streams.
   MEMBER FUNCTION get_compatible RETURN NUMBER,

   -- Returns the creation/redo generation time of the lcr
   MEMBER FUNCTION get_source_time RETURN DATE,

   -- Returns the thread number where the redo for the lcr was generated
   MEMBER FUNCTION get_thread_number RETURN NUMBER,

   -- Returns the position
   MEMBER FUNCTION get_position RETURN RAW,

   -- Return the LCR SCN from an XStream Out position.
   STATIC FUNCTION get_scn_from_position(position IN RAW) RETURN NUMBER,

   -- Return the commit SCN from an XStream Out position.
   STATIC FUNCTION get_commit_scn_from_position(position IN RAW) RETURN NUMBER,

   -- Returns the edition_name
   MEMBER FUNCTION get_edition_name RETURN varchar2,

   -- Sets the edition_name
   MEMBER PROCEDURE set_edition_name
    (self in out nocopy lcr$_ddl_record, edition_name IN VARCHAR2),

   --------------## Accessors for lcr$_ddl_record.current_user
   -- This FUNCTION returns the current user
   MEMBER FUNCTION get_current_user RETURN varchar2,

   -- This procedure sets the current_user
   MEMBER PROCEDURE set_current_user
    (self in out nocopy lcr$_ddl_record, current_user IN VARCHAR2),

   -- This procedure sets the source root name 
   MEMBER PROCEDURE set_root_name
    (self in out nocopy lcr$_ddl_record, root_name IN VARCHAR2),
   -- This FUNCTION returns the source root name 
   MEMBER FUNCTION get_root_name RETURN varchar2

)
/
show errors

GRANT EXECUTE ON LCR$_DDL_RECORD TO PUBLIC WITH GRANT OPTION
/

@?/rdbms/admin/sqlsessend.sql

OHA YOOOO