Contents Index PASSTHROUGH statement [SQL Remote] PREPARE TO COMMIT statement

ASA SQL Reference
  SQL Statements

PREPARE statement [ESQL]


Description 

Use this statement to prepare a statement to be executed later, or used to define a cursor.

Syntax 

PREPARE statement-name
   FROM statement
DESCRIBE describe-type INTO [ [ SQL ] DESCRIPTOR ] descriptor ]
WITH EXECUTE ]

statement-name :  identifier or hostvar

statement :   string or hostvar

describe-type :
  [ ALL | BIND VARIABLES | INPUT | OUTPUT | SELECT LIST ]
  [ LONG NAMES [ [ [ OWNER. ]TABLE. ]COLUMN ]
        | WITH VARIABLE RESULT ]

Parameters 

statement-name    The statement name can be an identifier or host variable. However, you should not use an identifier when using multiple SQLCAs. If you do, two prepared statements may have the same statement number, which could cause the wrong statement to be executed or opened.

DESCRIBE clause    If DESCRIBE INTO DESCRIPTOR is used, the prepared statement is described into the specified descriptor. The describe type may be any of the describe types allowed in the DESCRIBE statement.

WITH EXECUTE clause    If the WITH EXECUTE clause is used, the statement is executed if and only if it is not a CALL or SELECT statement, and it has no host variables. The statement is immediately dropped after a successful execution. If the PREPARE and the DESCRIBE (if any) are successful but the statement cannot be executed, a warning SQLCODE 111, SQLSTATE 01W08 is set, and the statement is not dropped.

The DESRIBE INTO DESCRIPTOR and WITH EXECUTE clauses may improve performance because they cut down on the required client/server communication.

WITH VARIABLE RESULT clause    The WITH VARIABLE RESULT clause is used to describe procedures that may have more than one result set, with different numbers or types of columns.

If WITH VARIABLE RESULT is used, the database server sets the SQLCOUNT value after the describe to one of the following values:

Static and dynamic  
For compatibility reasons, preparing COMMIT, PREPARE TO COMMIT, and ROLLBACK statements is still supported. However, we recommend that you do all transaction management operations with static Embedded SQL because certain application environments may require it. Also, other Embedded SQL systems do not support dynamic transaction management operations.
Usage 

The PREPARE statement prepares a SQL statement from the statement and associates the prepared statement with statement-name. This statement name is referenced to execute the statement, or to open a cursor if the statement is a SELECT statement. The statement-name may be a host variable of type a_sql_statement_number defined in the sqlca.h header file that is automatically included. If an identifier is used for the statement-name, only one statement per module may be prepared with this statement-name.

If a host variable is used for statement-name, it must have the type short int. There is a typedef for this type in sqlca.h called a_sql_statement_number. This type is recognized by the SQL preprocessor and can be used in a DECLARE section. The host variable is filled in by the database during the PREPARE statement, and need not be initialized by the programmer.

Permissions 

None.

Side effects 

Any statement previously prepared with the same name is lost.

The statement is dropped after use only if you use WITH EXECUTE and the execution is successful. You should ensure that you DROP the statement after use in other circumstances. If you do not, the memory associated with the statement is not reclaimed.

See also 

DECLARE CURSOR statement [ESQL] [SP]

DESCRIBE statement [ESQL]

OPEN statement [ESQL] [SP]

EXECUTE statement [ESQL]

DROP STATEMENT statement [ESQL]

Standards and compatibility 
Example 

The following statement prepares a simple query:

EXEC SQL PREPARE employee_statement FROM
'SELECT emp_lname FROM employee';

Contents Index PASSTHROUGH statement [SQL Remote] PREPARE TO COMMIT statement