Commit or Rollback Transaction using Dynamic SQL

Unsupported feature

Transactions that are dynamically committed are unsupported.

SQLs that are dynamically committed or rolled back are unsupported.

Two unsupported cases that cannot be detected

Not all of the unsupported cases can be detected by the deployment tool.

Here is one case that cannot be detected:

execute immediate "commit";
string ls_sql
ls_sql = "Rollback"
Execute immediate :ls_sql;

You can work around this unsupported case by calling the Commit or Rollback SQL statement directly. For example,

Commit {USING TransactionObject};
Rollback {USING TransactionObject};

Here is another case that cannot be detected:

ls_exec = 'SAVE TRANSACTION ' + as_savepointname
execute immediate :ls_exec using sqlca;
//NOTE this is a rollback of a savepoint, not a rollback of the entire transaction:
ls_exec = 'ROLLBACK TRANSACTION ' + as_savepointname
execute immediate :ls_exec using sqlca;

You can work around this unsupported case by moving the related business logic to the procedure and implementing the transaction savepoint in the procedure.