Für den Zugriff auf die Java-Methoden in der Klasse müssen Sie gespeicherte Prozeduren oder Funktionen erstellen, die als Wrapper für die Methoden in der Klasse dienen.
Erstellen Sie die folgende gespeicherte SQL-Prozedur, um die Methode Invoice.main in der Beispielklasse aufzurufen:
CREATE PROCEDURE InvoiceMain( IN arg1 CHAR(50) ) EXTERNAL NAME 'Invoice.main([Ljava/lang/String;)V' LANGUAGE JAVA; |
Diese gespeicherte Prozedur agiert als Wrapper für die Java-Methode.
Führen Sie die gespeicherte Prozedur aus, um die Java-Methode aufzurufen:
CALL InvoiceMain('to you'); |
In der Datenbankserver-Konsole bzw. im Fenster "Datenbankservermeldungen" wird die Meldung "Hello to you" angezeigt. Der Datenbankserver hat die Ausgabe von System.out dorthin umgeleitet
Im Folgenden werden weitere Beispiele für den Aufruf von Java-Methoden, die Übergabe von Argumenten und die Rückgabe von Werten gegeben.
Erstellen Sie die folgenden gespeicherten SQL-Prozeduren, um Argumente zu übergeben und Rückgabewerte von den Java-Methoden in der Invoice-Klasse abzufragen:
-- Invoice.init takes a string argument (Ljava/lang/String;) -- a double (D), a string argument (Ljava/lang/String;), and -- another double (D), and returns nothing (V) CREATE PROCEDURE init( IN arg1 CHAR(50), IN arg2 DOUBLE, IN arg3 CHAR(50), IN arg4 DOUBLE) EXTERNAL NAME 'Invoice.init(Ljava/lang/String;DLjava/lang/String;D)V' LANGUAGE JAVA; -- The Java methods below take no arguments and return a double (D) -- or a string (Ljava/lang/String;) CREATE FUNCTION rateOfTaxation() RETURNS DOUBLE EXTERNAL NAME 'Invoice.rateOfTaxation()D' LANGUAGE JAVA; CREATE FUNCTION totalSum() RETURNS DOUBLE EXTERNAL NAME 'Invoice.totalSum()D' LANGUAGE JAVA; CREATE FUNCTION getLineItem1Description() RETURNS CHAR(50) EXTERNAL NAME 'Invoice.getLineItem1Description()Ljava/lang/String;' LANGUAGE JAVA; CREATE FUNCTION getLineItem1Cost() RETURNS DOUBLE EXTERNAL NAME 'Invoice.getLineItem1Cost()D' LANGUAGE JAVA; CREATE FUNCTION getLineItem2Description() RETURNS CHAR(50) EXTERNAL NAME 'Invoice.getLineItem2Description()Ljava/lang/String;' LANGUAGE JAVA; CREATE FUNCTION getLineItem2Cost() RETURNS DOUBLE EXTERNAL NAME 'Invoice.getLineItem2Cost()D' LANGUAGE JAVA; |
Die Deskriptoren für Argumente und Rückgabwerte von Java-Methoden haben die folgende Bedeutung:
Feldtyp | Java-Datentyp |
---|---|
B | byte |
C | char |
D | double |
F | float |
I | int |
J | long |
L Klassenname; | Eine Instanz der Klasse Klassenname. Die Klasse muss voll qualifiziert sein und alle Punkte im Namen müssen durch das Zeichen / ersetzt werden. Beispiel: java/lang/String. |
S | short |
V | void |
Z | Boolescher Wert |
[ | Verwenden Sie jeweils eine für jede Array-Dimension. |
Rufen Sie die gespeicherte Prozedur auf, die als Wrapper für den Aufruf der Java-Methode dient:
CALL init('Shirt',10.00,'Jacket',25.00); SELECT getLineItem1Description() as Item1, getLineItem1Cost() as Item1Cost, getLineItem2Description() as Item2, getLineItem2Cost() as Item2Cost, rateOfTaxation() as TaxRate, totalSum() as Cost; |
Die Abfrage liefert sechs Spalten mit den folgenden Werten:
Item1 | Item1Cost | Item2 | Item2Cost | TaxRate | Cost |
---|---|---|---|---|---|
Shirt | 10 | Jacket | 25 | 0.15 | 40.25 |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |