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.
Achten Sie darauf, dass die Java-Methode als öffentlich und statisch in einer öffentlichen Klasse deklariert wird.
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.
In der Methode erstellen Sie erst eine Instanz von java.sql.ResultSet und ordnen sie dann einem der ResultSet[]-Parameter zu.
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).
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.
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |