MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/mgw/admin/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/mgw/admin/mgwtype.sql

Rem
Rem $Header: mgwtype.sql 19-may-2004.11:48:01 chall Exp $
Rem
Rem mgwtype.sql
Rem
Rem Copyright (c) 2002, Oracle Corporation.  All rights reserved.  
Rem
Rem  NAME
Rem    mgwtype.sql - MGW public type specifications
Rem
Rem  DESCRIPTION
Rem    Specifications for public types used for Messaging Gateway.
Rem    The privileges to be granted depend on how each type is used.
Rem
Rem  NOTES
Rem    This script should be AS SYSDBA.
Rem
Rem    Object type ids (TOID) for MGW range 0x00021080..0x000210cf.
Rem    Currently this script uses: 00021080..0002108e
Rem
Rem  MODIFIED   (MM/DD/YY)
Rem  chall       05/19/04 - MSMQ support 
Rem  chall       12/16/03 - remove obsolete (commented out) MSMQ code 
Rem  chall       12/15/03 - add OID clause to object types (bug 3316719) 
Rem  chall       11/05/02 - chall_bug-2606429
Rem  chall       11/05/02 - Created
Rem
Rem ==========================================================================

--
-- mgw_property
--
-- Type used to specify property information in a simple name-value pair
-- fashion where the name and value are strings.
-- 
-- --- 10gR2 (10.2.0.0.0) Changes ---
-- Increased size of name from 100 to 500.
-- Increased size of value from 1000 to 4000.
--

CREATE OR REPLACE TYPE sys.mgw_property 
OID '00000000000000000000000000021080'
AS OBJECT
(
  name     VARCHAR2(500),
  value    VARCHAR2(4000),

  -- === Methods ===

  STATIC FUNCTION construct
  RETURN sys.mgw_property,

  STATIC FUNCTION construct( 
    p_name  IN VARCHAR2,
    p_value IN VARCHAR2 )
  RETURN sys.mgw_property
);
/

--
-- mgw_properties
--
-- Array of properties.
--
-- --- 10gR2 (10.2.0.0.0) Changes ---
-- Increased limit from 100 to 2000.
--
CREATE OR REPLACE TYPE sys.mgw_properties 
OID '00000000000000000000000000021081'
AS VARRAY(2000) OF sys.mgw_property;
/

--
-- mgw_mqseries_properties
--
-- Basic properties for link to MQSeries messaging system.
--
CREATE OR REPLACE TYPE sys.mgw_mqseries_properties
OID '00000000000000000000000000021082'
AS OBJECT
(
  queue_manager         VARCHAR2(64),
  hostname              VARCHAR2(64),
  port                  INTEGER,
  channel               VARCHAR2(64),
  interface_type        INTEGER,
  max_connections       INTEGER,
  username              VARCHAR2(64),
  password              VARCHAR2(64),
  inbound_log_queue     VARCHAR2(64),
  outbound_log_queue    VARCHAR2(64),

  -- === Methods ===

  STATIC FUNCTION construct
  RETURN sys.mgw_mqseries_properties, 

  STATIC FUNCTION alter_construct
  RETURN sys.mgw_mqseries_properties
);
/

--
-- mgw_tibrv_properties
--
-- Basic properties for link to TIBCO/RV messaging system.
--
CREATE OR REPLACE TYPE sys.mgw_tibrv_properties 
OID '00000000000000000000000000021083'
AS OBJECT
(
  service      VARCHAR2(128),
  daemon       VARCHAR2(128),
  network      VARCHAR2(256),
  cm_name      VARCHAR2(256),
  cm_ledger    VARCHAR2(256),

  -- === Methods ===

  STATIC FUNCTION construct
  RETURN sys.mgw_tibrv_properties, 

  STATIC FUNCTION alter_construct
  RETURN sys.mgw_tibrv_properties
);
/

