SUMMARY
This document discusses an error that can occur when using a CALL statement in a transaction against an IBM DB2 database in Strategy Secure Enterprise 10.x.
DESCRIPTION
Transaction services documents that contain a CALL statement in the underlying transaction may fail with an ODBC error when a user attempts to execute the transaction:

The DSSErrors.log will contain the following error message:
[Strategy][ODBC DB2 Wire Protocol driver]CALL statement found in explicit batch. For more information, please consult DB2 document for error code SQL08349.

CALL MSTR_UPDATE ('Administrator', 'IS_CUBE_REP_STATS_TMP',' Hour_ID=[?TF[HOUR_ID@ID]@@1[?, CUBEACTIONID=1',
'SERVERMACHINE="SERVERMACHINE" and SERVERMACHINE="SERVERMACHINE"');
CAUSE
The issue occurs because of the semicolon (;) at the end of the Freeform SQL statement. An explicit batch is 2 or more SQL statements, each of which is separated by a semicolon. In this situation there is only one SQL statement, however the addition of the semicolon causes the ODBC driver to interpret the CALL statement as occurring in an explicit batch.
ACTION
Removing the semicolon from the end of the Freeform SQL statement will allow the transaction to be successfully submitted. Removing the semicolon will not cause a syntax error because there is only one SQL statement that is being submitted to the database. This is illustrated in the screenshot below which shows the result of executing the statement through a query tool. It can be seen that the CALL statement is successfully submitted to the database with the semicolon removed.

KB308018