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

SQL Anywhere 12.0.0 (Deutsch) » SQL Anywhere Server - Programmierung » Java in der Datenbank

 

Auf Felder und Methoden des Java-Objekts zugreifen

Im Folgenden werden weitere Beispiele für den Aufruf von Java-Methoden, die Übergabe von Argumenten und die Rückgabe von Werten gegeben.

 ♦  So erstellen Sie gespeicherte Prozeduren bzw. Funktionen für die Methoden in der Klasse Invoice
  1. 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 (externe Prozeduren) und CREATE FUNCTION-Anweisung (externe Prozeduren).

  2. 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