Mit dieser Anweisung erstellen Sie eine neue Webdienstfunktion in einer Datenbank. Hinweise zum Erstellen einer benutzerdefinierten SQL-Funktion finden Sie unter CREATE FUNCTION-Anweisung.
CREATE [ OR REPLACE ] FUNCTION [ Eigentümer.]Funktionsname ( [ Parameter, ... ] ) RETURNS Datentyp URL URL-Zeichenfolge [ HEADER Header-Zeichenfolge ] [ SOAPHEADER SOAP-Header-Zeichenfolge ] [ TYPE { 'HTTP[ :{ GET | POST[:MIME-Typ ] | PUT[:MIME-Typ ] | DELETE | HEAD } ]' | 'SOAP[:{ RPC | DOC } ]' } ] [ NAMESPACE Namespace-Zeichenfolge ] [ CERTIFICATE Zertifikat-Zeichenfolge ] [ CLIENTPORT Clientport-Zeichenfolge ] [ PROXY Proxy-Zeichenfolge ] [ SET Protokolloption-Zeichenfolge ]
URL-Zeichenfolge : '{ HTTP | HTTPS | HTTPS_FIPS }://[Benutzer:Kennwort@]Hostname[:Port][/Pfad]'
Parameter : [ IN ] Parametername Datentyp [ DEFAULT Ausdruck ]
CREATE FUNCTION Parameternamen müssen den Regeln für Datenbankbezeichner folgen. Sie müssen einen gültigen SQL-Datentyp umfassen und das Schlüsselwort IN kann vorangestellt werden. Dieses Präfix weist darauf hin, dass das Argument ein Ausdruck ist, welcher der Funktion einen Wert zur Verfügung stellt.
Wenn Funktionen ausgeführt werden, müssen nicht alle Parameter angegeben werden. Wenn in der CREATE FUNCTION-Anweisung ein Standardwert bereitgestellt wird, werden den fehlenden Parametern die Standardwerte zugeordnet. Falls kein Argument vom Aufrufer angegeben und kein Standardwert gesetzt ist, wird ein Fehler ausgegeben.
Wenn Sie OR REPLACE (CREATE OR REPLACE FUNCTION) angeben, wird eine neue Funktion erstellt oder eine bestehende Funktion mit demselben Namen ersetzt. Diese Klausel ändert die Definition der Funktion, lässt aber bestehende Berechtigungen unberührt. Sie können die OR REPLACE-Klausel nicht mit temporären Funktionen verwenden.
RETURNS-Klausel Mögliche Rückgabe-Datentypen: VARCHAR, BINARY, VARBINARY und LONG BINARY. Der Datentyp hat keinen Einfluss auf die Verarbeitung der HTTP-Antwort.
URL-Klausel Wird nur verwendet, wenn Sie eine Clientfunktion für HTTP- oder SOAP-Webdienste festlegen. Gibt die URL des Webdiensts an. Die optionalen Benutzernamen- und Kennwortparameter bieten eine Möglichkeit, die für die HTTP Basic Authentication erforderlichen Berechtigungsnachweise zu liefern. Die HTTP Basic Authentication Base-64 verschlüsselt die Benutzer- und Kennwortinformationen und übergibt sie an den Header "Authentication" der HTTP-Anforderung.
Die Angabe von HTTPS_FIPS zwingt das System, die FIPS-Bibliotheken zu verwenden. Wenn HTTPS_FIPS angegeben wird, aber keine FIPS-Bibliotheken vorhanden sind, werden stattdessen Nicht-FIPS-Bibliotheken verwendet.
HEADER-Klausel Wenn Sie HTTP-Webdienst-Clientfunktionen erstellen, verwenden Sie diese Klausel, um Headereinträge der HTTP-Anforderung hinzuzufügen oder zu ändern. Für HTTP-Header können nur druckbare ASCII-Zeichen angegeben werden, deren Groß- und Kleinschreibung nicht berücksichtigt wird. Weitere Hinweise zur Verwendung dieser Klausel finden Sie unter der HEADER-Klausel der CREATE PROCEDURE-Anweisung (Webdienste).
Weitere Hinweise zur Verwendung von HTTP-Headern finden Sie unter HTTP-Header verwenden.
SOAPHEADER-Klausel Wenn Sie einen SOAP-Webdienst als Funktion deklarieren, verwenden Sie diese Klausel, um einen oder mehrere Headereinträge der SOAP-Anforderung anzugeben. Ein SOAP-Header kann als statische Konstante deklariert oder dynamisch mithilfe des Parameterersetzungsmechanismus (IN-, OUT- oder INOUT-Parameter für hd1, hd2 etc. deklarieren) gesetzt werden. Eine Webdienstfunktion kann einen oder mehrere IN-Modus-Ersetzungsparameter definieren, aber keinen INOUT- oder OUT-Ersetzungsparameter. Weitere Hinweise zur Verwendung dieser Klausel finden Sie unter der SOAPHEADER-Klausel der CREATE PROCEDURE-Anweisung (Webdienste).
Weitere Hinweise zur Verwendung von SOAP-Headern finden Sie unter SOAP-Header verwenden.
TYPE-Klausel Wird zur Angabe des Formats verwendet, wenn Sie die Webdienstanforderung durchführen. Wenn SOAP angegeben oder keine TYPE-Klausel aufgenommen ist, wird der Standardtyp SOAP:RPC verwendet. HTTP impliziert HTTP:POST. Da SOAP-Anforderungen immer als XML-Dokumente gesendet werden, wird immer HTTP:POST zum Senden von SOAP-Anforderungen verwendet.
NAMESPACE-Klausel Gilt nur für SOAP-Clientfunktionen. Diese Klausel kennzeichnet den Methoden-Namespace, der üblicherweise sowohl bei SOAP:RPC- als auch bei SOAP:DOC-Anforderungen erforderlich ist. Der die Anforderung verarbeitende SOAP-Server verwendet diesen Namespace, um die Namen von Entitäten im Meldungshauptteil der SOAP-Anforderung zu interpretieren. Der Namespace kann anhand der WSDL-Beschreibung (WSDL = Web Services Description Language) des SOAP-Diensts ermittelt werden, die der Webdienstserver zur Verfügung stellt. Der Standardwert ist die URL der Funktion bis zur optionalen Pfadkomponente (die aber nicht eingeschlossen ist).
CERTIFICATE-Klausel Um eine sichere (HTTPS-)Anforderung durchführen zu können, muss der Client Zugriff auf das vom HTTPS-Server verwendete Zertifikat haben. Die benötigten Informationen werden in einer Zeichenfolge von durch Semikola getrennten Schlüssel/Werte-Paaren angegeben. Das Zertifikat kann in einer Datei abgelegt und der Name der Datei unter Verwendung des Dateischlüssels bereitgestellt werden. Sie können aber auch das ganze Zertifikat in einer Zeichenfolge platzieren. Beides ist jedoch nicht möglich. Folgende Schlüssel sind verfügbar:
Schlüssel | Abkürzung | Beschreibung |
---|---|---|
file | Der Dateiname des Zertifikats | |
certificate | cert | Das Zertifikat selbst |
company | co | Die im Zertifikat angegebene Organisation |
unit | Die im Zertifikat angegebene Organisationseinheit | |
name | Der im Zertifikat angegebene allgemeine Name |
Zertifikate sind nur bei Anforderungen erforderlich, die entweder an den HTTPS-Server gerichtet sind oder von einem nicht-sicheren zu einem sicheren Server umgeleitet werden können.
CLIENTPORT-Klausel Kennzeichnet die Portnummer, auf der die HTTP-Clientfunktion mithilfe von TCP/IP kommuniziert. Sie steht für Verbindungen zur Verfügung, die durch ein Firewall-Schutzsystem geleitet werden, da Firewalls entsprechend dem TCP/UDP-Port Filter anwenden. Die Klausel ist nur in diesem Fall empfehlenswert. Sie können eine einzelne Portnummer, Bereiche von Portnummern oder eine Kombination von beiden angeben, z.B. CLIENTPORT "85,90-97". Weitere Hinweise finden Sie unter ClientPort-Protokolloption [CPORT].
PROXY-Klausel Gibt den URI eines Proxyservers an. Wird verwendet, wenn der Client über einen Proxyserver auf das Netzwerk zugreifen muss. Diese Klausel zeigt an, dass die Funktion eine Verbindung zum Proxyserver herstellen soll, um die Anforderung durch ihn zum Webdienst zu senden.
Die CREATE FUNCTION-Anweisung erstellt eine Webdienstfunktion in der Datenbank. Eine Funktion kann für einen anderen Benutzer erstellt werden, indem der Name eines Eigentümers angegeben wird.
Der Rückgabetyp von SOAP- und HTTP-Funktionen muss einer der Zeichendatentypen sein, etwa VARCHAR. Der zurückgegebene Wert ist der Hauptteil der HTTP-Antwort. Es werden keine HTTP-Headerinformationen aufgenommen. Wenn weitere Informationen wie z.B. Statusinformationen benötigt werden, verwenden Sie eine Prozedur statt einer Funktion.
Parameterwerte werden als Teil der Anforderung weitergegeben. Die verwendete Syntax hängt vom Typ der Anforderung ab. Bei HTTP:GET werden die Parameter als Teil des URLs weitergegeben. Bei HTTP:POST-Anforderungen werden die Werte in den Hauptteil der Anforderung platziert. Parameter von SOAP-Anforderungen werden immer im Anforderungshauptteil gebündelt.
RESOURCE-Datenbankberechtigung ist erforderlich.
Externe Funktionen einschließlich Java-Funktionen erfordern DBA-Berechtigungen.
Automatisches Festschreiben (Autocommit).
SQL/2003 Persistent Stored Module-Funktion.
Die folgende Anweisung erstellt eine externe Funktion in Java:
CREATE FUNCTION encrypt( IN name char(254) ) RETURNS VARCHAR EXTERNAL NAME 'Scramble.encrypt (Ljava/lang/String;)Ljava/lang/String;' LANGUAGE JAVA; |
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 |