if ( pstmtResultMetaData == null )
if ( cachedResultMetaData == null )
	public IResultSetMetaData getMetaData( ) throws OdaException	{		logger.logp( java.util.logging.Level.FINE,				Statement.class.getName( ),				"getMetaData",				"Statement.getMetaData( )" );				assertNotNull( preStat );	    java.sql.ResultSetMetaData resultmd = null;		try		{			/* redirect the call to JDBC preparedStatement.getMetaData() */			resultmd = preStat.getMetaData( );		}		catch ( Throwable e )		{			// Some data base will throw error, such as AbstractMethodError of			// DB2 7.2, so Throwable should be used to catch all possible			// exceptions or errors.			// 			// For some database, meta data of table can not be obtained			// in prepared time. To solve this problem, query execution is			// required to be executed first.			resultmd = null;		}		IResultSetMetaData pstmtResultMetaData = null;		if ( resultmd != null )		{			try			{				// in the case of oracle 8.1.7, even if ResultMetaData can be				// gotten prepare time, the getColumnCount function is				// unavailable.				resultmd.getColumnCount( );			}			catch ( SQLException e )			{				resultmd = null;			}			if ( resultmd != null )			{				pstmtResultMetaData = new ResultSetMetaData( resultmd );			}		}				if ( pstmtResultMetaData == null )		{			// If Jdbc driver throw an SQLexception or return null, when we get			// MetaData from ResultSet			IResultSet mdRs = executeQuery( );			if ( mdRs != null )				pstmtResultMetaData = mdRs.getMetaData( );		}				return pstmtResultMetaData;	}