Bug 201232 Stored procedure dataset doesn't work in SQLServer[07]
Description: Stored procedure dataset doesn't work in SQLServer[07] Build number: 2.2.1.v20070827-0630 Steps to reproduce: 1, New a jdbc sqlserver datasource 2, New a stored procedure dataset 3, Preview Expected result: Be able to retrieve the data from strord procedure Actual result: Excption occurs Error log: org.eclipse.birt.data.engine.core.DataException: Cannot execute the statement. SQL statement does not return a ResultSet object. SQL error #1: The executeQuery method must return a result set. at org.eclipse.birt.data.engine.odaconsumer.PreparedStatement.execute(PreparedStatement.java:567) at org.eclipse.birt.data.engine.executor.DataSourceQuery.execute(DataSourceQuery.java:494) at org.eclipse.birt.data.engine.impl.PreparedOdaDSQuery$OdaDSQueryExecutor.executeOdiQuery(PreparedOdaDSQuery.java:338) at org.eclipse.birt.data.engine.impl.QueryExecutor.execute(QueryExecutor.java:767) at org.eclipse.birt.data.engine.impl.ServiceForQueryResults.executeQuery(ServiceForQueryResults.java:217) at org.eclipse.birt.data.engine.impl.QueryResults.getResultIterator(QueryResults.java:157) at org.eclipse.birt.report.designer.data.ui.dataset.ResultSetPreviewPage.populateRecords(ResultSetPreviewPage.java:537) at org.eclipse.birt.report.designer.data.ui.dataset.ResultSetPreviewPage.access$2(ResultSetPreviewPage.java:530) at org.eclipse.birt.report.designer.data.ui.dataset.ResultSetPreviewPage$5.run(ResultSetPreviewPage.java:486) at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:113) Caused by: org.eclipse.birt.report.data.oda.jdbc.JDBCException: SQL statement does not return a ResultSet object. SQL error #1: The executeQuery method must return a result set.
data/org.eclipse.birt.report.data.oda.jdbc/src/org/eclipse/birt/report/data/oda/jdbc/CallStatement.java
*/
	private void registerOutputParameter( ) throws OdaException
	{
		
		if ( parameterDefn != null )
		{
			for ( int i = 0; i < parameterDefn.getParameterCount( ); i++ )
			{
				if ( parameterDefn.getParameterMode( i ) == IParameterMetaData.parameterModeOut
						|| parameterDefn.getParameterMode( i ) == IParameterMetaData.parameterModeInOut )
				{
					registerOutParameter( i + 1, getParameterType( i ) );
				}
			}
		}
	}
	
	/*
	 * Added to deal with database-specific cases. for instance,
	 * Types.OTHER->REF CURSOR->Any(odi)->Types.CHAR(oda). In above scenarios,
	 * metaData will be fetched again to correct the parameterDataType in case
	 * they've been changed already. Note there would be some extra tradeoff
	 * even the paramDataType is recognizable to us as we just can't tell for
	 * sure on jdbc level
	 */
	private int getParameterType( int i ) throws OdaException
	{
		if ( parameterDefn.getParameterType( i ) != Types.CHAR )
			return parameterDefn.getParameterType( i );
		List paramMetaDataList = getCallableParamMetaData( );