}
    public boolean execute() throws  SQLException {        Object syncObject = getSynchronizationObject();        synchronized(syncObject) {            try {                c.ensureInTransaction();                                currentRs = null;                                prepareFixedStatement(procedureCall.getSQL(), true);                boolean hasResultSet = internalExecute(true);                if (hasResultSet && c.willEndTransaction())                    getCachedResultSet(false);                                if (hasResultSet)                    setRequiredTypes();                                return hasResultSet;                            } catch (GDSException ge) {                if (log != null)                    log.info("GDSException in PreparedStatement constructor",                            ge);                throw new FBSQLException(ge);            } finally {                c.checkEndTransaction();            } // end of try-catch-finally        }    }