HELPLIB.HLB  —  RDML72  Statements  STORE Statement
    Inserts a record into an existing relation. You can add a
    record to only one relation with a single STORE statement.
    The statements between the keywords STORE and END_STORE form a
    context block. You cannot store records into views defined by any
    of the following record selection expression (RSE) clauses:

    o  WITH

    o  CROSS

    o  REDUCED

    o  FIRST

    Trying to store into views that were defined with any of the
    above clauses could cause unexpected results in your database.

    You can use the GET statement within the bounds of the STORE ...
    END_STORE block. Note that any valid format of the GET statement
    is permitted within this block.

    You may find it particularly useful to use the GET statement to
    place the database key (dbkey) of the record you are storing into
    a host variable. Use the GET...RDB$DB_KEY construct to assign the
    value of the dbkey to the host variable.

1  –  Examples

    The following programs demonstrate the use of the STORE
    statement. The programs:

    o  Prompt the user for information to store in the COLLEGES
       relation

    o  Start a READ_WRITE transaction

    o  Use a STORE statement to store the user input into the
       COLLEGES relation

    o  Use the GET statement to store the value of the dbkey for
       the newly stored record into the host variable my_db_key.
       (Retrieving the dbkey is not a required part of the STORE
       statement syntax, but may be helpful in some applications.)

1.1  –  C Example

    DATABASE PERS = FILENAME "PERSONNEL";

    extern void read_string();
    static DEFINE_TYPE coll_code SAME AS COLLEGES.COLLEGE_CODE;
    static DEFINE_TYPE coll_name SAME AS COLLEGES.COLLEGE_NAME;
    static DEFINE_TYPE coll_city SAME AS COLLEGES.CITY;
    static DEFINE_TYPE coll_state SAME AS COLLEGES.STATE;
    static DEFINE_TYPE post_code SAME AS COLLEGES.POSTAL_CODE;
    static DEFINE_TYPE my_db_key SAME AS COLLEGES.RDB$DB_KEY;

    main()
    {
    read_string ("Enter College Code: ", coll_code, sizeof(coll_code));
    read_string ("Enter College Name: ", coll_name, sizeof(coll_name));
    read_string ("Enter College City: ", coll_city, sizeof(coll_city));
    read_string ("Enter College State: ",coll_state, sizeof(coll_state));
    read_string ("Enter Postal Code: ", post_code, sizeof(post_code));

    READY PERS;
    START_TRANSACTION READ_WRITE;

    STORE C IN COLLEGES USING
       strcpy (C.COLLEGE_CODE, coll_code);
       strcpy (C.COLLEGE_NAME, coll_name);
       strcpy (C.CITY, coll_city);
       strcpy (C.STATE, coll_state);
       strcpy (C.POSTAL_CODE, post_code);
       GET
          my_db_key = C.RDB$DB_KEY;
       END_GET;
    END_STORE;

    COMMIT;
    FINISH;
    }

1.2  –  Pascal Example

    program store_with_host_lang (input,output);
    DATABASE PERS = FILENAME 'PERSONNEL';

    var
       DECLARE_VARIABLE coll_code SAME AS COLLEGES.COLLEGE_CODE;
       DECLARE_VARIABLE coll_name SAME AS COLLEGES.COLLEGE_NAME;
       DECLARE_VARIABLE coll_city SAME AS COLLEGES.CITY;
       DECLARE_VARIABLE coll_state SAME AS COLLEGES.STATE;
       DECLARE_VARIABLE post_code SAME AS COLLEGES.POSTAL_CODE;
       DECLARE_VARIABLE my_db_key SAME AS COLLEGES.RDB$DB_KEY;
    begin
       writeln ('Enter College Code:');
       readln  (coll_code);
       writeln ('Enter College Name:');
       readln  (coll_name);
       writeln ('Enter College City:');
       readln  (coll_city);
       writeln ('Enter College State:');
       readln  (coll_state);
       writeln ('Enter College Postal Code:');
       readln  (post_code);

       READY PERS;
       START_TRANSACTION READ_WRITE;

       STORE C IN COLLEGES USING
          C.COLLEGE_CODE := coll_code;
          C.COLLEGE_NAME := coll_name;
          C.CITY := coll_city;
          C.STATE := coll_state;
          C.POSTAL_CODE := post_code;
          GET
            my_db_key = C.RDB$DB_KEY;
          END_GET;
       END_STORE;

       COMMIT;
       FINISH;
    end.