--
-- mgw_name_value_t
--
-- Basic type for a name-value pair. This type is by many of the gateway
-- canonical types. Typically, the name, type and one <>_value attribute 
-- will be non-NULL.
--
-- The type attribute indicates which Java datatype/class is associated with
-- this value. See DBMS_MGWMSG.<>_VALUE constants for valid values. It also
-- indicates which <>_value attribute is used to store the value.
--
-- The type/value mapping should be:
--
--   type               stored via attribute
--   ----               --------------------
--   TEXT_VALUE         text_value
--   RAW_VALUE          raw_value
--   BOOLEAN_VALUE      integer_value
--   BYTE_VALUE         integer_value
--   SHORT_VALUE        integer_value
--   INTEGER_VALUE      integer_value
--   LONG_VALUE         number_value
--   FLOAT_VALUE        number_value
--   DOUBLE_VALUE       number_value
--   DATE_VALUE         date_value
--
-- Notes:
--
-- * Object types don't support a native BOOLEAN type and hence the usage of
-- an INTEGER type to represent a BOOLEAN_VALUE; 0 for FALSE and 1 for TRUE.
--
-- * By default, JPublisher uses java.lang.Integer to represent an INTEGER 
-- datatype and java.math.BigDecimal for a NUMBER datatype.
--
-- * Most integer types are stored via integer_value (INTEGER datatype) but
-- a long integer (LONG_VALUE type) should be stored using number_value 
-- (NUMBER datatype) which can better represent the larger precision.
--
create or replace type sys.mgw_name_value_t 
oid '00000000000000000000000000021084'
as object
(
  name           VARCHAR2(250),  -- associated name
  type           INTEGER,        -- value type; see DBMS_MGWMSG.<>_VALUE defs
  integer_value  INTEGER,        -- value
  number_value   NUMBER,
  text_value     VARCHAR2(4000),
  raw_value      RAW(2000),
  date_value     DATE,

  -- === Methods ===

  STATIC FUNCTION construct
  RETURN sys.mgw_name_value_t,

  STATIC FUNCTION construct_boolean (
    name   IN VARCHAR2,
    value  IN INTEGER )
  RETURN sys.mgw_name_value_t,

  STATIC FUNCTION construct_byte (
    name   IN VARCHAR2,
    value  IN INTEGER )
  RETURN sys.mgw_name_value_t,

  STATIC FUNCTION construct_short (
    name   IN VARCHAR2,
    value  IN INTEGER )
  RETURN sys.mgw_name_value_t,

  STATIC FUNCTION construct_integer (
    name   IN VARCHAR2,
    value  IN INTEGER )
  RETURN sys.mgw_name_value_t,

  STATIC FUNCTION construct_long (
    name   IN VARCHAR2,
    value  IN NUMBER )
  RETURN sys.mgw_name_value_t,

  STATIC FUNCTION construct_float (
    name   IN VARCHAR2,
    value  IN NUMBER )
  RETURN sys.mgw_name_value_t,

  STATIC FUNCTION construct_double (
    name   IN VARCHAR2,
    value  IN NUMBER )
  RETURN sys.mgw_name_value_t,

  STATIC FUNCTION construct_text (
    name   IN VARCHAR2,
    value  IN VARCHAR2 )
  RETURN sys.mgw_name_value_t,

  STATIC FUNCTION construct_raw (
    name   IN VARCHAR2,
    value  IN RAW )
  RETURN sys.mgw_name_value_t,

  STATIC FUNCTION construct_date (
    name   IN VARCHAR2,
    value  IN DATE )
  RETURN sys.mgw_name_value_t
);
/

--
-- mgw_name_value_array_t
--
-- Array of name-value pairs.
--
create or replace type sys.mgw_name_value_array_t 
oid '00000000000000000000000000021085'
as varray(1024) OF sys.mgw_name_value_t;
/

--
-- mgw_text_value_t
--
-- Basic type for a text value. This type can store a large value as a CLOB
-- or a smaller value (size <= 4000) using a more accessible/efficient form.
-- Typically, only one value attribute would be set.
--
create or replace type sys.mgw_text_value_t 
oid '00000000000000000000000000021086'
as object
(
  small_value    VARCHAR2(4000),
  large_value    CLOB,

  -- === Methods ===

  STATIC FUNCTION construct
  RETURN sys.mgw_text_value_t
);
/

--
-- mgw_raw_value_t
--
-- Basic type for a raw value. This type can store a large value as a BLOB
-- or a smaller value (size <= 2000) using a more accessible/efficient form.
-- Typically, only one value attribute would be set.
--
create or replace type sys.mgw_raw_value_t 
oid '00000000000000000000000000021087'
as object
(
  small_value    RAW(2000),
  large_value    BLOB,

  -- === Methods ===

  STATIC FUNCTION construct
  RETURN sys.mgw_raw_value_t
);
/

--
-- mgw_basic_msg_t
--
-- Canonical type for a basic message. This type is used for a basic text 
-- or raw message. Typically, only a single text or raw value would be set.
--
create or replace type sys.mgw_basic_msg_t 
oid '00000000000000000000000000021088'
as object
(
  -- message header
  header       sys.mgw_name_value_array_t,

  -- message body; typically only one of the below is non-NULL
  text_body    sys.mgw_text_value_t,
  raw_body     sys.mgw_raw_value_t,

  -- === Methods ===

  STATIC FUNCTION construct
  RETURN sys.mgw_basic_msg_t
);
/

