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