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

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » SQL の使用 » SQL 文 » SQL 文 (A ~ D)

 

CREATE FUNCTION 文 [Web サービス]

この文は、データベースに新しい Web サービス関数を作成するために使用します。ユーザ定義 SQL 関数の作成方法については、CREATE FUNCTION 文を参照してください。

CREATE [ OR REPLACE ] FUNCTION [ owner.]function-name ( [ parameter, ... ] )
RETURNS data-type
URL url-string
[ HEADER header-string ]
[ SOAPHEADER soap-header-string ]
[ TYPE { 
  'HTTP[ :{ GET | POST[:MIME-type ] | PUT[:MIME-type ] | DELETE | HEAD } ]' | 
  'SOAP[:{ RPC | DOC } ]' } ]
[ NAMESPACE namespace-string ]
[ CERTIFICATE certificate-string ]
[ CLIENTPORT clientport-string ]
[ PROXY proxy-string ]
[ SET protocol-option-string ]
url-string :
' { HTTP | HTTPS | HTTPS_FIPS }://[user:password@]hostname[:port][/path]'
parameter :
   [ IN ] parameter-name data-type [ DEFAULT expression ]
パラメータ
  • CREATE FUNCTION   パラメータ名は、データベース識別子に対するルールに従って付けてください。パラメータ名は、有効な SQL データ型にします。また、キーワード IN のプレフィクスを付けて、引数が関数に値を提供する式であることを示してください。

    関数を実行するときに、すべてのパラメータを指定する必要はありません。CREATE FUNCTION 文の中にデフォルト値がある場合、不明のパラメータにデフォルト値を割り当てます。呼び出すときに引数を指定せず、デフォルトも設定されていない場合には、エラーが発生します。

    OR REPLACE (CREATE OR REPLACE FUNCTION) を指定すると、新しい関数が作成されるか、同じ名前の既存の関数が置き換えられます。この句によって、関数の定義は変更されますが、既存のパーミッションは保持されます。OR REPLACE 句をテンポラリ関数で使用することはできません。

  • RETURNS 句   戻り値のデータ型には、VARCHAR、BINARY、VARBINARY、および LONG BINARY があります。データ型は HTTP 応答の処理方法には影響しません。

  • URL 句   HTTP または SOAP Web サービス・クライアント関数を定義する場合にのみ使用します。Web サービスの URL を指定します。オプションのユーザ名とパスワードのパラメータは、HTTP 基本認証に必要なクレデンシャルとして機能します。HTTP 基本認証は、ユーザとパスワードの情報を base-64 でエンコードし、HTTP 要求の Authentication ヘッダに渡します。

    HTTPS_FIPS を指定すると、強制的に FIPS ライブラリが使用されます。HTTPS_FIPS を指定したときに、FIPS ライブラリがない場合は、代わりに FIPS 以外のライブラリが使用されます。

  • HEADER 句   HTTP Web サービス・クライアント関数を作成する場合は、この句を使用して、HTTP 要求ヘッダのエントリを追加または変更します。HTTP ヘッダに指定できるのは印字可能な ASCII 文字のみで、大文字と小文字は区別されません。この句の使用法の詳細については、CREATE PROCEDURE 文 [Web サービス]の HEADER 句の説明を参照してください。

    HTTP ヘッダの使用の詳細については、HTTP ヘッダの使用を参照してください。

  • SOAPHEADER 句   SOAP Web サービスを関数として宣言する場合は、この句を使用して 1 つ以上の SOAP 要求ヘッダ・エントリを指定します。SOAP ヘッダは、静的定数として宣言したり、代入パラメータ・メカニズムを使用して動的に設定したりできます (hd1、hd2 などに IN、OUT、または INOUT パラメータを宣言)。Web サービス関数では、1 つ以上の IN モード代入パラメータを定義できますが、INOUT または OUT 代入パラメータは定義できません。この句の使用法の詳細については、CREATE PROCEDURE 文 [Web サービス]の SOAPHEADER 句の説明を参照してください。

    SOAP ヘッダの使用の詳細については、SOAP ヘッダの使用を参照してください。

  • TYPE 句   Web サービス要求を行う場合に使用するフォーマットを指定します。SOAP が指定されている場合、または type 句が含まれていない場合は、デフォルトのタイプである SOAP:RPC が使用されます。HTTP は HTTP:POST を暗黙的に指定します。SOAP 要求は常に XML 文書として送信されるため、SOAP 要求の送信には常に HTTP:POST が使用されます。

  • NAMESPACE 句   SOAP クライアント関数にのみ適用されます。この句は、SOAP:RPC 要求と SOAP:DOC 要求の両方に通常必要なメソッド・ネームスペースを識別します。要求を処理する SOAP サーバは、このネームスペースを使用して、SOAP 要求メッセージ本文内のエンティティの名前を解釈します。ネームスペースは、Web サービス・サーバから使用できる SOAP サービスの WSDL (Web Services Description Language) から取得できます。デフォルト値は、関数の URL のオプションのパス・コンポーネントの直前までです。

  • CERTIFICATE 句   安全な (HTTPS) 要求を行うには、HTTPS サーバで使用される証明書にクライアントがアクセスできる必要があります。必要な情報は、セミコロンで区切られたキー/値のペアの文字列で指定されます。証明書はファイルに置かれ、file キーを使用して提供されるファイルの名前、または証明書全体を文字列に配置できますが、両方は配置できません。次のキーを使用できます。

    キー 省略形 説明
    file 証明書のファイル名
    certificate cert 証明書自体
    company co 証明書で指定された会社
    unit 証明書で指定された会社の部署
    name 証明書で指定された通称

    証明書は、HTTPS サーバに対する要求、または安全でないサーバから安全なサーバにリダイレクトされる可能性がある要求に対してのみ必要です。

  • CLIENTPORT 句   HTTP クライアント関数が TCP/IP を使用して通信するポート番号を示します。この句は、ファイアウォールを介する通信のためのものであり、このような通信にのみおすすめします。ファイアウォールは TCP/UDP ポートに従ってフィルタします。単一のポート番号、ポート番号の範囲、または両方の組み合わせを指定できます。たとえば、CLIENTPORT '85,90-97' を指定できます。ClientPort プロトコル・オプション [CPORT]を参照してください。

  • PROXY 句   プロキシ・サーバの URI を指定します。クライアントがプロキシを介してネットワークにアクセスする場合に使用します。この句は、関数がプロキシ・サーバに接続し、そのプロキシ・サーバを介して Web サービスに要求を送信することを示します。

