CDO$HELP.HLB  —  CDO Commands, DEFINE  GENERIC Relationship Member Options
    Format

    {relationship-mbr-name                                            }
    {GENERIC                                                          }
    {           [                                                    ]}
    {           [[ DESCRIPTION IS /*text*/ ]                         ]}
    {           [                                                    ]}
    {           [   [                 {n              }]             ]}
    {           [   [property-name IS {quoted-string  }] ... .       ]}
    {           [   [                 {               }]             ]}
    {           [                                                    ]}
    {           [[                                                  ]]}
    {           [[RELATIONSHIPS .                                   ]]}
    {           [[  {RELATIONSHIP  relationship-name           }    ]]}
    { type-name [[  {                                          }    ]]}
    {           [[  { relationship-mbr-options                 }    ]]}
    {           [[  {  [                 {n            }]      }    ]]}
    {           [[  {  [property-name IS {quoted-string}] ... .} ...]]}
    {           [[  {  [                 {             }]      }    ]]}
    {           [[  {                                          }    ]]}
    {           [[  {END relationship-name RELATIONSHIP.       }    ]]}
    {           [[                                                  ]]}
    {           [[ END RELATIONSHIPS.                               ]]}
    {           [[                                                  ]]}
    {           [                                                    ]}
    {                                                                 }
    {END  [ GENERIC type-name ] .                                     }

1  –  Parameters

1.1  –  relationship-mbr-name

    Specifies an existing element that can be a valid member of the
    relationship type that you use.

1.2  –  type-name

    Specifies the type of the generic element member you are
    defining. The type must be compatible with the relationship type.

1.3  –  text

    Documents the generic element that you are creating as a
    relationship member. Within the DESCRIPTION clause, this is
    information documenting the member definition. Valid delimiters
    are /* */ or double quotation marks (" ").

    You can use Japanese to document comments in the DESCRIPTION
    clause for a field. To do this, use the SET CHARACTER_SET
    command, and set the character_set of the session to DEC_KANJI.

1.4  –  property-name

    Specifies a property.

1.5  –  n

    Sets the numeric value for a property.

1.6  –  quoted-string

    Sets the value (a string enclosed in quotation marks) for the
    property you are specifying.

1.7  –  relationship-name

    Specifies the relationship type you are defining for the generic
    element member. The type must be a subtype of RELATION.

1.8  –  relationship-mbr-options

    Specifies a relationship member. This member can be an existing
    element in a repository, or it can be an element you create with
    the DEFINE GENERIC Relationship Member Options clause.

2  –  Description

    The Relationship Mbr Options clause allows you to specify a
    relationship member. This member can be an existing element in
    the repository, or it can be an element you create within the
    DEFINE GENERIC Relationship Member Options clause.

    To specify an existing element as a relationship member, include
    only the element's name in the Relationship Member Options
    clause. To define a new element as a relationship member, specify
    the Generic clause within the Relationship Member Options clause.

    The Generic clause does not create directory names for
    relationship members. Without a directory name, you cannot
    display elements with the DIRECTORY command or include element
    definitions in other definitions.

    To display relationship members, issue the SHOW GENERIC command
    with the /FULL qualifier. To provide a directory name for a
    relationship member, issue the ENTER command.

    If you use the Generic clause, you can nest a series of
    relationship members.

