public boolean execute() throws  SQLException {
public boolean execute() throws SQLException { boolean hasResultSet = false; Object syncObject = getSynchronizationObject(); synchronized (syncObject) { notifyStatementStarted();
    public boolean execute() throws  SQLException {        notifyStatementStarted();                boolean hasResultSet = false;                try {            Object syncObject = getSynchronizationObject();            synchronized(syncObject) {                try {                    currentRs = null;                                        prepareFixedStatement(procedureCall.getSQL(selectableProcedure), true);                    hasResultSet = internalExecute(!selectableProcedure);                        if (hasResultSet)                         setRequiredTypes();                                    } catch (GDSException ge) {                    throw new FBSQLException(ge);                } // end of try-catch-finally            }        } finally {            if (!hasResultSet)                 notifyStatementCompleted();        }                return hasResultSet;    }