以下のJava外部ストアド プロシージャは、Period型パラメータを取り、それをJDBCを使用してテーブルに挿入します。SELECT文から返される値はOUTパラメータとして返されます。
//*********************************************************************
//
// File: JXSP_Period.java
// Header: none
// Purpose: Demonstrate a JXSP pdt_proc1 with SQL access.
// The JXSP will:
// - Take a Period(DATE) IN Parameter
// - Connect as user guest/please
// - Insert the Period(DATE) passed in into a table
// - Select the Period(DATE) column from the table
// - The value returned by SELECT is set as the
// OUT parameter value.
//
// JDBC API: java.sql.Connection, java.sql.Statement,
// java.sql.Statement.executeUpdate
//
//
//*********************************************************************
import java.sql.*;
import java.io.*;
public class JXSP_Period
{
// Name of the user able to create, drop, and manipulate tables
public static String sUser = "guest";
public static String sPassword = "please";
/* REPLACE PROCEDURE PDT_PROC1(IN P1 PERIOD(DATE), OUT P2 PERIOD(DATE))
LANGUAGE JAVA
NO SQL
PARAMETER STYLE JAVA
EXTERNAL NAME 'JXSP_NEWTYPES:JXSP_Period.pdt_proc1';
CREATE TABLE PerTypes(i int, P period(date));
*/
public static void pdt_proc1(java.sql.Struct p1, java.sql.Struct p2[]) throws SQLException
{
// Creation of URL to be passed to the JDBC driver
String url = "jdbc:teradata://whomooz/TMODE=ANSI,CHARSET=UTF8";
try
{
// Loading the Teradata JDBC driver
Class.forName("com.teradata.jdbc.TeraDriver");
// Creating a connection object
Connection con=DriverManager.getConnection(url,sUser, sPassword);
try
{
String insertStmt = " INSERT INTO PerTypes ( 1 ,?,)";
String selectStmt = " SELECT * FROM PerTypes ORDER BY 1";
// Create a statement object from an active connection.
Statement stmt = con.createStatement();
try
{
// Creating a prepared statement object
System.out.println("\n Preparing: " + insertStmt);
PreparedStatement pStmt =
con.prepareStatement(insertStmt);
try
{
// Call the following method to insert rows into the
// sample table
insertRows(con, pStmt, p1);// Insert the IN parameter value
// The following code will perform a SELECT query
// on the table.
stmt = con.createStatement();
// Submit a query, creating a result set object
ResultSet rs = stmt.executeQuery(selectStmt);
// iterate through all returned rows and display them
// (should be only 1 row)
while (rs.next())
{
// retrieve the PERIOD ( DATE ) Struct
Struct perDt = (Struct) rs.getObject(2);
//Set the output value
p2[0] = perDt;
} // End while
}
finally
{
// close the PreparedStatement
pStmt.close();
System.out.println(
"\n PreparedStatement object closed.\n");
}
}
finally
{
// close the statement
stmt.close();
}
}
finally
{
//Close the connection
System.out.println(" Closing Connection");
con.close();
}
}
catch (SQLException ex)
{
// An SQLException was generated. Catch it and display
// the error information.
// Note that there could be multiple error objects chained
// together.
System.out.println();
System.out.println("*** SQLException caught ***");
while (ex != null)
{
System.out.println(" Error code: " + ex.getErrorCode());
System.out.println(" SQL State: " + ex.getSQLState());
System.out.println(" Message: " + ex.getMessage());
ex.printStackTrace();
System.out.println();
ex = ex.getNextException();
}
throw new IllegalStateException (" Sample failed.") ;
}
}
public static void insertRows(Connection con, PreparedStatement pStmt,
Struct period) throws SQLException
{
// The following code will perform an INSERT query
// on the sample table.
System.out.println("\n Inserting Row...");
pStmt.setInt (1, 1) ;
pStmt.setObject (2, period) ;
pStmt.executeUpdate () ;
} // End insertRows
public static void dropObject(Connection con, String dropQuery)
{
try
{
// The following code will be used to perform a DROP query
Statement stmt = con.createStatement();
System.out.println(" Executing command "+dropQuery+"...");
stmt.executeUpdate(dropQuery);
System.out.println(" Command executed successfully.");
}
catch (SQLException ex)
{
// If the table did not exist, no drop is required.
// Ignore the raised "no table present" exception by
// printing out the error message and swallowing the
// exception.
System.out.println(" Ignoring exception: " + ex);
}
} // End dropObject
} // End of class JXSP_Period