Prepared Statements

A prepared statement is used to efficiently execute a statement multiple times. The Prepared Statement related functions support database failover, which is useful in a replicated database environment, by receiving multiple database profiles.

If a workflow failure occurs using one database profile, a failover process starts to replace that profile with the next available one. If none of the supplied profiles could be used a null value will be returned.

Note!

Failovers can be triggered by all errors that occur while connecting to the database or executing commands, not exclusively due to connection problems.

Please refer to Notes section on the Database Functions page for details on allowed database data type.

The following functions for Database Prepared Statements described here are:

sqlPrepSelect

The sqlPrepSelect function is used when selecting data from database tables.

table sqlPrepSelect (string sqlStatement, any parameter [,...], string DBProfile [,...], @Deprecated boolean disableCommit, //Optional)

 

Parameter

Description

Parameter

Description

sqlStatement

SQL string containing one or more parameter placeholders ('?').

parameter(s)

Value(s) to bind against parameter placeholders.

DBProfile/s)

Name of the database profile(s) to use for access.

disableCommit

(

Deprecated

from MZ 9.2.2.0

 

)

An optional parameter to disable the commit statement from being performed at the end of every SQL transaction for this particular function. Setting this parameter to false will result in the commit statement to be performed at the end of every SQL transaction for this particular function. By default, the system has the disableCommit set to true unless changed by this parameter.

It should be noted that on recent Oracle versions, the DBLink SQL transaction behaviour has changed, where every single SQL statement for remote database transaction requires a commit or rollback statement in order to close a connection.

 

Returns

Null in case of failure the error details can be found in System Log, otherwise a table, holding the SQL select result.

 

Example - Using sqlPrepSelect

 

final string sql = "select col2 from tab1 where col1=?"; consume { table tab = sqlPrepSelect(sql, myUdr.aValue, "Default.myPrimaryDB", "Default.mySecondaryDB"); if ( tab != null ) { if ( tableRowCount(tab) > 0 ) { debug("Found following value in col2:" + tableGet(tab, 0, 0)); } } else { debug("Both primary and secondary database nodes are unavailable"); } }

 

sqlPrepDynamicSelect

The sqlPrepDynamicSelect function is used when selecting data from database tables with dynamically created SQL statements.

table sqlPrepDynamicSelect (string sqlStatement, list<any> parameters, string DBProfile [,...], @Deprecated boolean disableCommit, //Optional)

 

Parameter

Description

Parameter

Description

sqlStatement

SQL string containing one or more parameter placeholders ('?').

The string may also contain variables that substitute any part of the statement such as table- or column names.

 

parameter(s)

Value(s) to bind against parameter placeholders

DBProfile/s)

Name of the database profile(s) to use for access

disableCommit

(

Deprecated

from MZ 9.2.2.0

 

)

An optional parameter to disable the commit statement from being performed at the end of every SQL transaction for this particular function. Setting this parameter to false will result in the commit statement to be performed at the end of every SQL transaction for this particular function. By default, the system has the disableCommit set to true unless otherwise changed via this parameter.

 

Returns

Null in case of failure the error details can be found in System Log, otherwise a table, holding the SQL select result

 

sqlPrepUpdate

The sqlPrepUpdate function is used when updating, inserting or deleting data into a database table.

 

 

Parameter

Description

Parameter

Description

sqlStatement

SQL string containing one or more parameter placeholders ('?')

parameter(s)

Value(s) to bind against parameter placeholders

DBProfile/s)

Name of the database profile(s) to use for access

Returns

-1 in case of failure the error details can be found in System Log, otherwise an integer equal to the number of rows updated or inserted

 

Â