// The MONTHLYORDERS procedure accepts an integer representing the month
// and returns the number of orders during that month to an output parameter.
// 
// See http://trafodion.apache.org/docs/spj_guide/index.html#monthlyorders-procedure
// for more documentation.
public static void numMonthlyOrders( int month
				   , int[] numOrders
				   ) throws SQLException

{
   if ( month < 1 || month > 12 )
   {
      throw new SQLException( "Invalid value for month. " 
			    + "Retry the CALL statement " 
			    + "using a number from 1 to 12 " 
			    + "to represent the month."
			    , "38001" 
			    ) ;
   }

   Connection conn =
      DriverManager.getConnection( "jdbc:default:connection" ) ;

   PreparedStatement getNumOrders =
      conn.prepareStatement( "SELECT COUNT( month( order_date ) ) " 
			   + "FROM trafodion.sales.orders " 
			   + "WHERE month( order_date ) = ?"
			   ) ;

   getNumOrders.setInt( 1, month ) ;

   ResultSet rs = getNumOrders.executeQuery() ; 
   rs.next() ;

   numOrders[0] = rs.getInt(1) ; 

   rs.close() ;
   conn.close();

} 