2  –  Format

  (B)0STORE qqqqwqq>qqqqqqqqqqqqqqqqqwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
            mqq> handle-options qj                                x
                                                                  x
  lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq<qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
  mqq> context-var qqq> IN qqqqqqqqqqqqqqqqqqqqqqqqqqq>qqqqqqqqqqqk
  lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq<qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
  mqqwq>qqqqqqqqqqqqqqqqqqwqq> relation-name qqqqq> USING  qqqqqqqk
     mq> db-handle qq> . qj                                       x
  lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq<qqqqqqqqqqqqqqqqqqqqqqqqqqqj
  mqqwq>qqqqqqqqqqqwqqwq>  statement qqqqqqqqqqqqqqqqqqqqqqqqqqqqwk
     mq> on-error qj  tq>  context-var.* qq> = qq> record-descr qux
                      mqqqqqqqqqqqqqqqqqq <qqqqqqqqqqqqqqqqqqqqqqjx
  lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq<qqqqqqqqqqqqqqqqqqqqqqqqqqqj
  mqqqqqqqqwqqqqqqqqqqqqqqqqqqwqqqqqqqqqq> END_STORE
           mq> get-statement qj

  (B)0handle-options =

  q> ( qwqqqqqq>  REQUEST_HANDLE  qqqqq>  var qqqqqqqqwq> ) q>
        tqqqqqq> TRANSACTION_HANDLE qqq>  var qqqqqqqqu
        mqqqqqq> REQUEST_HANDLE q> var q> , qqqqqqqk  x
          lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj  x
          mqqqq> TRANSACTION_HANDLE q> var qqqqqqqqqqqj

  (B)0get-statement =

   GET qqwqqqq>qqqqqqqqwqqwq> get-item  qqwqqqqq> END_GET qqq>
         mq> on-error qj  mqqqqq ; <qqqqqqj

  (B)0get-item  =

   qqqqwqq> host-var qqqqqqqq>  = qqqqq> value-expr qqqqqqqqqqwqqqq>
       tqq> record-descr qqqq>  = qqqqq> context-var.* qqqqqqqu
       mqq> host-var qqqqqqqq>  = qqqqq> statistical-expr qqqqj

2.1  –  Format arguments

    handle-options         A request handle, a transaction handle, or
                           both.

    REQUEST_HANDLE var     The REQUEST_HANDLE keyword followed by a
                           host language variable. A request handle
                           identifies a compiled Oracle Rdb request.
                           If you do not supply a request handle
                           explicitly, RDML associates a unique
                           request handle for the compiled request.

    TRANSACTION_HANDLE     The TRANSACTION_HANDLE keyword followed by
    var                    a host language variable. A transaction
                           handle identifies a transaction. If
                           you do not supply a transaction handle
                           explicitly, RDML uses the default
                           transaction handle.

    context-var            A context variable. A temporary name that
                           you associate with a relation. You define
                           a context variable in a relation clause.
                           For more information see the entry on
                           Context Variables.

    db-handle              Database handle. A host variable used
                           to refer to a specific database you have
                           invoked. For more information see the
                           entry on the Database Handle clause.

    relation-name          The name of a relation in the database.

    on-error               The ON ERROR clause. The first occurrence
                           specifies host language or RDML
                           statement(s) to be performed if an error
                           occurs during the STORE operation. The
                           second occurrence specifies host language
                           or RDML statement(s) to be performed if
                           an error occurs during the GET operation.
                           For more information see the entry on ON
                           ERROR.

    statement              Any valid RDML or host language statement,
                           except the GET statement, to be executed
                           during the STORE operation. Use a
                           semicolon (;) at the end of each RDML,
                           Pascal, or C statement.

    get-item               The GET statement includes an assignment
                           statement specifying a host variable and
                           a database value. The database value is
                           assigned to the host variable from the
                           Oracle Rdb value expression or statistical
                           expression. Note that the GET statement
                           must be the last statement to appear
                           before the END_STORE statement.

    host-var               A valid variable name declared in the host
                           program.

    value-expr             A valid RDML value expression. The value
                           expression can include the "<context-
                           variable>.RDB$DB_KEY" expression.

    record-descr           A valid host language record descriptor
                           that contains an entry for each field in
                           fields of the relation. Each field of the
                           record descriptor must match exactly the
                           field names and data types of the fields
                           in the Oracle Rdb relation referenced by
                           the context variable.

    statistical-expr       A statistical expression; calculates
                           values based on a value expression for
                           every record in the record stream.
Close Help