if (fixedStmt == null) throw new FBSQLException("CallableStatement.getParameterMetaData() " + "can be used only after executing a statement.", FBSQLException.SQL_STATE_NO_RESULT_SET);
Object syncObject = getSynchronizationObject(); synchronized(syncObject) { try { c.ensureInTransaction(); prepareFixedStatement(procedureCall.getSQL(), true); } catch (GDSException ge) { throw new FBSQLException(ge); } finally { c.checkEndTransaction(); } }
    public ParameterMetaData getParameterMetaData() throws SQLException {                if (fixedStmt == null)            throw new FBSQLException("CallableStatement.getParameterMetaData() " +                    "can be used only after executing a statement.",                     FBSQLException.SQL_STATE_NO_RESULT_SET);                return new FBParameterMetaData(fixedStmt.getInSqlda().sqlvar, c);    }