EXECUTE (SQL statement)
This instruction runs an SQL statement previously prepared.
Syntax
EXECUTE sid
[ USING pvar {IN|OUT|INOUT} [,...] ]
[ INTO fvar [,...] ] - sid is an identifier to handle the prepared SQL statement.
- pvar is a variable containing an input value for an SQL parameter.
- fvar is a variable used as fetch buffer.
Usage
The EXECUTE instruction performs the execution of an SQL statement initiated
by a PREPARE instruction.
Once prepared, an SQL statement can be executed several times with different SQL parameters.
If the
SQL statement has (?) parameter placeholders, you
must specify the USING clause to provide a list of
variables as parameter buffers. Parameter values are assigned by
position.
If the SQL statement returns a result set with
one row, you can specify the INTO clause
to provide a list of variables to receive the result set column
values. Fetched values are assigned by position. If the SQL
statement returns a result set with more than one row, the
instruction raises an exception.
The IN, OUT or INOUT options can only be
used for simple variables, you cannot specify those options for a complete record with the
record.* notation.
The IN, OUT or INOUT options
can be used to call stored procedures having input / output
parameters. Use the IN, OUT or INOUT options
to indicate if a parameter is respectively for input, output
or both.
You cannot execute a prepared SQL statement based on database tables if the table structure
has changed (ALTER TABLE) since the PREPARE instruction; you must
re-prepare the SQL statement.
Example
MAIN
DEFINE var1 CHAR(20)
DEFINE var2 INTEGER
DATABASE stores
PREPARE s1 FROM "UPDATE tab SET col=? WHERE key=?"
LET var1 = "aaaa"
LET var2 = 345
EXECUTE s1 USING var1, var2
PREPARE s2 FROM "SELECT col FROM tab WHERE key=?"
LET var2 = 564
EXECUTE s2 USING var2 INTO var1
PREPARE s3 FROM "CALL myproc(?,?)"
LET var1 = 'abc'
EXECUTE s3 USING var1 IN, var2 OUT
END MAIN