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; -- Invoice.rateOfTaxation take no arguments () -- and returns a double (D) CREATE FUNCTION rateOfTaxation() RETURNS DOUBLE EXTERNAL NAME 'Invoice.rateOfTaxation()D' LANGUAGE JAVA; -- Invoice.rateOfTaxation take no arguments () -- and returns a double (D) CREATE FUNCTION totalSum() RETURNS DOUBLE EXTERNAL NAME 'Invoice.totalSum()D' LANGUAGE JAVA; -- Invoice.getLineItem1Description take no arguments () -- and returns a string (Ljava/lang/String;) CREATE FUNCTION getLineItem1Description() RETURNS CHAR(50) EXTERNAL NAME 'Invoice.getLineItem1Description()Ljava/lang/String;' LANGUAGE JAVA; -- Invoice.getLineItem1Cost take no arguments () -- and returns a double (D) CREATE FUNCTION getLineItem1Cost() RETURNS DOUBLE EXTERNAL NAME 'Invoice.getLineItem1Cost()D' LANGUAGE JAVA; -- Invoice.getLineItem2Description take no arguments () -- and returns a string (Ljava/lang/String;) CREATE FUNCTION getLineItem2Description() RETURNS CHAR(50) EXTERNAL NAME 'Invoice.getLineItem2Description()Ljava/lang/String;' LANGUAGE JAVA; -- Invoice.getLineItem2Cost take no arguments () -- and returns a double (D) 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. Zum Beispiel, java/lang/String. |
S | short |
V | void |
Z | Boolescher Wert |
[ | Verwenden Sie jeweils eine für jede Array-Dimension. |
Weitere Hinweise zur Syntax dieser Anweisungen finden Sie unter CREATE PROCEDURE-Anweisung (Webdienste) und CREATE FUNCTION-Anweisung (Webdienste).
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. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |