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 » SQL Anywhere Datenzugriff-APIs » SQL Anywhere-Webdienste

 

Mit Variablen arbeiten

Variable in HTTP-Anforderungen kommen aus einer von zwei Quellen. Zuerst kann die URL eine Abfragezeichenfolge enthalten, die mehrere Name=Wert-Paare enthält. HTTP GET-Anforderungen werden auf diese Art formatiert. Das folgende Beispiel zeigt eine URL, die eine Abfragezeichenfolge enthält.

http://localhost/gallery?picture=sunset.jpg

Die andere Art ist die URL-Pfad. Wenn Sie URL PATH auf ON oder ELEMENTS setzen, wird der Teil des Pfads, der auf den Dienstnamen folgt, als Variablenwert interpretiert. Mit dieser Option können URLs eine bestimmte Datei in einem bestimmten Verzeichnis anfordern, wie dies auf einer traditionellen dateibasierten Website der Fall wäre, und nicht Daten, die in einer Datenbank gespeichert sind. Im Folgenden finden Sie ein Beispiel.

http://localhost/gallery/sunset.jpg

Diese URL fordert die Datei sunset.jpg aus einem Verzeichnis namens "gallery" an. Der gallery-Dienst erhält diese Zeichenfolge als Parameter (möglicherweise um ein Bild aus einer Datenbanktabelle abzufragen).

Die in HTTP-Anforderungen übergebenen Parameter hängen von der Einstellung für URL PATH ab.

  • OFF   Keine Path-Parameter sind nach dem Dienstnamen zulässig.

  • ON   Alle Path-Elemente nach dem Dienstnamen werden der Variablen URL zugewiesen.

  • ELEMENTS   Der Rest des URL-Pfads wird beim Schrägstrich in eine Liste von bis zu 10 Elementen geteilt. Diese Werte werden den Variablen URL1, URL2, URL3, …, URL10 zugewiesen. Wenn weniger als 10 Werte vorhanden sind, werden die restlichen Variablen auf NULL gesetzt. Mehr als 10 Variable verursachen einen Fehler.

Abgesehen von dem Standort, an dem sie definiert werden, gibt es zwischen Variablen keine Unterschiede. Zugriff und Verwendung aller HTTP-Variablen erfolgt auf dieselbe Weise. Beispiel: Der Zugriff auf die Werte von Variablen wie URL1 erfolgt auf dieselbe Weise wie auf Parameter, die als Teil einer Abfrage erscheinen,wie z.B. ?picture=sunset.jpg.

Auf Variable zugreifen

Es gibt zwei Hauptmethoden, auf Variable zuzugreifen. Die erste besteht darin, Variable in der Anweisung der Dienstdeklaration zu erwähnen. Die folgende Anweisung übergibt beispielsweise den Wert mehrerer Variablen an die gespeichterte Prozedur ShowTable:

CREATE SERVICE ShowTable 
TYPE 'RAW'
AUTHORIZATION ON
AS CALL ShowTable( :user_name, :table_name, :limit, :start );

Die Zugriffsmethode besteht darin, die integrierten Funktionen NEXT_HTTP_VARIABLE und HTTP_VARIABLE innerhalb der gespeicherten Prozedur zu verwenden, die die Anforderung abwickelt. Wenn Sie nicht wissen, welche Variablen definiert sind, können Sie NEXT_HTTP_VARIABLE verwenden, um dies herauszufinden. Die Funktion HTTP_VARIABLE gibt die Variablenwerte zurück.

Die Funktion NEXT_HTTP_VARIABLE ermöglicht Ihnen die Iteration durch die Namen der definierten Variablen. Wenn Sie sie das erste Mal aufrufen, übergeben Sie den Wert NULL. Damit wird der Name einer Variablen zurückgegeben. Wenn Sie sie mehrmals aufeinanderfolgend aufrufen und jedes Mal den Namen der vorhergehenden Variablen übergeben, wird die nächste Variable zurückgegeben. Wenn der Name der letzten Variablen an diese Funktion übergeben wurde, gibt sie NULL zurück.

Diese Iteration durch die Variablennamen garantiert, dass jeder Variablenname exakt einmal zurückgegeben wird. Allerdings werden die Werte möglicherweise nicht in der Reihenfolge zurückgegeben, in der sie in der Abfrage vorkommen. Wenn Sie ein zweites Mal eine Iteration durch die Namen vornehmen, können sie in einer anderen Reihenfolge zurückgegeben werden.

Um den Wert jeder Variablen zu erhalten, benutzen Sie die HTTP_VARIABLE-Funktion. Der erste Parameter ist der Name der Variablen. Zusätzliche Parameter sind optional. Wenn mehrere Werte für eine Variable übergeben werden, gibt die Funktion den ersten Wert zurück, wenn nur ein Parameter übergeben wurde. Die Übergabe einer Ganzzahl als zweiten Parameter ermöglicht Ihnen den Abruf zusätzlicher Werte.

Der dritte Parameter ermöglicht Ihnen den Abruf der variablen Headerwerte aus mehrteiligen Anforderungen. Geben Sie den Namen eines Headerfeldes ein, um seinen Wert abzurufen. Beispiel: Die folgenden SQL-Anweisungen rufen drei Variablenwerte und dann die Headerwerte der Variablen "image" ab.

SET v_id = HTTP_VARIABLE( 'ID' );
SET v_title = HTTP_VARIABLE( 'Title' );
SET v_descr = HTTP_VARIABLE( 'descr' );
SET v_name = HTTP_VARIABLE( 'image', NULL, 'Content-Disposition' );
SET v_type = HTTP_VARIABLE( 'image', NULL, 'Content-Type' );
SET v_image = HTTP_VARIABLE( 'image', NULL, '@BINARY' );

Das folgende Beispiel verwendet die Funktion HTTP_VARIABLE, um die den Variablen zugewiesenen Werte abzurufen. Dies ist eine geänderte Version des Dienstes ShowSalesOrderDetail, der in einem früheren Abschnitt beschrieben wurde.

CREATE PROCEDURE ShowDetail()
BEGIN
    DECLARE v_customer_id LONG VARCHAR;
    DECLARE v_product_id LONG VARCHAR;
    SET v_customer_id = HTTP_VARIABLE( 'customer_id' );
    SET v_product_id = HTTP_VARIABLE( 'product_id' );
    CALL ShowSalesOrderDetail( v_customer_id, v_product_id );
END;

Im Folgenden ist der Dienst angegeben, der die gespeicherte Prozedur aufruft:

CREATE SERVICE ShowDetail
TYPE 'HTML'
URL PATH OFF
AUTHORIZATION OFF
USER DBA 
AS CALL ShowDetail();

Öffnen Sie einen Webbrowser und geben Sie den folgenden URL an, um den Dienst zu testen:

[external link] http://localhost:80/demo/ShowDetail?product_id=300&customer_id=101

Weitere Hinweise zur Parameterübergabe finden Sie unter Wie URLs interpretiert werden und Webdienstfunktionen.