blob: db0f8dc4d90caec22f9773b2d22dbfaf1350b43f [file] [log] [blame]
// The PARTDATA procedure accepts a part number and returns this
// information about the part:
//
// * Part description, price, and quantity available as output parameters.
// * A result set that contains rows from the ORDERS table about when this part was ordered.
// * A result set that contains rows from the PARTLOC table, listing locations that have this
// part in stock and the quantity they have on hand.
// * A result set that contains rows from the PARTSUPP table for suppliers who carry this part.
// * A result set that contains rows from the EMPLOYEE table for sales reps who have sold this part.
//
// See http://trafodion.apache.org/docs/spj_guide/index.html#partdata-procedure
// for more documentation.
public static void partData( int partNum
, String[] partDescription
, BigDecimal[] unitPrice
, int[] qtyAvailable
, ResultSet[] orders
, ResultSet[] locations
, ResultSet[] suppliers
, ResultSet[] reps
) throws SQLException
{
Connection conn =
DriverManager.getConnection( "jdbc:default:connection" ) ;
// Retrieve detail about this part into the output parameters
PreparedStatement getPartInfo =
conn.prepareStatement( "SELECT P.partdesc, P.price, P.qty_available "
+ "FROM trafodion.sales.parts P "
+ "WHERE partnum = ? "
) ;
getPartInfo.setInt( 1, partNum ) ;
ResultSet rs = getPartInfo.executeQuery() ;
rs.next() ;
partDescription[0] = rs.getString( 1 ) ;
unitPrice[0] = rs.getBigDecimal( 2 ) ;
qtyAvailable[0] = rs.getInt( 3 ) ;
rs.close();
// Return a result set of rows from the ORDERS table listing orders
// that included this part. Each ORDERS row is augmented with the
// quantity of this part that was ordered.
PreparedStatement getOrders =
conn.prepareStatement( "SELECT O.*, QTY.QTY_ORDERED "
+ "FROM trafodion.sales.orders O "
+ " , ( select ordernum, sum(qty_ordered) as QTY_ORDERED "
+ " from trafodion.sales.odetail "
+ " where partnum = ? "
+ " group by ordernum ) QTY "
+ "WHERE O.ordernum = QTY.ordernum "
+ "ORDER BY O.ordernum "
) ;
getOrders.setInt( 1, partNum ) ;
orders[0] = getOrders.executeQuery() ;
// Return a result set of rows from the PARTLOC table listing
// locations that have this part in stock and the quantity they
// have on hand.
PreparedStatement getLocations =
conn.prepareStatement( "SELECT * "
+ "FROM trafodion.invent.partloc "
+ "WHERE partnum = ? "
) ;
getLocations.setInt( 1, partNum ) ;
locations[0] = getLocations.executeQuery() ;
// Return a result set of rows from the PARTSUPP table listing
// suppliers who supply this part.
PreparedStatement getSuppliers =
conn.prepareStatement( "SELECT * "
+ "FROM trafodion.invent.partsupp "
+ "WHERE partnum = ? "
) ;
getSuppliers.setInt( 1, partNum ) ;
suppliers[0] = getSuppliers.executeQuery() ;
// Return a result set of rows from the EMPLOYEE table listing
// sales reps that have sold this part.
PreparedStatement getReps =
conn.prepareStatement( "SELECT * "
+ "FROM trafodion.persnl.employee "
+ "WHERE empnum in ( SELECT O.salesrep "
+ " FROM trafodion.sales.orders O, "
+ " trafodion.sales.odetail D "
+ " WHERE D.partnum = ? "
+ " AND O.ordernum = D.ordernum ) "
+ "ORDER BY empnum "
) ;
getReps.setInt( 1, partNum ) ;
reps[0] = getReps.executeQuery() ;
}