Subject Re: [IBO] Problem in BindingCursor: Check Keylinks property Problem Ver 4.9.11
Author Geoff Worboys
Helen Borrie wrote:
> It's an expression syntax and it's only available in DSQL.
> Valid DML statements begin with SELECT, INSERT, UPDATE, DELETE or
> EXECUTE PROCEDURE. There are no others.

This may be true "officially" but the v2.1.4 release notes say:

- - -
The SQL language extension EXECUTE BLOCK makes "dynamic PSQL"
available to SELECT specifications. It has the effect of allowing
a self-contained block of PSQL code to be executed in dynamic SQL
as if it were a stored procedure.


For the client, the call isc_dsql_sql_info with the parameter
isc_info_sql_stmt_type returns

* isc_info_sql_stmt_select if the block has output parameters.
The semantics of a call is similar to a SELECT query: the client
has a cursor open, can fetch data from it, and must close it after

* isc_info_sql_stmt_exec_procedure if the block has no output
parameters. The semantics of a call is similar to an EXECUTE query:
the client has no cursor and execution continues until it reaches
the end of the block or is terminated by a SUSPEND.
- - -

Which, by my reading, say that execute block can behave like a
SELECT statement or an EXECUTE statement. So it may not be valid
DML, but it can act like one. Yes?

Of course none of this helps the OP, in which the main problem
was with keylinks rather than whether the DML was valid or not.

Geoff Worboys
Telesis Computing Pty Ltd