Programmatic use
If you know in advance that the statement to be dynamically
preprocessed is not a SELECT statement and does not contain dynamic parameters, you
can prepare it and execute it in one step, as follows:
EXECUTE IMMEDIATE :Dynam1
|
It may be more appropriate to prepare and execute the statement
in separate operations. For example, if you don't know the format
of a statement:
PREPARE Dynamic1 FROM :Dynam1
|
The statement stored in :Dynam1 is dynamically preprocessed.
DESCRIBE Dynamic1 INTO Sqlda
|
If Dynamic1 is not a SELECT statement, the Sqld field of the Sqlda data structure
is 0. In this case, if you know there are no dynamic parameters
in the prepared statement, use the EXECUTE statement to execute the dynamically preprocessed statement.
If it is possible that dynamic parameters are present in the
prepared statement, you must describe the statement for input:
DESCRIBE INPUT Dynamic1 USING SQL DESCRIPTOR SqldaIn
|
If dynamic parameters are present, the appropriate data buffer
or host variables must be loaded with the values of any dynamic
parameters. Then if the statement is not a query, it can be executed,
as in this example using a data buffer:
EXECUTE Dynamic1 USING SQL DESCRIPTOR SqldaIn
|
If Dynamic1 is a SELECT statement and the language you are using supports dynamically
defined SELECT statements, use a cursor to manipulate the rows in the query
result:
DECLARE Dynamic1Cursor CURSOR FOR Dynamic1
|
Place the appropriate values into the SQL descriptor areas.
Use the USING DESCRIPTOR clause of the OPEN statement to identify where dynamic parameter information
is located. Use the USING DESCRIPTOR clause of the FETCH statement to identify where to place the rows selected.
OPEN Dynamic1Cursor USING SQL DESCRIPTOR SqldaIn
|
Load related dynamic parameter data into the input data buffer.
FETCH Dynamic1Cursor USING DESCRIPTOR SqldaOut
.
.
.
|
When all rows have been processed, close the cursor: