// Source File Name: Outsrv.sqlj 1.7
//
// Licensed Materials -- Property of IBM
//
// (c) Copyright International Business Machines Corporation, 1998, 1999.
// All Rights Reserved.
//
// US Government Users Restricted Rights -
// Use, duplication or disclosure restricted by
// GSA ADP Schedule Contract with IBM Corp.
// Sample Program Outsrv - SQLJ Output Stored Procedure
// Steps to run the sample:
// (1) create and populate the SAMPLE database (db2sampl)
// (2) (n)make Outsrv
// (3) (n)make Outcli
// (4) run Outcli
// NOTES: (1) The jdk11_path database manager configuration parameter must
// be set
// (2) The CLASSPATH and shared library path environment variables
// must be set, as for any JDBC application.
// (3) Visit http://www.software.ibm.com/data/db2/java
// for current DB2 Java information
// For more information about this sample, refer to the README file.
// For more information on Programming in Java, refer to the
// "Programming in Java" section of the Application Development Guide.
// For more information on creating stored procedures, refer to the
// "Writing Stored Procedures" section of the Application Development Guide.
// For more information on building and running Java programs for DB2,
// refer to the "Building Java Applets and Applications" section of the
// Application Building Guide.
// For more information on the SQL language, refer to the SQL Reference.
// Class Outsrv contains one method:
// (1) outputStoredProcedure: stored procedure body
import java.sql.*; // JDBC classes
import sqlj.runtime.*;
import sqlj.runtime.ref.*;
#sql iterator Outsrv_Cursor1 (double salary) ;
// /////
// Java stored procedure is in this class
// /////
public class Outsrv
{ // (1) stored procedure body
public static void outputStoredProcedure ( /* :rk.2:erk. */
double[] medianSalary) throws Exception
{ try
{
// Declare Variables
Outsrv_Cursor1 cursor1;
short numRecords;
int counter = 0;
// Determine the Total Number of Records
#sql { SELECT COUNT(*) INTO :numRecords FROM STAFF }; /* :rk.3:erk. */
// Prepare a Statement to Obtain and Order all Salaries
#sql cursor1 = { SELECT salary FROM STAFF ORDER BY salary };
// Fetch Salaries until the Median Salary is Obtained
while (counter < numRecords/2 + 1) /* :rk.4:erk. */
{ cursor1.next();
counter++;
}
// set value for the output parameter /* :rk.5:erk. */
medianSalary[0] = cursor1.salary();
cursor1.close();
}
catch (Exception e)
{ throw e;
}
}
}