stmt.registerTransaction(tr);
	public void iscDsqlExecute2(IscTrHandle tr_handle,			IscStmtHandle stmt_handle, int da_version, XSQLDA in_xsqlda,			XSQLDA out_xsqlda) throws GDSException {		boolean debug = log != null && log.isDebugEnabled();		isc_tr_handle_impl tr = (isc_tr_handle_impl) tr_handle;		isc_stmt_handle_impl stmt = (isc_stmt_handle_impl) stmt_handle;		isc_db_handle_impl db = stmt.getRsr_rdb();		// Test Handles needed here		synchronized (db) {			XdrOutputStream out = db.out;			try {				if (debug)					log.debug((out_xsqlda == null) ? "op_execute "							: "op_execute2 ");				out.writeInt((out_xsqlda == null) ? op_execute : op_execute2);				out.writeInt(stmt.getRsr_id());				out.writeInt(tr.getTransactionId());				if (in_xsqlda != null) {					out.writeBuffer(in_xsqlda.blr);					out.writeInt(0); // message number = in_message_type					out.writeInt(1); // stmt->rsr_bind_format					out.writeSQLData(in_xsqlda);				} else {					out.writeBuffer(null);					out.writeInt(0); // message number = in_message_type					out.writeInt(0); // stmt->rsr_bind_format				}				if (out_xsqlda != null) {					stmt.clearRows();					// only need to clear if there is a					out.writeBuffer(out_xsqlda.blr);					out.writeInt(0); // out_message_number = out_message_type				}				out.flush();				if (stmt.getOutSqlda() != null)					stmt.notifyOpenResultSet();				if (debug)					log.debug("sent");				int op = nextOperation(db);				if (op == op_sql_response) {					// this would be an Execute procedure					stmt.ensureCapacity(1);					receiveSqlResponse(db, out_xsqlda, stmt);					op = nextOperation(db);					stmt.setAllRowsFetched(true);					stmt.setSingletonResult(true);				} else {					stmt.setSingletonResult(false);					stmt.setAllRowsFetched(false);				} // end of else				receiveResponse(db, op);			} catch (IOException ex) {				throw new GDSException(ISCConstants.isc_net_read_err);			}		}	}