--
-- mgw_number_array_t
--
-- Array of NUMBER values.
--
create or replace type sys.mgw_number_array_t
oid '00000000000000000000000000021089'
as varray(1024) of NUMBER;
/

--
-- mgw_tibrv_field_t
--
-- TIB/Rendezvous field type. User friendly type returned when user gets
-- a RV field from MGW_TIBRV_MSG_T object. Typically, the field_name, 
-- field_id, field_type and one <>_value attribute will be non-NULL.
--
-- The field_type attribute specifies the RV message type is associated with
-- this value. See DBMS_MGWMSG.TIBRVMSG_<> constants for valid values. It also
-- indicates which <>_value attribute is used to store the value.
--
-- The type/value mapping should be:
--
--   RV type            stored via attribute
--   -------            --------------------
--   TIBRVMSG_BOOL      number_value
--   TIBRVMSG_F32       number_value
--   TIBRVMSG_F64       number_value
--   TIBRVMSG_I8        number_value
--   TIBRVMSG_I16       number_value
--   TIBRVMSG_I32       number_value
--   TIBRVMSG_I64       number_value
--   TIBRVMSG_IPADDR32  text_value
--   TIBRVMSG_IPPORT16  number_value
--   TIBRVMSG_DATETIME  date_value
--   TIBRVMSG_F32ARRAY  number_array_value
--   TIBRVMSG_F64ARRAY  number_array_value
--   TIBRVMSG_I8ARRAY   number_array_value
--   TIBRVMSG_I16ARRAY  number_array_value
--   TIBRVMSG_I32ARRAY  number_array_value
--   TIBRVMSG_I64ARRAY  number_array_value
--   TIBRVMSG_STRING    text_value, or clob_value
--   TIBRVMSG_OPAQUE    raw_value, or blob_value
--   TIBRVMSG_XML       raw_value, or blob_value
--
-- Notes:
--
-- * Object types don't support a native BOOLEAN type and hence the usage of
-- a NUMBER type to represent a BOOLEAN_VALUE; 0 for FALSE and 1 for TRUE.
--
-- * By default, JPublisher uses java.math.BigDecimal for a NUMBER datatype.
--
-- * For TIBRVMSG_STRING, the TEXT_VALUE attribute used to store data if 
-- value is NULL or data length <= 4000, otherwise CLOB_VALUE attribute set
-- to CLOB locator.
--
-- * For TIBRVMSG_OPAQUE and TIBRVMSG_XML, the RAW_VALUE attribute used to
-- store data if value is NULL or data length <= 2000, otherwise BLOB_VALUE 
-- attribute set to BLOB locator.
--
create or replace type sys.mgw_tibrv_field_t 
oid '0000000000000000000000000002108a'
as object
(
  field_name            VARCHAR2(256),
  field_id              INTEGER,
  field_type            INTEGER,
  number_value          NUMBER,
  number_array_value    sys.mgw_number_array_t,
  text_value            VARCHAR2(4000),
  raw_value             RAW(2000),
  date_value            DATE,
  clob_value            CLOB,
  blob_value            BLOB
);
/

--
-- mgw_tibrv_ifield_t, mgw_tibrv_ifields_t
--
-- TIB/Rendezvous internal field type. Support types used to implement 
-- MGW_TIBRV_MSG_T. Users should _never_ use this type.
--
create or replace type sys.mgw_tibrv_ifield_t 
oid '0000000000000000000000000002108b'
as object
(
  field_name            VARCHAR2(256),
  field_id              INTEGER,
  field_type            INTEGER,
  number_value          NUMBER,
  number_array_value    sys.mgw_number_array_t,
  text_value            VARCHAR2(4000),
  raw_value             RAW(2000),
  date_value            DATE,
  clob_index            INTEGER,
  blob_index            INTEGER
);
/

create or replace type sys.mgw_tibrv_ifields_t
oid '0000000000000000000000000002108c'
as varray(1024) OF sys.mgw_tibrv_ifield_t;
/