3  –  Examples

    1.CDO>  DEFINE GENERIC CDD$EXECUTABLE_IMAGE MY_PROGRAM_EXE
      cont>   MCS_PROCESSINGNAME "MY_PROGRAM_EXE".
      cont> RELATIONSHIPS.
      cont>   RELATIONSHIP CDD$IMAGE_DERIVED_FROM
      cont>     GENERIC CDD$COMPILED_MODULE
      cont>     MCS_PROCESSINGNAME "INPUT_MODULE_OBJ".
      cont>       RELATIONSHIPS.
      cont>         RELATIONSHIP CDD$COMPILED_DERIVED_FROM
      cont>           INPUT_MODULE_COB.
      cont>         END CDD$COMPILED_DERIVED_FROM RELATIONSHIP.
      cont>       END RELATIONSHIPS.
      cont>     END CDD$COMPILED_MODULE INPUT_MODULE_OBJ.
      cont>   END CDD$IMAGE_DERIVED_FROM RELATIONSHIP.
      cont>   RELATIONSHIP CDD$IMAGE_DERIVED_FROM
      cont>     GENERIC CDD$COMPILED_MODULE
      cont>     MCS_PROCESSINGNAME "OUTPUT_MODULE_OBJ".
      cont>       RELATIONSHIPS.
      cont>         RELATIONSHIP CDD$COMPILED_DERIVED_FROM
      cont>           OUTPUT_MODULE_COB.
      cont>         END CDD$COMPILED_DERIVED_FROM RELATIONSHIP.
      cont>       END RELATIONSHIPS.
      cont>     END CDD$COMPILED_MODULE OUTPUT_MODULE_OBJ.
      cont>   END CDD$IMAGE_DERIVED_FROM RELATIONSHIP.
      cont> END RELATIONSHIPS.
      cont> END CDD$EXECUTABLE_IMAGE MY_PROGRAM_EXE.

      In this example, the following steps are performed:

      a. Defines the generic entity MY_PROGRAM_EXE.

      b. Specifies the processing name MY_PROGRAM_EXE for the
         CDD$PROCESSING_NAME attribute.

      c. Defines the list of relationships that the definition MY_
         PROGRAM_EXE includes.

      d. Specifies a relationship type CDD$IMAGE_DERIVED_FROM,
         supplied by Oracle CDD/Repository, that the definition MY_
         PROGRAM_EXE owns.

      e. The GENERIC clause creates a generic entity as a
         relationship member of the CDD$IMAGE_DERIVED_FROM
         relationship, based on the CDD$COMPILED_MODULE entity type.

      f. Specifies the processing name INPUT_MODULE for the attribute
         type CDD$PROCESSING_NAME, supplied by Oracle CDD/Repository.

      g. Begins the list of relationships that the generic entity
         definition INPUT_MODULE_OBJ includes.

      h. Specifies the relationship type CDD$COMPILED_DERIVED_
         FROM, which is supplied by Oracle CDD/Repository, as a
         relationship owned by the generic entity INPUT_MODULE_OBJ.
         This relationship type specifies the generic entity INPUT_
         MODULE_COB (based on the entity type CDD$SOURCE_MODULE) as
         its relationship member.

      i. Ends the relationship definition of CDD$COMPILED_DERIVED_
         FROM.

      j. Ends the list of relationships the generic entity definition
         INPUT_MODULE_OBJ owns.

      k. Ends the definition of the generic entity INPUT_MODULE_OBJ.

      l. Ends the CDD$IMAGE_DERIVED_FROM relationship definition that
         MY_PROGRAM_EXE owns.

      m. Specifies a relationship type CDD$IMAGE_DERIVED_FROM,
         supplied by Oracle CDD/Repository, that the generic entity
         definition MY_PROGRAM_EXE owns.

      n. The GENERIC clause creates a generic entity as a
         relationship member of the CDD$IMAGE_DERIVED_FROM
         relationship, based on the CDD$COMPILED_MODULE entity type.

      o. Specifies the processing name OUTPUT_MODULE_OBJ for the
         attribute type CDD$PROCESSING_NAME, which is supplied by
         Oracle CDD/Repository.

      p. Begins the list of relationships that the new generic entity
         definition OUTPUT_MODULE_OBJ includes.

      q. Specifies the relationship type CDD$COMPILED_DERIVED_FROM,
         supplied by Oracle CDD/Repository, as a relationship owned
         by the generic entity OUTPUT_MODULE_OBJ. This relationship
         type specifies the generic entity OUTPUT_MODULE_COB (based
         on the entity type CDD$SOURCE_MODULE as its relationship
         member.

      r. Ends the relationship definition of CDD$COMPILED_DERIVED_
         FROM.

      s. Ends the list of relationships that the generic entity
         definition OUTPUT_MODULE_OBJ owns.

      t. Ends the definition of the generic entity definition OUTPUT_
         MODULE_OBJ.

      u. Ends the CDD$IMAGE_DERIVED_FROM relationship definition that
         MY_PROGRAM_EXE owns.

      v. Ends the list of relationships the generic entity MY_
         PROGRAM_EXE owns.

      w. Ends the definition of the generic entity MY_PROGRAM_EXE.

      Because the GENERIC clause of the DEFINE GENERIC command
      creates the INPUT_OBJ and OUTPUT_OBJ generic entities, these
      entities do not have directory names. You can view their
      definitions only with the SHOW GENERIC/FULL command, which
      displays their owner (MY_PROGRAM_EXE entity).

    2.CDO> SHOW GENERIC CDD$EXECUTABLE_IMAGE/FULL MY_PROGRAM_EXE
      Definition of MY_PROGRAM_EXE   (Type : CDD$EXECUTABLE_IMAGE)
       |   Contains CDD$IMAGE_DERIVED_FROM
       |   |   INPUT_MODULE_OBJ                    (Type : CDD$COMPILED_MODULE)
       |   |   |   Contains CDD$COMPILED_DERIVED_FROM
       |   |   |   |   INPUT_MODULE_COB               (Type : CDD$SOURCE_MODULE)
       |   Contains CDD$IMAGE_DERIVED_FROM
       |   |   OUTPUT_MODULE_OBJ                   (Type : CDD$COMPILED_MODULE)
       |   |   |   Contains CDD$COMPILED_DERIVED_FROM
       |   |   |   |   OUTPUT_MODULE_COB              (Type : CDD$SOURCE_MODULE)

      In this example, the DEFINE GENERIC command creates the
      generic element definition MY_PROGRAM_EXE, based on the
      type CDD$EXECUTABLE_IMAGE. The first relationship defined
      is the CDD$IMAGE_DERIVED_FROM relation, supplied by Oracle
      CDD/Repository, which in turn owns the CDD$COMPILED_DERIVED_
      FROM relation, also supplied by Oracle CDD/Repository. The
      second relationship defined is a CDD$IMAGE_DERIVED_FROM
      relation, which in turn owns another CDD$COMPILED_DERIVED_
      FROM relation.

      The first relationship links the executable image and its
      compiled modules. The second relationship links the compiled
      modules and the source module.

    3.CDO> DEFINE GENERIC BOOK CDD_PLUS_REFERENCE_MANUAL
      cont> MCS_processingName IS "CDD_PLUS_REFERENCE_MANUAL"
      cont> LIBRARY_NUMBER IS "AA-KL45A-TE".
      cont> END BOOK CDD_PLUS_REFERENCE_MANUAL.

      This example creates an entity named CDD_PLUS_REFERENCE_MANUAL
      based on the BOOK protocol.

    4.CDO> DEFINE GENERIC LIBRARY ORACLE_LIBRARY
      cont> MCS_processingName IS "ORACLE_LIBRARY"
      cont> ADDRESS IS "NASHUA, NH".
      cont> RELATIONSHIPS.
      cont> RELATIONSHIP BOOK_IN_LIBRARY CDD_PLUS_REFERENCE_MANUAL
      cont> END BOOK_IN_LIBRARY RELATIONSHIP.
      cont> END RELATIONSHIPS.
      cont> END LIBRARY ORACLE_LIBRARY.

      This example creates an entity named ORACLE_LIBRARY based on
      the LIBRARY protocol.

    5.CDO> DEFINE GENERIC LIBRARY ORACLE_LIBRARY
      cont> MCS_processingName IS "ORACLE_LIBRARY".
      cont> RELATIONSHIPS.
      cont> RELATIONSHIP BOOK_IN_LIBRARY CDO_REFERENCE_MANUAL.
      cont> END BOOK_IN_LIBRARY RELATIONSHIP.
      cont> RELATIONSHIPS.
      cont> GENERIC BOOK USER_GUIDE
      cont> MCS_processingName IS "USER_GUIDE".
      cont> END RELATIONSHIPS.
      cont> END LIBRARY ORACLE_LIBRARY.

      This command creates a relationship member using the DEFINE
      GENERIC command.

    6.CDO> DEFINE GENERIC LIBRARY ORACLE_LIBRARY
      cont>    MCS_processingName IS "ORACLE_LIBRARY"
      cont>    ADDRESS IS "NASHUA, NH".
      cont>    RELATIONSHIPS.
      cont>      RELATIONSHIP BOOK_IN_LIBRARY
      cont>        GENERIC BOOK
      cont>        MCS_processingName IS "USER_GUIDE"
      cont>    END RELATIONSHIPS.
      cont> END LIBRARY ORACLE_LIBRARY.

      This example uses the DEFINE GENERIC command to define the
      relationship member USER_GUIDE. Note that the keyword DEFINE
      and the relationship member's entity name have been omitted.

    7.CDO> DEFINE GENERIC LIBRARY ORACLE_LIBRARY
      cont>    MCS_processingName IS "ORACLE_LIBRARY"
      cont>    ADDRESS IS "NASHUA, NH".
      cont>    RELATIONSHIPS.
      cont>      RELATIONSHIP BOOK_IN_LIBRARY
      cont>        GENERIC BOOK
      cont>        MCS_processingName IS "USER_GUIDE"
      cont>        LIBRARY_NUMBER IS 1.
      cont>        END GENERIC.
      cont>      END BOOK_IN_LIBRARY RELATIONSHIP.
      cont>    END RELATIONSHIPS.
      cont> END LIBRARY ORACLE_LIBRARY.

      This example uses the DEFINE GENERIC command to define the
      relationship member USER_GUIDE. Note that the keyword DEFINE
      and the relationship member's entity name have been omitted.

    8.CDO> SHOW GENERIC LIBRARY ORACLE_LIBRARY

      To view the definition of the relationship member created with
      the DEFINE GENERIC command in the previous example, you need to
      use the SHOW GENERIC command for its owner, ORACLE_LIBRARY.

    9.CDO>  DEFINE GENERIC CDD$RDB_DATABASE PERSONNEL DESCRIPTION IS
      cont> "DEFINE RDB_DATABASE PERSONNEL, CONTAINING RECORD EMPLOYEE_REC"
      cont> CDD$PROCESSING_NAME IS "PERSONNEL".
      cont> RELATIONSHIPS.
      cont>  RELATIONSHIP CDD$RDB_DATA_AGGREGATE
      cont>    GENERIC CDD$DATA_AGGREGATE DESCRIPTION IS
      cont>    "DEFINE DATA AGGREGATE EMPLOYEE_REC CONTAINING FIRST_NAME,"
      cont>    "LAST_NAME, EMP_ID"
      cont>    CDD$PROCESSING_NAME IS "EMPLOYEE_REC".
      cont>      RELATIONSHIPS.
      cont>        RELATIONSHIP CDD$DATA_AGGREGATE_CONTAINS
      cont>          GENERIC CDD$DATA_ELEMENT DESCRIPTION IS
      cont>          "DEFINE DATA ELEMENT FIRST_NAME = FIELD FIRST_NAME"
      cont>          CDD$PROCESSING_NAME IS "FIRST_NAME"
      cont>          CDD$DATA_ELEMENT_DATATYPE 14
      cont>          CDD$DATA_ELEMENT_LENGTH 10.
      cont>          END CDD$DATA_ELEMENT FIRST_NAME.
      cont>        CDD$DATA_SEQUENCE_NUMBER IS 1.
      cont>        END CDD$DATA_AGGREGATE_CONTAINS RELATIONSHIP.
      cont>        RELATIONSHIP CDD$DATA_AGGREGATE_CONTAINS
      cont>          GENERIC CDD$DATA_ELEMENT DESCRIPTION IS
      cont>          "DEFINE DATA ELEMENT LAST_NAME = FIELD LAST_NAME"
      cont>          CDD$PROCESSING_NAME IS "LAST_NAME"
      cont>          CDD$DATA_ELEMENT_DATATYPE 14
      cont>          CDD$DATA_ELEMENT_LENGTH 15.
      cont>          END CDD$DATA_ELEMENT LAST_NAME.
      cont>        CDD$DATA_SEQUENCE_NUMBER IS 2.
      cont>        END CDD$DATA_AGGREGATE_CONTAINS RELATIONSHIP.
      cont>        RELATIONSHIP CDD$DATA_AGGREGATE_CONTAINS
      cont>          GENERIC CDD$DATA_ELEMENT DESCRIPTION IS
      cont>          "DEFINE DATA ELEMENT EMP_ID = FIELD EMP_ID"
      cont>          CDD$PROCESSING_NAME IS "EMP_ID"
      cont>          CDD$DATA_ELEMENT_DATATYPE 4.
      cont>          END CDD$DATA_ELEMENT EMP_ID.
      cont>        CDD$DATA_SEQUENCE_NUMBER IS 3.
      cont>        END CDD$DATA_AGGREGATE_CONTAINS RELATIONSHIP.
      cont>      END RELATIONSHIPS.
      cont>    END CDD$DATA_AGGREGATE EMPLOYEE_REC.
      cont>  END CDD$RDB_DATA_AGGREGATE RELATIONSHIP.
      cont>END RELATIONSHIPS.
      cont>END CDD$RDB_DATABASE PERSONNEL.

      This example defines an Oracle Rdb database PERSONNEL and
      creates a CDD$RDB_DATABASE entity PERSONNEL in the CDO
      repository. This database contains one record EMPLOYEE_REC,
      which in turn contains three fields that were defined by
      nesting the GENERIC clauses: FIRST_NAME, LAST_NAME, and EMP_
      ID. (It is recommended that you define Oracle Rdb databases in
      the CDO repository through the SQL. See Oracle Rdb7 Guide to
      Database Design and Definition for more information on how to
      use CDO with Oracle Rdb databases.)

    10 CDO> SHOW GENERIC CDD$RDB_DATABASE/AUDIT=ALL PERSONNEL
       Definition of PERSONNEL   (Type : CDD$RDB_DATABASE)
       |   |   History entered by SMITH ([CDD,SMITH])
       |   |    using CDO V1.0
       |   |    to CREATE definition on 15-DEC-1987 10:31:11.59
       |   Contains CDD$RDB_DATA_AGGREGATE
       |   |   EMPLOYEE_REC                    (Type : CDD$DATA_AGGREGATE)
       |   |   |   Contains CDD$DATA_AGGREGATE_CONTAINS
       |   |   |   |   FIRST_NAME                      (Type : CDD$DATA_ELEMENT)
       |   |   |   Contains CDD$DATA_AGGREGATE_CONTAINS
       |   |   |   |   LAST_NAME                       (Type : CDD$DATA_ELEMENT)
       |   |   |   Contains CDD$DATA_AGGREGATE_CONTAINS
       |   |   |   |   EMP_ID                          (Type : CDD$DATA_ELEMENT)
       CDO>

      This example displays the history list of every element owned
      by the PERSONNEL database by using the SHOW GENERIC command.
Close Help