RDOHELP72.HLB  —  CREATE_SEGMENT, More
    If you have invoked a database, you have the necessary privileges
    to use the CREATE_SEGMENTED_STRING statement.

    You cannot modify a segmented string.

    When using the RDML and RDBPRE precompilers, be sure to define
    a sufficiently large value for the RDMS$BIND_SEGMENTED_STRING_
    BUFFER logical name. An adequate buffer size is needed to store
    large segmented strings (using segmented string storage maps)
    in storage areas other than the default RDB$SYSTEM storage area.
    The minimum acceptable value for the RDMS$BIND_SEGMENTED_STRING_
    BUFFER logical name must be equal to the sum of the length of
    the segments of the segmented string. For example, if you know
    that the sum of the length of the segments is one megabyte, then
    1,048,576 bytes is an acceptable value for this logical name.

    You must specify the logical name value because when RDML and
    RDBPRE precompilers store segmented strings, Oracle Rdb does not
    know which table contains the string until after the entire
    string is stored. Oracle Rdb buffers the entire segmented string,
    if possible, and does not store it until the STORE statement
    executes.

    If the segmented string remains buffered, it is stored in the
    appropriate storage area. If the string is not buffered (because
    it is larger than the defined value for the logical name or the
    default value of 10,000 bytes), it is not stored in the default
    storage area and the following exception message is displayed:

    %RDB-F-IMP_EXC, facility-specific limit exceeded
    -RDMS-E-SEGSTR_AREA_INC, segmented string was stored incorrectly

    To avoid this error, set the value of the RDMS$BIND_SEGMENTED_
    STRING_BUFFER logical name to a sufficiently large value. Note
    that a value of up to 500 MB can be specified for this logical
    name.

    You must execute this statement in a read/write transaction.
    If there is no active transaction and you issue this statement,
    Oracle Rdb starts a read/write transaction implicitly.

    In order to store the segments into the segmented string, the
    string must have a name. The CREATE_SEGMENTED_STRING statement
    initializes a segmented string and gives it a handle, so you can
    store segments into the field. After you are finished storing
    segments, you store the entire field into the relation, using the
    handle to relate the newly built string to the field in which it
    belongs. Finally, you use the END_SEGMENTED_STRING statement to
    close the block. See the example.
Close Help