--
-- mgw_tibrv_msg_t
--
-- Canonical type for a TIB/Rendezvous message. Users should never access 
-- the type attributes directly, but instead, use the type methods.
--
create or replace type sys.mgw_tibrv_msg_t
oid '0000000000000000000000000002108d'
as object 
(
  send_subject       VARCHAR2(256),
  reply_subject      VARCHAR2(256),
  cm_time_limit      NUMBER,
  cm_sender_name     VARCHAR2(256),
  cm_sequence_num    NUMBER,
  fields             sys.mgw_tibrv_ifields_t,
  clob_data1         CLOB,
  clob_data2         CLOB,
  clob_data3         CLOB,
  blob_data1         BLOB,
  blob_data2         BLOB,
  blob_data3         BLOB,

  -- === Methods ===

  STATIC FUNCTION construct
  RETURN sys.mgw_tibrv_msg_t,

  MEMBER PROCEDURE add_bool (
    name  IN VARCHAR2,
    id    IN INTEGER,
    value IN INTEGER ),

  MEMBER PROCEDURE add_f32 (
    name  IN VARCHAR2,
    id    IN INTEGER,
    value IN FLOAT ),

  MEMBER PROCEDURE add_f64 (
    name  IN VARCHAR2,
    id    IN INTEGER,
    value IN NUMBER ),

  MEMBER PROCEDURE add_i8 (
    name  IN VARCHAR2,
    id    IN INTEGER,
    value IN INTEGER ),

  MEMBER PROCEDURE add_i16 (
    name  IN VARCHAR2,
    id    IN INTEGER,
    value IN INTEGER ),

  MEMBER PROCEDURE add_i32 (
    name  IN VARCHAR2,
    id    IN INTEGER,
    value IN INTEGER ),

  MEMBER PROCEDURE add_i64 (
    name  IN VARCHAR2,
    id    IN INTEGER,
    value IN NUMBER ),

  MEMBER PROCEDURE add_ipaddr32 (
    name  IN VARCHAR2,
    id    IN INTEGER,
    value IN VARCHAR2 ),

  MEMBER PROCEDURE add_ipport16 (
    name  IN VARCHAR2,
    id    IN INTEGER,
    value IN INTEGER ),

  MEMBER PROCEDURE add_datetime (
    name  IN VARCHAR2,
    id    IN INTEGER,
    value IN DATE ),

  MEMBER PROCEDURE add_f32array (
    name  IN VARCHAR2,
    id    IN INTEGER,
    value IN sys.mgw_number_array_t ),

  MEMBER PROCEDURE add_f64array (
    name  IN VARCHAR2,
    id    IN INTEGER,
    value IN sys.mgw_number_array_t ),

  MEMBER PROCEDURE add_i8array (
    name  IN VARCHAR2,
    id    IN INTEGER,
    value IN sys.mgw_number_array_t ),

  MEMBER PROCEDURE add_i16array (
    name  IN VARCHAR2,
    id    IN INTEGER,
    value IN sys.mgw_number_array_t ),

  MEMBER PROCEDURE add_i32array (
    name  IN VARCHAR2,
    id    IN INTEGER,
    value IN sys.mgw_number_array_t ),

  MEMBER PROCEDURE add_i64array (
    name  IN VARCHAR2,
    id    IN INTEGER,
    value IN sys.mgw_number_array_t ),

  MEMBER PROCEDURE add_string (
    name  IN VARCHAR2,
    id    IN INTEGER,
    value IN VARCHAR2 ),

  MEMBER PROCEDURE add_string (
    name  IN VARCHAR2,
    id    IN INTEGER,
    value IN CLOB ),

  MEMBER PROCEDURE add_opaque (
    name  IN VARCHAR2,
    id    IN INTEGER,
    value IN RAW ),

  MEMBER PROCEDURE add_opaque (
    name  IN VARCHAR2,
    id    IN INTEGER,
    value IN BLOB ),

  MEMBER PROCEDURE add_xml (
    name  IN VARCHAR2,
    id    IN INTEGER,
    value IN RAW ),

  MEMBER PROCEDURE add_xml (
    name  IN VARCHAR2,
    id    IN INTEGER,
    value IN BLOB ),

  MEMBER PROCEDURE set_send_subject (
    value IN VARCHAR2 ),

  MEMBER PROCEDURE set_reply_subject (
    value IN VARCHAR2 ),

  MEMBER PROCEDURE set_cm_time_limit (
    value IN NUMBER ),

  MEMBER PROCEDURE set_cm_sender_name (
    value IN VARCHAR2 ),

  MEMBER PROCEDURE set_cm_sequence_num (
    value IN NUMBER ),

  MEMBER FUNCTION get_send_subject
  RETURN VARCHAR2,

  MEMBER FUNCTION get_reply_subject
  RETURN VARCHAR2,

  MEMBER FUNCTION get_cm_time_limit
  RETURN NUMBER,

  MEMBER FUNCTION get_cm_sender_name
  RETURN VARCHAR2,

  MEMBER FUNCTION get_cm_sequence_num
  RETURN NUMBER,

  MEMBER FUNCTION get_field_count
  RETURN INTEGER,

  MEMBER FUNCTION get_field (
    idx IN INTEGER )
  RETURN sys.mgw_tibrv_field_t,

  MEMBER FUNCTION get_field_by_name (
    name  IN VARCHAR2 )
  RETURN sys.mgw_tibrv_field_t,

  MEMBER FUNCTION get_field_by_id (
    id   IN INTEGER )
  RETURN sys.mgw_tibrv_field_t,

  MEMBER FUNCTION find_field_name (
    name       IN VARCHAR2,
    start_idx  IN INTEGER )
  RETURN INTEGER,

  MEMBER FUNCTION find_field_id (
    id         IN INTEGER,
    start_idx  IN INTEGER )
  RETURN INTEGER,

  -- implemention support routines, not intended for public use but must be
  -- declared since Oracle does not support private member functions

  MEMBER PROCEDURE add_ifield (
    p_field  IN sys.mgw_tibrv_ifield_t ),

  MEMBER PROCEDURE add_num_field (
    p_name   IN VARCHAR2,
    p_id     IN INTEGER,
    p_type   IN INTEGER,
    p_value  IN NUMBER ),

  MEMBER PROCEDURE add_numarray_field (
    p_name   IN VARCHAR2,
    p_id     IN INTEGER,
    p_type   IN INTEGER,
    p_value  IN sys.mgw_number_array_t ),

  MEMBER PROCEDURE add_text_field (
    p_name   IN VARCHAR2,
    p_id     IN INTEGER,
    p_type   IN INTEGER,
    p_value  IN VARCHAR2 ),

  MEMBER PROCEDURE add_raw_field (
    p_name   IN VARCHAR2,
    p_id     IN INTEGER,
    p_type   IN INTEGER,
    p_value  IN RAW ),

  MEMBER PROCEDURE add_date_field (
    p_name   IN VARCHAR2,
    p_id     IN INTEGER,
    p_type   IN INTEGER,
    p_value  IN DATE ),

  MEMBER PROCEDURE add_clob_field (
    p_name   IN VARCHAR2,
    p_id     IN INTEGER,
    p_type   IN INTEGER,
    p_value  IN CLOB ),

  MEMBER PROCEDURE add_blob_field (
    p_name   IN VARCHAR2,
    p_id     IN INTEGER,
    p_type   IN INTEGER,
    p_value  IN BLOB )

);
/

