Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - Programmierung » Java in der Datenbank » Java-Unterstützung in SQL Anywhere » Besondere Funktionen von Java-Klassen in der Datenbank

 

Ergebnismengen aus Java-Methoden zurückgeben

Dieser Abschnitt beschreibt, wie Ergebnismengen aus Java-Methoden verfügbar gemacht werden. Sie müssen eine Java-Methode schreiben, die eine Ergebnismenge an die aufrufende Umgebung zurückgibt, und diese Methode in eine in SQL geschriebene gespeicherte Prozedur einbauen, die als EXTERNAL NAME of LANGUAGE JAVA deklariert sein muss.

♦  So werden Ergebnismengen aus einer Java-Methode zurückgegeben
  1. Achten Sie darauf, dass die Java-Methode als öffentlich und statisch in einer öffentlichen Klasse deklariert wird.

  2. Für jede Ergebnismenge, die die Methode zurückgeben soll, muss die Methode einen Parameter vom Typ java.sql.ResultSet[] haben. Diese Ergebnismengen-Parameter müssen am Ende der Parameterliste stehen.

  3. In der Methode erstellen Sie erst eine Instanz von java.sql.ResultSet und ordnen sie dann einem der ResultSet[]-Parameter zu.

  4. Erstellen Sie eine in SQL geschriebene gespeicherte Prozedur des Typs EXTERNAL NAME LANGUAGE JAVA. Dieser Prozedurtyp ist ein Wrapper für eine Java-Methode. Sie können einen Cursor für die Ergebnismenge der SQL-Prozedur auf dieselbe Weise verwenden wie jede andere Prozedur, die Ergebnismengen zurückgibt.

    Hinweise zur Syntax für gespeicherte Prozeduren, die als Wrapper für Java-Methoden verwendet werden, finden Sie unter CREATE PROCEDURE-Anweisung (Webdienste).

Beispiel

Die folgende Beispielklasse hat eine einzige Methode, die eine Abfrage ausführt und die Ergebnismenge an die aufrufende Umgebung zurückgibt.

import java.sql.*;

public class MyResultSet 
{
  public static void return_rset( ResultSet[] rset1 )
       throws SQLException 
  {
    Connection conn = DriverManager.getConnection(
                       "jdbc:default:connection" );
    Statement stmt = conn.createStatement();
    ResultSet rset =
      stmt.executeQuery (
                       "SELECT Surname " +
                       "FROM Customers" );
    rset1[0] = rset;
  }
}

Die Ergebnismenge wird in SQL mit der Anweisung CREATE PROCEDURE exponiert, womit die Anzahl der von der Prozedur zurückgegebenen Ergebnismengen und die Signatur der Java-Methode angezeigt werden.

Eine Anweisung vom Typ CREATE PROCEDURE, die eine Ergebnismenge anzeigt, könnte wie folgt definiert werden:

CREATE PROCEDURE result_set()
  DYNAMIC RESULT SETS 1
  EXTERNAL NAME
     'MyResultSet.return_rset([Ljava/sql/ResultSet;)V'
  LANGUAGE JAVA

Ein Cursor kann für diese Prozedur genauso wie für andere SQL Anywhere-Prozeduren geöffnet werden, die Ergebnismengen zurückgeben.

Die Zeichenfolge ([Ljava/sql/ResultSet;)V ist eine Java-Methodensignatur, also eine kompakte Zeichendarstellung der Anzahl und der Typen der Parameter und Rückgabewerte.

Weitere Hinweise zu Java-Methodensignaturen finden Sie unter CREATE PROCEDURE-Anweisung (Webdienste).

Weitere Hinweise zur Rückgabe von Ergebnismengen finden Sie unter Ergebnismengen liefern.