Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

Just as stored procedures may be written in PL/SQL (Oracle's native language) and then called from PL/SQL, directly, or from Java using JDBC, so too stored procedures may be written in Java and called from PL/SQL or Java.

Before Oracle 10g, calling stored procedures from Java was

 

 

Code Block
package org.glast.pipeline.server.sql.sp; public class SPStream
{
   // Package-specific Exception types:
PROCEDURE SetProcessInstanceStatus(ProcessInstance_in IN int, ProcessingStatus_in IN VARCHAR2, transitionTime_in IN TimeStamp) IS
   public static final int    invalid_stream_ex ProcessInstanceRow_out ProcessInstance%ROWTYPE;
          ProcessType_out ProcessType.ProcessType%TYPE;
     =    -20026;
StreamStatus_out StreamStatus.StreamStatus%TYPE;
   // ProcessingStatusBEGIN
 Enumeration Constants:

   public  static finalselect String*
    ps_waiting     =    "WAITING";into ProcessInstanceRow_out
   public static final String    ps_ready  from ProcessInstance
    =    "READY";
   public staticwhere finalProcessInstance String = ProcessInstance_in;

   ps_queued     =select ProcessType
   "QUEUED";
   public static final String   into psProcessType_submittedout
    =    "SUBMITTED";
   public staticfrom finalProcess
 String    ps_running      = where Process  "RUNNING"= ProcessInstanceRow_out.Process;

   public  static final String IF 0 = ps_success	  =    "SUCCESS";
   public static final String    ps_failed	   =    "FAILED";
   public static final String    ps_terminated    =    "TERMINATED";
   public static final String    ps_canceled       =    "CANCELED";
   public static final String    ps_skipped GetStateTransitionValid(ProcessInstanceRow_out.ProcessingStatus, ProcessingStatus_in, ProcessType_out) THEN
            RAISE_APPLICATION_ERROR(invalid_status_transition_ex,
                'Not a valid state transition from ' ||
                ProcessInstanceRow_out.ProcessingStatus ||
                ' to ' ||
       =    "SKIPPED";


   // StreamStatus Enumeration Constants:

ProcessingStatus_in ||
   public static  final String    ss_waiting    = ' for a "WAITING";
process of type public' static||
 final String    ss_queued    =    "QUEUED";
   public static final StringProcessType_out ||
        ss_running    =    "RUNNING"'.');

      public static final String   RETURN;
 ss_success    =   END "SUCCESS"IF;

   public static final String   update ProcessInstance
    ss_failed    =    "FAILED";
set ProcessingStatus = publicProcessingStatus_in
 static final String    ss_terminated    = where ProcessInstance  "TERMINATED"= ProcessInstance_in;

   public  static final String IF ps_submitted = ssProcessingStatus_canceledin THEN
   =    "CANCELED";
   public static finalupdate StringProcessInstance
    ss_terminating    =    "TERMINATING";
   public staticset finalSubmitDate String= transitionTime_in
   ss_canceling    =    "CANCELING";

   private static HashSetwhere processingStatesProcessInstance = new HashSet()ProcessInstance_in;
   static {
    ELSIF  processingStates.add(ps_waiting);
ps_running = ProcessingStatus_in THEN
       processingStates.add(ps_ready);
      processingStates.add(ps_queued);update ProcessInstance
      processingStates.add(ps_submitted);
        processingStates.add(ps_running);
  set StartDate   processingStates.add(ps_success);= transitionTime_in
      processingStates.add(ps_failed);
       processingStates.add(ps_terminated);
   where ProcessInstance = processingStates.add(ps_canceled)ProcessInstance_in;
      processingStates.add(ps_terminated);
  ELSIF ps_success =  processingStates.add(ps_skipped);
   }

ProcessingStatus_in OR ps_failed = ProcessingStatus_in THEN
   private static HashSet finalProcessingStates = new HashSet();
   staticupdate {ProcessInstance
       finalProcessingStates.add(ps_terminated);
      finalProcessingStates.add(ps_canceled);
   set EndDate = finalProcessingStates.add(ps_success);transitionTime_in
      finalProcessingStates.add(ps_failed);
       finalProcessingStates.add(ps_skipped);
   }

   where ProcessInstance = ProcessInstance_in;
   private static HashSet streamStates = newEND HashSet()IF;

   static {
    CheckProcessDependents(ProcessInstanceRow_out.Process,  streamStates.add(ss_waitingProcessInstanceRow_out.Stream, ProcessingStatus_in);

        StreamStatus_out := streamStatesSP_STREAM.addcalculateStreamStatus(ssProcessInstanceRow_queuedout.Stream);
    END;

 

 

Code Block

public void streamStates.add(ss_running);setProcessInstanceStatus(int processInstance, ProcessingStatus newProcessingStatus, Timestamp transitionTime) throws InvalidStatusTransitionException, SQLException
   {
   streamStates.add(ss_success);
   CallableStatement stmt = streamStatesconnection.add(ss_failedprepareCall("{call DATA_ACCESS.SetProcessInstanceStatus(?,?,?)}");
      streamStates.add(ss_terminating);
try
      streamStates.add(ss_terminated);{
      streamStates.add(ss_canceling);
      streamStates.add(ss_canceledstmt.setInt(1, processInstance);
   }

   private static HashSet finalStreamStates = new HashSet();
   static {
 stmt.setString(2, newProcessingStatus.toString());
         finalStreamStatesstmt.add(ss_terminatedsetTimestamp(3, transitionTime);
      finalStreamStates.add(ss_canceled   stmt.execute();
      finalStreamStates.add(ss_success);}
      finalStreamStates.add(ss_failed);catch(SQLException x)
   }

   private{
 static boolean allComplete(Map procStatMap, Map streamStatMap) {
      for (Iterator i int errorCode = processingStates.iterator(); i.hasNextx.getErrorCode();) {
         Stringif state(errorCode == (String)i.next();InvalidStatusTransitionException.errorCode)
         int   countthrow =new InvalidStatusTransitionException((Integer)procStatMap.get(state)).intValue()x);
         if ( !finalProcessingStates.contains(state) && (count != 0) )else
            returnthrow falsex;
      }

      forfinally
 (Iterator i = streamStates.iterator(); i.hasNext();) {
         String state = (String)i.nextstmt.close();
      }
   }

 

 

 

Code Block

package org.glast.pipeline.server.sql.sp; public class SPStream
{
   // Package-specific Exception types:

   public static final int    invalid_stream_ex int count = ((Integer)streamStatMap.get(state)).intValue();
         if ( !finalStreamStates.contains(state) && (count != 0) )
            return false;
  =    }-20026;

   // ProcessingStatus  return true;
   }

Enumeration Constants:

   privatepublic static booleanfinal all(String key, Map map) {
 ps_waiting     = int total = 0"WAITING";
   public static final forString (Iterator i = map.values().iterator(); i.hasNext();) {
 ps_ready       =    total += ((Integer)i.next()).intValue()"READY";
   public static final String }
   ps_queued   return ((Integer)map.get(key)).intValue() == total;
   }
"QUEUED";
   privatepublic static booleanfinal any(String key, Map map) {
 ps_submitted    =  return ((Integer)map.get(key)).intValue() != 0 "SUBMITTED";
   }

   public static final String calculateStreamStatus(int stream) throws ClassNotFoundExceptionps_running {
     = String retVal = ss_waiting "RUNNING";
   public static final ConnectionString connection = null; // Database connection object ps_success	  =    "SUCCESS";
   public static final ResultSetString rset = null;
  ps_failed	   =  int parentStream = 0;

 "FAILED";
   public static final tryString {
   ps_terminated    =  // Get a"TERMINATED";
 Default Database Connectionpublic usingstatic Serverfinal SideString JDBC Driver.
  ps_canceled       //= Note : This class will be loaded on the Database Server and hence use a
      "CANCELED";
   public static final String    ps_skipped        =    "SKIPPED";


   // StreamStatus Server Side JDBC Driver to get default Connection to Database

  Enumeration Constants:

   public static final String    ss_waiting    =   if (System.getProperty("java.vendor").toLowerCase().indexOf("oracle") != -1) {
 "WAITING";
   public static final String    ss_queued    =   // we're running as a stored procedure, connect locally:
    "QUEUED";
   public static final String    ss_running     =    connection = DriverManager.getConnection("jdbc:default:connection")"RUNNING";
   public static final String   } elsess_success {
   =     "SUCCESS";
    // we're running outside the DB, connect via standard oracle jdbc driver:public static final String    ss_failed    =    "FAILED";
   public static final String    ss_terminated    =  Class.forName("oracle.jdbc.driver.OracleDriver")  "TERMINATED";
   public static final String    ss_canceled   connection = DriverManager.getConnection("jdbc:oracle:thin:@glast-oracle02.slac.stanford.edu:1521:GLASTDEV","GLAST_DP_TEST","BT33%Q9]MU")   "CANCELED";
   public static final String   }

 ss_terminating    =    //
   "TERMINATING";
   public static final String    ss_canceling  //  Get= information about current stream"CANCELING";

   private static HashSet processingStates =  //


new HashSet();
   static {
     String currentStatus processingStates.add(ps_waiting);
      processingStates.add(ps_ready);
   PreparedStatement stmt = connectionprocessingStates.prepareStatementadd(ps_queued);
      processingStates.add(ps_submitted);
      processingStates.add(ps_running);
   "select * " + processingStates.add(ps_success);
         processingStates.add(ps_failed);
      "from Stream " +processingStates.add(ps_terminated);
      processingStates.add(ps_canceled);
      processingStates.add(ps_terminated);
   "where Stream = ? " processingStates.add(ps_skipped);
   }

   private static HashSet finalProcessingStates = new    HashSet();
   static {
      stmtfinalProcessingStates.setInt(1,streamadd(ps_terminated);
      finalProcessingStates.add(ps_canceled);
   rset  = stmtfinalProcessingStates.executeQueryadd(ps_success);
 // Execute the query, get Resultset finalProcessingStates.add(ps_failed);
         if (rset.next()) {
  finalProcessingStates.add(ps_skipped);
   }

   private static HashSet streamStates = new HashSet();
 currentStatus = rset.getString("STREAMSTATUS" static {
      streamStates.add(ss_waiting);
      streamStates.add(ss_queued);
      parentStream = rset.getInt("PARENTSTREAM"streamStates.add(ss_running);
      streamStates.add(ss_success);
    } else { streamStates.add(ss_failed);
      streamStates.add(ss_terminating);
      throw new SQLException("No such stream", "", invalid_stream_exstreamStates.add(ss_terminated);
      streamStates.add(ss_canceling);
      streamStates.add(ss_canceled);
   }

   private static HashSet finalStreamStates = new stmt.closeHashSet();

   static {
      //finalStreamStates.add(ss_terminated);
      finalStreamStates.add(ss_canceled);
   //  Get a count of the Processes in each state for this Stream: finalStreamStates.add(ss_success);
      finalStreamStates.add(ss_failed);
   }

   private static boolean allComplete(Map procStatMap,  //

Map streamStatMap) {
      for (Iterator i stmt = connectionprocessingStates.prepareStatementiterator(
  ); i.hasNext();) {
         String state   "select ProcessingStatus, count(ProcessingStatus) AS COUNT " +
= (String)i.next();
         int count = ((Integer)procStatMap.get(state)).intValue();
       "from ProcessInstance "if +
       ( !finalProcessingStates.contains(state) && (count != 0) )
        "where Stream = ? "return +false;
      }

      for (Iterator i "group by ProcessingStatus "= streamStates.iterator(); i.hasNext();) {
         String state = (String)i.next();
   );
      int count  stmt.setInt(1,stream= ((Integer)streamStatMap.get(state)).intValue();
         rsetif =( stmt!finalStreamStates.executeQuerycontains(state); // Execute the query, get Resultset
&& (count != 0) )
            return false;
      }

      return true;
   }

  Map procStatCountsprivate =static newboolean HashMap();
   all(String key, Map map) {
      int total = 0;
      for (Iterator i = processingStatesmap.values().iterator(); i.hasNext();) {
         total   procStatCounts.put((String+= ((Integer)i.next(), new Integer(0)).intValue();
         while (rset.next()) {}
            procStatCounts.put(rset.getString("PROCESSINGSTATUS"), new Integer(rset.getInt("COUNT")));
      return ((Integer)map.get(key)).intValue() == total;
   }

   private static boolean any(String key, Map stmt.close();

map) {
      return ((Integer)map.get(key)).intValue() != //0;
   }

   public static String //  Get a count of the sub-Streams in each state for this Stream:
calculateStreamStatus(int stream) throws ClassNotFoundException {
      String retVal = ss_waiting;
      Connection connection = null; //

 Database connection object
      stmtResultSet rset = connection.prepareStatement(null;
      int parentStream = 0;


      "select StreamStatus, count(StreamStatus) AS COUNT " +
try {
         // Get a Default Database Connection using Server Side JDBC Driver.
 "from Stream " +
     // Note : This class will be loaded on the "whereDatabase ParentStreamServer =and ?hence "use +a
         // Server Side JDBC Driver to "groupget bydefault StreamStatus"
Connection to Database

         if (System.getProperty("java.vendor").toLowerCase().indexOf("oracle") != -1) );{
         stmt.setInt(1, stream);
  // we're running as a stored procedure, rsetconnect = stmt.executeQuery();
locally:
           Map subStreamStatCountsconnection = new HashMap(DriverManager.getConnection("jdbc:default:connection");
         for} (Iteratorelse i{
 = streamStates.iterator(); i.hasNext();)
         // we're  subStreamStatCounts.put((String)i.next(), new Integer(0));
         while (rset.next()) {running outside the DB, connect via standard oracle jdbc driver:
            subStreamStatCountsClass.put(rset.getString("STREAMSTATUS"), new Integer(rset.getInt("COUNT")))forName("oracle.jdbc.driver.OracleDriver");
         }
   connection =     stmt.close();

         if (currentStatus == ss_terminating) {DriverManager.getConnection("jdbc:oracle:thin:@glast-oracle02.slac.stanford.edu:1521:GLASTDEV","GLAST_DP_TEST","BT33%Q9]MU");
         }

         //
   if  (allComplete(procStatCounts, subStreamStatCounts)) {
  //  Get information about current stream
       retVal = ss_terminated; //


         String currentStatus;
  } else {
     PreparedStatement stmt = connection.prepareStatement(
       retVal = ss_terminating;
      "select * " +
   }
         } else if (currentStatus == ss_canceling) {"from Stream " +
            if (allComplete(procStatCounts, subStreamStatCounts)) {
     "where Stream = ? "
             retVal = ss_canceled);
         stmt.setInt(1,stream);
   } else {
               retVal = ss_canceling;
            }rset = stmt.executeQuery(); // Execute the query, get Resultset
         } else if ( any(ps_running, procStatCounts) || any(ss_running, subStreamStatCounts) rset.next()) {
            retValcurrentStatus = ss_runningrset.getString("STREAMSTATUS");
         } else if ( any(ps_queued, procStatCounts) || any(ps_submitted, procStatCounts) || any(ss_queued, subStreamStatCounts) ) {
 parentStream = rset.getInt("PARENTSTREAM");
         } else {
            throw new SQLException("No such retVal = ss_queuedstream", "", invalid_stream_ex);
         }
    else if ( any(ps_waiting, procStatCounts) || any(ss_waiting, subStreamStatCounts) ) {
 stmt.close();

         //
     retVal = ss_waiting;
  //  Get a count of the }Processes elsein ifeach ( any(ps_failed, procStatCounts) || any(ss_failed, subStreamStatCounts) ) {
state for this Stream:
         //

       retVal  stmt = ss_failed;connection.prepareStatement(
         } else if ( all(ps_success, procStatCounts) && all(ss_success, subStreamStatCounts) ) {
 "select ProcessingStatus, count(ProcessingStatus) AS COUNT " +
           retVal = ss_success;
  "from ProcessInstance " +
    }

         stmt = connection.prepareStatement("updatewhere Stream set StreamStatus = ? " where+
 Stream = ?");
             "group by ProcessingStatus "
              stmt.setString(1,retVal );
         stmt.setInt(21,stream);
         rset = stmt.executeUpdateexecuteQuery();

 // Execute the query,     if (parentStream != 0)
get Resultset
         Map procStatCounts = new  calculateStreamStatusHashMap(parentStream);

        } catchfor (SQLException ex) { // Trap SQL Errors
Iterator i = processingStates.iterator(); i.hasNext();)
            procStatCounts.put((String)i.next(), new ex.printStackTraceInteger(0));
       } finally {
          trywhile (rset.next()) {
            if (connection != null || !connection.isClosed())procStatCounts.put(rset.getString("PROCESSINGSTATUS"), new Integer(rset.getInt("COUNT")));
         }
       connection  stmt.close();

   // Close the database connection
  //
         // } catch(SQLException ex){
              ex.printStackTrace();
Get a count of the sub-Streams in each state for this Stream:
         //

     }
    stmt =  }

connection.prepareStatement(
        return retVal;
   }
}

 

 

 

 

 

Code Block

%ORACLE_HOME%\bin\loadjava -user=GLAST_DP_TEST/BT33%%Q9]MU@glast-oracle02.slac.stanford.edu:1521:GLASTDEV -verbose -force -resolve %project_base%\src\main\java\org\glast\pipeline\server\sql\sp\*.java

 

 

No Format

set CLASSPATH=%ORACLE_HOME%\sqlj\lib\translator.jar;%ORACLE_HOME%\sqlj\lib\runtime12.jar;%ORACLE_HOME%\jdbc\lib\ojdbc14.jar;%ORACLE_HOME%\sqlj\lib\utl_dbws.jar;%ORACLE_HOME%\jdbc\lib\orai18n.jar;%ORACLE_HOME%\sqlj\runtime12ee.jar;%ORACLE_HOME%\jpub\lib\jpub.jar;%ORACLE_HOME%\sqlj\lib\sqljutl.jar

%ORACLE_HOME%\bin\jpub -user=glast_dp_test/BT33%%Q9]MU -url=jdbc:oracle:thin:@glast-oracle02.slac.stanford.edu:1521:GLASTDEV -java=org.glast.pipeline.server.sql.sp.* -package=org.glast.pipeline.server.sql.spclient -compile=false -dir=%project_base%\src\main\java\

 

 

 

Code Block

package org.glast.pipeline.server.sql.spclient;

public class SPStream
{
   public SPStream(java.sql.Connection conn) throws java.sql.SQLException
   { m_ctx = new sqlj.runtime.ref.DefaultContext(conn); }
// MORE GENERATED CODE HERE <clipped>    public java.lang.String calculateStreamStatus(int p0)
      throws java.lang.ClassNotFoundException
   {

         Object __jRt_0 = null;
"select StreamStatus, count(StreamStatus) AS COUNT " +
               "from Stream " +
               "where ParentStream = ? " +
               "group by StreamStatus"
               );
         stmt.setInt(1, stream);
         rset = stmt.executeQuery();
         Map subStreamStatCounts = new HashMap();
         for (Iterator i = streamStates.iterator(); i.hasNext();)
            subStreamStatCounts.put((String)i.next(), new Integer(0));
         while (rset.next()) {
            subStreamStatCounts.put(rset.getString("STREAMSTATUS"), new Integer(rset.getInt("COUNT")));
         }
         stmt.close();

         if (currentStatus == ss_terminating) {
            if (allComplete(procStatCounts, subStreamStatCounts)) {
               retVal = ss_terminated;
            } else {
               retVal = ss_terminating;
            }
         } else if (currentStatus == ss_canceling) {
            if (allComplete(procStatCounts, subStreamStatCounts)) {
               retVal = ss_canceled;
            } else {
               retVal = ss_canceling;
            }
         } else if ( any(ps_running, procStatCounts) || any(ss_running, subStreamStatCounts) ) {
            retVal = ss_running;
         } else if ( any(ps_queued, procStatCounts) || any(ps_submitted, procStatCounts) || any(ss_queued, subStreamStatCounts) ) {
            retVal = ss_queued;
         } else if ( any(ps_waiting, procStatCounts) || any(ss_waiting, subStreamStatCounts) ) {
            retVal = ss_waiting;
         } else if ( any(ps_failed, procStatCounts) || any(ss_failed, subStreamStatCounts) ) {
            retVal = ss_failed;
         } else if ( all(ps_success, procStatCounts) && all(ss_success, subStreamStatCounts) ) {
            retVal = ss_success;
         }

         stmt = connection.prepareStatement("update Stream set StreamStatus = ? where Stream = ?");
         stmt.setString(1,retVal);
         stmt.setInt(2,stream);
         stmt.executeUpdate();

         if (parentStream != 0)
            calculateStreamStatus(parentStream);

       } catch (SQLException ex) { // Trap SQL Errors
          ex.printStackTrace();
       } finally {
          try {
            __jRt_0 = oracle.jpub.reflect.Client.invoke(_context(),null, "org.glast.pipeline.server.sql.sp.SPStream","calculateStreamStatus","I",new Object[]{new java.lang.Integer(p0)});
      }if (connection != null || !connection.isClosed())
      catch (java.lang.ClassNotFoundException e) {
       connection.close();  throw e;
// Close the database   }connection
      catch (Throwable e) {
   }      e.printStackTrace();catch(SQLException ex){
      }
         return (java.lang.String)__jRt_0;
   }
}

 

Code Block

CREATE OR REPLACE PACKAGE SP_STREAM
AS
    -- Package-specific types:
    TYPE CURSOR IS REF CURSOR;
    
    -- public static String calculateStreamStatus(int stream)
    FUNCTION calculateStreamStatus(Stream_in IN number) RETURN varchar2;
END SP_STREAM;
/

CREATE OR REPLACE PACKAGE BODY SP_STREAM
AS
    FUNCTION calculateStreamStatus(Stream_in IN number) RETURN varchar2 IS
               LANGUAGE JAVA
               NAME 'org.glast.pipeline.server.sql.sp.SPStream.calculateStreamStatus(int) return java.lang.String';
END SP_STREAM;
/

 

Code Block

     PROCEDURE SetProcessInstanceStatus(ProcessInstance_in IN int, ProcessingStatus_in IN VARCHAR2, transitionTime_in IN TimeStamp) IS
        ProcessInstanceRow_out ProcessInstance%ROWTYPE;
        ProcessType_out ProcessType.ProcessType%TYPE;
        StreamStatus_out StreamStatus.StreamStatus%TYPE;
    BEGIN
        select *
            into ProcessInstanceRow_out
            from ProcessInstance
            where ProcessInstance = ProcessInstance_in;

        select ProcessType
            into ProcessType_out
            from Process
            where Process = ProcessInstanceRow_out.Process;

        IF 0 = GetStateTransitionValid(ProcessInstanceRow_out.ProcessingStatus, ProcessingStatus_in, ProcessType_out) THEN
            RAISE_APPLICATION_ERROR(invalid_status_transition_ex,
                'Not a valid state transition from ' ||
                ProcessInstanceRow_out.ProcessingStatus ||
                ' to ' ||
                ProcessingStatus_in ||
                ' for a process of type ' ||
                ProcessType_out ||
                '.');

            RETURN;
        END IF;

        update ProcessInstance
            set ProcessingStatus = ProcessingStatus_in
            where ProcessInstance = ProcessInstance_in;

        IF ps_submitted = ProcessingStatus_in THEN
            update ProcessInstance
                set SubmitDate = transitionTime_in
                where ProcessInstance = ProcessInstance_in;
        ELSIF ps_running = ProcessingStatus_in THEN
            update ProcessInstance
                set StartDate = transitionTime_in
                where ProcessInstance = ProcessInstance_in;
        ELSIF ps_success = ProcessingStatus_in OR ps_failed = ProcessingStatus_in THEN
            update ProcessInstance
                set EndDate = transitionTime_in
                where ProcessInstance = ProcessInstance_in;
        END IF;

        CheckProcessDependents(ProcessInstanceRow_out.Process, ProcessInstanceRow_out.Stream, ProcessingStatus_in);

        StreamStatus_out := SP_STREAM.calculateStreamStatus(ProcessInstanceRow_out.Stream);
    END; 
Code Block

   public void setProcessInstanceStatus(int processInstance, ProcessingStatus newProcessingStatus, Timestamp transitionTime) throws InvalidStatusTransitionException, SQLException
   {
      CallableStatement stmt = connection.prepareCall("{call DATA_ACCESS.SetProcessInstanceStatus(?,?,?)}");
      try
      {
         stmt.setInt(1, processInstance);
         stmt.setString(2, newProcessingStatus.toString());
         stmt.setTimestamp(3, transitionTime);
         stmt.execute();
      }
      catch(SQLException x)
      {
         int errorCode = x.getErrorCode();
         if (errorCode == InvalidStatusTransitionException.errorCode)
            throw new InvalidStatusTransitionException(x);
         else
            throw x;
      }
      finally
      {
         stmt.close();
      }
   }
ex.printStackTrace();
            }
       }

       return retVal;
   }
}

 

 

 

 

 

 

 Loading Java:

Code Block

%ORACLE_HOME%\bin\loadjava -user=GLAST_DP_TEST/BT33%%Q9]MU@glast-oracle02.slac.stanford.edu:1521:GLASTDEV -verbose -force -resolve %project_base%\src\main\java\org\glast\pipeline\server\sql\sp\*.java

 

Dropping Java:

 

Code Block

%ORACLE_HOME%\bin\dropjava -user "GLAST_DP_TEST/BT33%Q9]MU@glast-oracle02.slac.stanford.edu:1521:GLASTDEV" -verbose org.glast.pipeline.server.sql.sp.OraEnv 

 

 Publishing (previously loaded) Java:

No Format

set CLASSPATH=%ORACLE_HOME%\sqlj\lib\translator.jar;%ORACLE_HOME%\sqlj\lib\runtime12.jar;%ORACLE_HOME%\jdbc\lib\ojdbc14.jar;%ORACLE_HOME%\sqlj\lib\utl_dbws.jar;%ORACLE_HOME%\jdbc\lib\orai18n.jar;%ORACLE_HOME%\sqlj\runtime12ee.jar;%ORACLE_HOME%\jpub\lib\jpub.jar;%ORACLE_HOME%\sqlj\lib\sqljutl.jar

%ORACLE_HOME%\bin\jpub -user=glast_dp_test/BT33%%Q9]MU -url=jdbc:oracle:thin:@glast-oracle02.slac.stanford.edu:1521:GLASTDEV -java=org.glast.pipeline.server.sql.sp.* -package=org.glast.pipeline.server.sql.spclient -compile=false -dir=%project_base%\src\main\java\

 

 

 

 

 

Code Block

package org.glast.pipeline.server.sql.spclient;

public class SPStream
{
   public SPStream(java.sql.Connection conn) throws java.sql.SQLException
   { m_ctx = new sqlj.runtime.ref.DefaultContext(conn); }
// MORE GENERATED CODE HERE <clipped>    public java.lang.String calculateStreamStatus(int p0)
      throws java.lang.ClassNotFoundException
   {

         Object __jRt_0 = null;
         try {
         __jRt_0 = oracle.jpub.reflect.Client.invoke(_context(),null, "org.glast.pipeline.server.sql.sp.SPStream","calculateStreamStatus","I",new Object[]{new java.lang.Integer(p0)});
      }
      catch (java.lang.ClassNotFoundException e) {
         throw e;
      }
      catch (Throwable e) {
         e.printStackTrace();
      }
         return (java.lang.String)__jRt_0;
   }
}

 

 

 

Code Block

CREATE OR REPLACE PACKAGE SP_STREAM
AS
    -- Package-specific types:
    TYPE CURSOR IS REF CURSOR;

    -- public static String calculateStreamStatus(int stream)
    FUNCTION calculateStreamStatus(Stream_in IN number) RETURN varchar2;
END SP_STREAM;
/

CREATE OR REPLACE PACKAGE BODY SP_STREAM
AS
    FUNCTION calculateStreamStatus(Stream_in IN number) RETURN varchar2 IS
               LANGUAGE JAVA
               NAME 'org.glast.pipeline.server.sql.sp.SPStream.calculateStreamStatus(int) return java.lang.String';
END SP_STREAM;
/

 

 

   

 a