--
-- mgw_msmq_properties
--
-- Basic properties for link to Microsoft MSMQ messaging system.
--
CREATE OR REPLACE TYPE sys.mgw_msmq_properties 
OID '0000000000000000000000000002108e'
AS OBJECT
(
  transactional  INTEGER,
  username       VARCHAR2(64),
  password       VARCHAR2(64),

  -- === Methods ===

  STATIC FUNCTION construct
  RETURN sys.mgw_msmq_properties, 

  STATIC FUNCTION alter_construct
  RETURN sys.mgw_msmq_properties
);
/

-- Grant privileges on the adminstration types. Only MGW administrators 
-- should need to access these types.
-- Q: Should include 'with grant option' for these?

grant execute on mgw_property to mgw_administrator_role;
grant execute on mgw_properties to mgw_administrator_role;
grant execute on mgw_mqseries_properties to mgw_administrator_role;
grant execute on mgw_tibrv_properties to mgw_administrator_role;
grant execute on mgw_msmq_properties to mgw_administrator_role;

-- Grant privileges on the message canonical types.
-- These types can be referenced by transformation functions, used for 
-- AQ payloads, and so on.
--
-- Note: It appears the 'with grant option' is needed if someone defines 
-- another type, using one of our types as an attribute, and they want to
-- 'grant execute' on their type to another user. If 'grant option' not
-- allowed their 'grant execute' will fail, even though we granted execute 
-- on our types to public.

grant execute on sys.mgw_name_value_t to public with grant option;
grant execute on sys.mgw_name_value_array_t to public with grant option;
grant execute on sys.mgw_text_value_t to public with grant option;
grant execute on sys.mgw_raw_value_t to public with grant option;
grant execute on sys.mgw_basic_msg_t to public with grant option;

grant execute on sys.mgw_number_array_t to public with grant option;
grant execute on sys.mgw_tibrv_field_t to public with grant option;
grant execute on sys.mgw_tibrv_ifield_t to public with grant option;
grant execute on sys.mgw_tibrv_ifields_t to public with grant option;
grant execute on sys.mgw_tibrv_msg_t to public with grant option;

Rem ===== END OF FILE ========================================================

OHA YOOOO