この文は、HTTP 要求または SOAP 要求を作成する Web サービス・クライアント・プロシージャを作成するために使用します。SQL プロシージャの作成方法については、CREATE PROCEDURE 文を参照してください。
CREATE [ OR REPLACE ] PROCEDURE [ owner.]procedure-name ( [ parameter, ... ] ) URL url-string [ TYPE { http-type-spec-string | soap-type-spec-string } ] [ HEADER header-string ] [ CERTIFICATE certificate-string ] [ CLIENTPORT clientport-string ] [ PROXY proxy-string ] [ SET protocol-option-string ] [ SOAPHEADER soap-header-string ] [ NAMESPACE namespace-string ]
http-type-spec-string : HTTP[: { GET | POST[:MIME-type ] | PUT[:MIME-type ] | DELETE | HEAD } ]
soap-type-spec-string : SOAP[:{ RPC | DOC }
parameter :
parameter-mode parameter-name data-type [ DEFAULT expression ]
parameter-mode : IN | OUT | INOUT
url-string : { HTTP | HTTPS | HTTPS_FIPS }://[user:password@]hostname[:port][/path]
protocol-option-string
[ http-option-list]
[, soap-option-list ]
http-option-list : HTTP( [ CH[UNK]={ ON | OFF | AUTO } ] [; VER[SION]={ 1.0 | 1.1 } ] )
soap-option-list: SOAP(OP[ERATION]=soap-operation-name)
CREATE PROCEDURE Web サービス・クライアント・プロシージャの作成または置き換えができます。PROC は PROCEDURE の同義語として使用できます。
SOAP 要求の場合、プロシージャ名はデフォルトで SOAP 操作名として使用されます。詳細については、後述の SET 句の説明を参照してください。
パラメータ名は、カラム名など他のデータベース識別子に対するルールに従って付けてください。これらは有効な SQL データ型にする必要があります。有効なデータ型のリストについては、SQL データ型を参照してください。FLOAT、INT などの型指定のあるデータの転送をサポートするのは SOAP 要求のみです。HTTP 要求は文字列の転送のみサポートしているため、CHAR 型に制限されます。サポートされている SOAP 型の詳細については、データ型の使用と構造化されたデータ型の使用を参照してください。
パラメータには、IN、OUT、INOUT のいずれかのキーワードをプレフィクスとして付けることができます。これらの値のいずれも指定しない場合、パラメータはデフォルトで INOUT になります。キーワードには次の意味があります。
IN このパラメータは、プロシージャに値を与える式です。
OUT このパラメータは、プロシージャから値を受け取ることがある変数です。
INOUT このパラメータはプロシージャに値を与え、プロシージャから新しい値を受け取ることがある変数です。
CALL 文を使ってプロシージャを実行する場合、必ずしもすべてのパラメータを指定する必要はありません。CREATE PROCEDURE 文の中にデフォルト値がある場合、不明のパラメータにデフォルト値を割り当てます。CALL に引数が指定されておらず、デフォルトも設定されていない場合には、エラーが発生します。
OR REPLACE (CREATE OR REPLACE PROCEDURE) を指定すると、新しいプロシージャが作成されるか、同じ名前の既存のプロシージャが置き換えられます。この句によって、プロシージャの定義は変更されますが、既存のパーミッションは保持されます。使用中のプロシージャを置き換えようとすると、エラーが返されます。TEMPORARY Web サービス・プロシージャを作成することはできません。
URL 句 Web サービスの URI を指定します。オプションのユーザ名とパスワードのパラメータは、HTTP 基本認証に必要なクレデンシャルとして機能します。HTTP 基本認証は、ユーザとパスワードの情報を base-64 でエンコードし、HTTP 要求の Authentication ヘッダに渡します。この方法で指定すると、ユーザ名とパスワードは URL の一部として暗号化されずに渡されます。
URI スキームとして HTTPS を指定すると、プロシージャが SSL (セキュア・ソケット・レイヤ) 経由のセキュリティ保護された通信に対応できるよう設定されます。このような URI は、サーバを認証し、セキュリティ保護されたデータ・チャネルを確立するために、適切な CERTIFICATE 句を必要とします。
HTTPS_FIPS を指定すると、強制的に FIPS ライブラリが使用されます。HTTPS_FIPS を指定したときに、FIPS ライブラリがない場合は、代わりに FIPS 以外のライブラリが使用されます。
この方法で指定すると、ユーザ名とパスワードは URL の一部として暗号化されずに渡されます。
TYPE 句 Web サービス要求を行う場合に使用するフォーマットを指定します。SOAP が指定されている場合、または type 句が含まれていない場合は、デフォルトのタイプである SOAP:RPC が使用されます。HTTP は HTTP:POST を暗黙的に指定します。SOAP 要求は常に XML 文書として送信されるため、SOAP 要求の送信には常に HTTP:POST が使用されます。Web サービス・クライアント関数とプロシージャの作成を参照してください。
HEADER 句 HTTP Web サービス・クライアント・プロシージャを作成する場合は、この句を使用して、HTTP 要求ヘッダのエントリを追加、変更、または削除します。ヘッダの仕様は、RFC2616 Hypertext Transfer Protocol — HTTP/1.1 および RFC822 Standard for ARPA Internet Text Messages に非常に近いものになっています。たとえば、HTTP ヘッダに指定できるのは印字可能な ASCII 文字のみで、大文字と小文字は区別されません。
HTTP ヘッダの使用の詳細については、HTTP ヘッダの使用を参照してください。
CERTIFICATE 句 安全な (HTTPS) 要求を行うには、HTTPS サーバで使用される証明書にクライアントがアクセスできる必要があります。必要な情報は、セミコロンで区切られたキー/値のペアの文字列で指定されます。証明書はファイルに置かれ、file キーを使用して提供されるファイルの名前、または証明書全体を文字列に配置できますが、両方は配置できません。次のキーを使用できます。
キー | 省略形 | 説明 |
---|---|---|
file | 証明書のファイル名 | |
certificate | cert | 証明書自体 |
company | co | 証明書で指定された会社 |
unit | 証明書で指定された会社の部署 | |
name | 証明書で指定された通称 |
証明書は、HTTPS サーバに対する要求、または安全でないサーバから安全なサーバにリダイレクトされる可能性がある要求に対してのみ必要です。
CLIENTPORT 句 HTTP クライアント・プロシージャが TCP/IP を使用して通信するポート番号を識別します。これは「送信」TCP/IP 接続をフィルタするファイアウォール経由で接続するためのもので、この用途にかぎり推奨されています。単一のポート番号、ポート番号の範囲、または両方の組み合わせを指定できます。たとえば、CLIENTPORT '85,90-97' を指定できます。ClientPort プロトコル・オプション [CPORT]を参照してください。
PROXY 句 プロキシ・サーバの URI を指定します。クライアントがプロキシを介してネットワークにアクセスする場合に使用します。プロシージャがプロキシ・サーバに接続し、そのプロキシ・サーバを介して Web サービスに要求を送信することを示します。
SET 句 HTTP および SOAP のプロトコル固有の動作オプションを指定します。次の表に、サポートされている SET オプションを示します。CHUNK と VERSION は、HTTP プロトコルに適用されます。OPERATION は、SOAP プロトコルに適用されます。この句では、パラメータの代入がサポートされています。
'HTTP(CH[UNK]=option)' (HTTP または SOAP) このオプションでは、チャンクを使用するかどうかを指定します。チャンクを使用すると、HTTP メッセージを複数の部分に分割できます。可能な値は、ON (常にチャンクを使用)、OFF (チャンクは使用しない)、AUTO (内容が 8196 バイトを超えた場合にのみチャンクを使用、ただし自動生成されたマークアップを除く) です。たとえば、次の SET 句を使用すると、チャンクは有効になります。
SET 'HTTP(CHUNK=ON)' |
CHUNK オプションを指定しないときの、デフォルトの動作は AUTO です。チャンクされた要求が AUTO モードのときに、ステータスが 505 (HTTP Version Not Supported) または 501 (Not Implemented) または 411 (Length Required) で失敗した場合、クライアントはチャンクされた転送コーディングなしで要求をリトライします。
チャンクされた転送コーディングによる要求を HTTP サーバがサポートしない場合は、CHUNK オプションを OFF (チャンクを使用しない) に設定してください。
CHUNK モードは HTTP バージョン 1.1 からサポートされる転送エンコードです。CHUNK を ON に設定する場合、バージョン (VER) が 1.1 に設定される必要がありますが、デフォルトのバージョンとして 1.1 を使用する場合は、VER に何も設定しないでください。
' HTTP(VER[SION]=ver)' (HTTP または SOAP) このオプションでは、HTTP メッセージのフォーマットに使用する HTTP プロトコルのバージョンを指定します。たとえば、次の SET 句は HTTP のバージョンを 1.1 に設定します。
SET 'HTTP(VERSION=1.1)' |
可能な値は 1.0 と 1.1 です。VERSION が指定されていない場合は、次のようになります。
CHUNK が ON に設定された場合、1.1 が HTTP バージョンとして使用される
CHUNK が OFF に設定された場合、1.0 が HTTP バージョンとして使用される
CHUNK が AUTO に設定された場合、クライアントが CHUNK モードで送信しているかどうかによって 1.0 か 1.1 が使用される
' SOAP(OP[ERATION]=soap-operation-name) (SOAP のみ) このオプションでは、SOAP 操作の名前を指定します (作成しているプロシージャの名前と異なる場合)。OPERATION の値は、リモート・プロシージャ・コールの名前に似ています。たとえば、login という SOAP 操作を呼び出す accounts_login というプロシージャを作成する場合は、次のように指定します。
CREATE PROCEDURE accounts_login( name LONG VARCHAR, pwd LONG VARCHAR ) SET 'SOAP(OPERATION=login)' |
OPERATION オプションを指定しない場合、SOAP 操作の名前は、作成するプロシージャの名前と一致する必要があります。
複数の protocol-option 設定を 1 つの SET 句で組み合わせると、次の文のようになります。
CREATE PROCEDURE accounts_login( name LONG VARCHAR, pwd LONG VARCHAR ) SET 'HTTP ( CHUNK=ON; VERSION=1.1 ), SOAP( OPERATION=login )' ... |
SOAPHEADER 句 (SOAP フォーマットのみ) SOAP Web サービスをプロシージャとして宣言する場合は、この句を使用して 1 つ以上の SOAP 要求ヘッダ・エントリを指定します。SOAP ヘッダは、静的定数として宣言したり、代入パラメータ・メカニズムを使用して動的に設定したりできます (hd1、hd2 などに IN、OUT、または INOUT パラメータを宣言)。Web サービス・プロシージャでは、1 つ以上の IN モード代入パラメータと、1 つの INOUT または OUT 代入パラメータを定義できます。
次の例は、クライアントが、いくつかのヘッダ・エントリをパラメータを使用して送信し、応答 SOAP ヘッダ・データを受信するよう指定する方法を示しています。
CREATE PROCEDURE soap_client (INOUT hd1 LONG VARCHAR, IN hd2 LONG VARCHAR, IN hd3 LONG VARCHAR) URL 'localhost/some_endpoint' SOAPHEADER '!hd1!hd2!hd3'; |
SOAP ヘッダの使用の詳細については、SOAP ヘッダの使用を参照してください。
NAMESPACE 句 (SOAP フォーマットのみ) この句は、SOAP:RPC 要求と SOAP:DOC 要求の両方に通常必要なメソッド・ネームスペースを示します。要求を処理する SOAP サーバは、このネームスペースを使用して、SOAP 要求メッセージ本文内のエンティティの名前を解釈します。ネームスペースは、Web サービス・サーバから使用できる SOAP サービスの WSDL (Web Services Description Language) から取得できます。デフォルト値は、プロシージャの URL のオプションのパス・コンポーネントの直前までです。SOAP ネームスペースの使用の詳細については、構造化されたデータ型の使用を参照してください。
例を含む Web サービスを作成する詳細については、SQL Anywhere Web サービスを参照してください。
パラメータ値は、要求の一部として渡されます。使用される構文は、要求のタイプによって決まります。HTTP:GET の場合、パラメータは URL の一部として渡されます。HTTP:POST 要求の場合、値は要求の本文に置かれます。SOAP 要求へのパラメータは、常に要求本文にバンドルされます。
RESOURCE 権限が必要です。
別のユーザのプロシージャを作成するには、DBA 権限が必要です。
オートコミット。
SQL/2003 永続的ストアド・モジュール機能。Java 結果セットの構文拡張は、オプションの J621 機能に指定されています。
次の例は、FtoC という Web サービス・クライアント・プロシージャを作成します。
CREATE PROCEDURE FtoC( IN temperature FLOAT, INOUT inoutheader LONG VARCHAR, IN inheader LONG VARCHAR ) URL 'http://localhost:8082/FtoCService' TYPE 'SOAP:DOC' SOAPHEADER '!inoutheader!inheader'; |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |