Documents a statement name later used in a PREPARE statement in dynamic SQL. SQL does not require DECLARE STATEMENT statements and does not generate any code when it precompiles them. They are entirely optional.
1 – Environment
You can issue the DECLARE STATEMENT statement only in host language programs to be precompiled.
2 – Format
DECLARE --+-> <statement-name> +-> STATEMENT +------- , <--------+
3 – Arguments
3.1 – statement-name
Specifies the name of a statement later referred to in one of the following embedded dynamic statements: o PREPARE o DECLARE CURSOR o DESCRIBE
4 – Example
Example 1: Declaring a statement name in a PL/I program This example shows a program line that declares a statement name DYNAMIC_STATEMENT. Later lines in the example show how DECLARE CURSOR, PREPARE, and DESCRIBE statements refer to it. Because you do not have to declare a statement explicitly, the DECLARE STATEMENT statement is always optional. EXEC SQL DECLARE DYNAMIC_STATEMENT STATEMENT; /* Declare the SQL Communications Area. */ EXEC SQL INCLUDE SQLCA; /* Declare the SQL Descriptor Area. */ EXEC SQL INCLUDE SQLDA; /* The program declares the host language variable STATEMENT_STRING and stores in it the character string containing a SELECT statement to be executed dynamically. */ . . . EXEC SQL DECLARE CURSOR1 CURSOR FOR DYNAMIC_STATEMENT; EXEC SQL PREPARE OBJECT_STATEMENT FROM STATEMENT_STRING; EXEC SQL DESCRIBE OBJECT_STATEMENT INTO SQLDA; /* The program sets up pointers in the SQLDATA field of the SQLDA to the data area (host language variables or dynamic memory, for example) to receive the data from the cursor. */ . . . EXEC SQL OPEN CURSOR1; DO WHILE (SQLCODE = 0); EXEC SQL FETCH CURSOR1 USING DESCRIPTOR SQLDA; /* The program prints or otherwise processes rows of the result tables. */ . . . END; EXEC SQL CLOSE CURSOR1;