execute

Executes a prepared statement or a SQL command with dynamic parameters.

Syntax

EXECUTE { SQLString | PreparedStatementIdentifier }
[ USING { String | Identifier } ]

Description

Has several uses:
  • To execute a SQL command entered as SQLString, using the Execute String style. The String is passed to the connection without further examination or processing by sqlf. Normally, you execute SQL commands directly, not with the Execute command.
  • To execute a named command identified by PreparedStatementIdentifier. This must be previously prepared with the sqlf Prepare command.
  • To execute either flavor of command when that command contains dynamic parameters, specify the values in the USING clause. In this style, the SQLString or previously prepared PreparedStatementIdentifier is executed using the values supplied as String or Identifier. The Identifier in the USING clause must have a result set as its result. Each row of the result set is applied to the input parameters of the command to be executed, so the number of columns in the USING result set must match the number of input parameters in the Execute statement. The results of each execution of the Execute statement are displayed as they are made. If the Using's result set contains no rows, the Execute's statement is not executed.

    When auto-commit mode is on, the Using's result set is closed upon the first execution of the Execute statement. To ensure multiple-row execution of the Execute command, use the Autocommit command to turn auto-commit off.

Example

sqlf(PEERCLIENT)> create table firsttable (id int primary key,
>     name varchar(12));
0 rows inserted/updated/deleted
sqlf(PEERCLIENT)> insert into firsttable values
>     (10,'TEN'),(20,'TWENTY'),(30,'THIRTY');
3 rows inserted/updated/deleted
sqlf(PEERCLIENT)> select * from firsttable;
ID         |NAME
------------------------
20         |TWENTY
30         |THIRTY
10         |TEN

3 rows selected
sqlf(PEERCLIENT)> create table newtable (newid int primary key,
>     newname varchar(12));
0 rows inserted/updated/deleted
sqlf(PEERCLIENT)> prepare listFirstTable as 'select * from firsttable';
sqlf(PEERCLIENT)> autocommit off;
sqlf(PEERCLIENT)> execute 'insert into newtable(newid, newname)
>     values(?,?)' using listFirstTable;
1 row inserted/updated/deleted
1 row inserted/updated/deleted
1 row inserted/updated/deleted
sqlf(PEERCLIENT)> commit;
sqlf(PEERCLIENT)> select * from newtable;
NEWID      |NEWNAME
------------------------
20         |TWENTY
30         |THIRTY
10         |TEN

3 rows selected