%SSC_COMMIT

Start or commit a transaction

WSupported on Windows
USupported on Unix
VSupported on OpenVMS
NSupported in Synergy .NET
value = %SSC_COMMIT(dbchannel[, SSQL_TXOFF|SSQL_TXON])

value

This function returns SSQL_NORMAL (success) or SSQL_FAILURE (failure). (i)

dbchannel

An internal database channel previously initialized using %SSC_INIT and connected by %SSC_CONNECT. (n)

SSQL_TXOFF

Commit the transaction for dbchannel. (n)

SSQL_TXON

Start a transaction. If a transaction already exists for dbchannel, commit that transaction first. (n)

%SSC_COMMIT either commits a transaction, starts a new transaction, or both. If it commits a transaction, it hard-closes any associated cursors.

The default differs from one database to another. SSQL_TXOFF/SSQL_TXON is ignored for databases that don’t support different transaction states.

For databases that support both explicit and implicit transactions (such as SQL Server), %SSC_COMMIT starts an explicit transaction.

For databases that don’t support explicit transactions (such as Oracle), %SSC_COMMIT does not start a transaction. Rather, the first data access (DML) operation (%SSC_OPEN, %SSC_EXECECUTE, %SSC_EXECIO) starts an implicit transaction. In addition, %SSC_COMMIT commits the data to the database, and SSQL_TXON has the same effect as SSQL_TXOFF.

For more information, see Understanding transactions and autocommit.

The following example demonstrates the use of %SSC_COMMIT.

sqlp = "INSERT INTO org1 (deptnum, deptname, manager,"
  &      " division, stdate, budget) VALUES (:1,:2,:3,:4," ":5,:6)"
if (%ssc_commit(dbchn, SSQL_TXON))      ;Start the transaction
  goto err_exit 
if (%ssc_open(dbchn, cur2, sqlp, SSQL_NONSEL,
  &             SSQL_STANDARD, 6, deptnum, deptname,
  &             manager, division, stdate, budget))
  goto err_exit
for ix from 1 thru MX_REC   ;Do insert
  begin
    call load_data          ;Load data to bind area
                            ;Execute insert statement
    if (%ssc_execute(dbchn, cur2, SSQL_STANDARD))
      goto err_exit
  end
if (%ssc_sclose(dbchn, cur2))
  goto err_exit
if (%ssc_commit(dbchn, SSQL_TXOFF))   ;Commit the change
  goto err_exit