ProcedureInTransaction

Description

Allows PowerBuilder to specify whether to start the transaction when executing a stored procedure for PowerServer (2021, 2022, or later).

Applies to

ASE (ODBC)

MySQL

Oracle

PostgreSQL

SQL Server

SQL Anywhere (ODBC)

Syntax

ProcedureInTransaction=value
  • 0 -- Do not start the transaction.

  • 1 (Default) -- Start the transaction

Usage

In the installable cloud app, to prevent transaction timeout (when ProcedureInTransaction is set to 1), you may consider the following solutions:

  1. Increase the transaction timeout value (120 seconds by default) to have the same number as the session timeout value (3600 seconds by default). For how to set transaction timeout values, refer to Configure the timeout settings.

  2. First set ProcedureInTransaction=0. When the procedure or cursor requires to start the transaction, dynamically set ProcedureInTransaction=1 in the script to start the transaction and then set autocommit = true or execute Commit or RollBack to commit/close the transaction in time (see the example code below). In this case, you can set a reasonable value for the transaction timeout according to the business logics.

Examples

This example specifies to start a transaction when executing a stored procedure.

string ls_sql
long ll_deptid
int li_type
//Executes a procedure and starts the transaction
li_type=1
ll_deptid = 700
sqlca.dbparm = gs_dbparm+",procedureintransaction=1"
declare mypro procedure for pro_sp_dept_update :li_type,:ll_deptid;
execute mypro;
if sqlca.sqlcode = -1 then
         rollback;
else
         commit;
end if     
close mypro;
//do not start transaction when executing a procedure
sqlca.dbparm = gs_dbparm+",procedureintransaction=0"