備考

CREATE FUNCTION 文は、データベースに Web サービス関数を作成します。所有者名を指定すれば、別のユーザに対する関数を作成できます。

SOAP 関数と HTTP 関数の戻り値の型は、VARCHAR などの文字データ型のどれかである必要があります。返される値は、HTTP 応答の本文です。HTTP ヘッダ情報は含まれません。ステータス情報などの他の情報が必要な場合は、関数ではなくプロシージャを使用します。

パラメータ値は、要求の一部として渡されます。使用される構文は、要求のタイプによって決まります。HTTP:GET の場合、パラメータは URL の一部として渡されます。HTTP:POST 要求の場合、値は要求の本文に置かれます。SOAP 要求へのパラメータは、常に要求本文にバンドルされます。

パーミッション

RESOURCE 権限。

DBA 権限 (Java 関数を含む外部関数に必要)。

関連する動作

オートコミット。

参照
標準と互換性
  • SQL/2003   永続的ストアド・モジュール機能。

次の文は、localhost 上で実行されている get_picture サービスからイメージを返す cli_test1 という名前の関数を作成します。

CREATE FUNCTION cli_test1( image LONG VARCHAR )
RETURNS LONG BINARY
URL 'http://localhost/get_picture' 
TYPE 'HTTP:GET';

次の文は、URL http://localhost/get_picture?image=widget の HTTP 要求を作成します。

SELECT cli_test1( 'widget' );

次の文は代入パラメータを使用して、入力パラメータとして要求 URL を渡すことができるようにします。CHUNK モードの転送エンコードをオフにするために、SET 句が使用されます。

CREATE FUNCTION cli_test2( image LONG VARCHAR, myurl LONG VARCHAR )
RETURNS LONG BINARY
URL '!myurl' 
TYPE 'HTTP:GET'
SET 'HTTP(CH=OFF)'
HEADER 'ASA-ID';

次の文は、URL http://localhost/get_picture?image=widget の HTTP 要求を作成します。

CREATE VARIABLE a_binary LONG BINARY
a_binary = cli_test2('widget', 'http://localhost/get_picture');
SELECT a_binary;