BEGIN DECLARE SECTION statement

The BEGIN DECLARE SECTION statement marks the beginning of a host variable declare section.

Invocation

This statement can only be embedded in an application program. It is not an executable statement. It must not be specified in REXX.

Authorization

None required.

Syntax

Read syntax diagramSkip visual syntax diagramBEGIN DECLARE SECTION

Description

The BEGIN DECLARE SECTION statement may be coded in the application program wherever variable declarations can appear in accordance with the rules of the host language. It is used to indicate the beginning of a host variable declaration section. A host variable section ends with an END DECLARE SECTION statement.

Rules

  • The BEGIN DECLARE SECTION and the END DECLARE SECTION statements must be paired and may not be nested.
  • SQL statements cannot be included within the declare section.
  • Variables referenced in SQL statements must be declared in a declare section in all host languages other than REXX. Furthermore, the section must appear before the first reference to the variable. Generally, host variables are not declared in REXX with the exception of LOB locators and file reference variables. In this case, they are not declared within a BEGIN DECLARE SECTION.
  • Variables declared outside a declare section should not have the same name as variables declared within a declare section.
  • LOB data types must have their data type and length preceded with the SQL TYPE IS keywords.

Examples

  • Example 1:  Define the host variables hv_smint (smallint), hv_vchar24 (varchar(24)), hv_double (double), hv_blob_50k (blob(51200)), hv_struct (of structured type "struct_type" as blob(10240)) in a C program.
      
       EXEC SQL  BEGIN DECLARE SECTION;
         short  hv_smint;
         struct {
         short hv_vchar24_len;
         char  hv_vchar24_value[24];
        }                              hv_vchar24;
         double hv_double;
         SQL TYPE IS BLOB(50K) hv_blob_50k;
         SQL TYPE IS struct_type AS BLOB(10k) hv_struct;
       EXEC SQL  END DECLARE SECTION;
  • Example 2:  Define the host variables HV-SMINT (smallint), HV-VCHAR24 (varchar(24)), HV-DEC72 (dec(7,2)), and HV-BLOB-50k (blob(51200)) in a COBOL program.
      
       WORKING-STORAGE SECTION.
             EXEC SQL BEGIN DECLARE SECTION  END-EXEC.
       01  HV-SMINT              PIC S9(4)       COMP-4.
       01  HV-VCHAR24.
           49 HV-VCHAR24-LENGTH  PIC S9(4)       COMP-4.
           49 HV-VCHAR24-VALUE   PIC X(24).
       01  HV-DEC72              PIC S9(5)V9(2)  COMP-3.
       01 HV-BLOB-50K            USAGE SQL TYPE IS BLOB(50K).
             EXEC SQL END DECLARE SECTION  END-EXEC.
  • Example 3:  Define the host variables HVSMINT (smallint), HVVCHAR24 (char(24)), HVDOUBLE (double), and HVBLOB50k (blob(51200)) in a Fortran program.
       EXEC SQL  BEGIN DECLARE SECTION
         INTEGER*2      HVSMINT
         CHARACTER*24   HVVCHAR24
         REAL*8         HVDOUBLE
         SQL TYPE IS BLOB(50K)  HVBLOB50K
       EXEC SQL  END DECLARE SECTION
    Note: In Fortran, if the expected value is greater than 254 bytes, then a CLOB host variable should be used.
  • Example 4:  Define the host variables HVSMINT (smallint), HVBLOB50K (blob(51200)), and HVCLOBLOC (a CLOB locator) in a REXX program.
       DECLARE :HVCLOBLOC  LANGUAGE TYPE CLOB LOCATOR
       call sqlexec 'FETCH c1 INTO :HVSMINT, :HVBLOB50K'

    Note that the variables HVSMINT and HVBLOB50K were implicitly defined by using them in the FETCH statement.