UTL_HTTP システムパッケージは、PL/SQL環境でHTTPおよびHTTPS通信を実現するためのシステムツールキットです。データベースが外部Webサービスと直接やり取りできるようにします。
説明
このシステムパッケージはV4.4.1バージョンから導入されました。
UTL_HTTPサブプログラムの概要
次の表は、OceanBaseデータベースの現在のバージョンでサポートされている UTL_HTTP サブプログラムとその簡潔な説明を示しています。
サブルーチン |
説明 |
|---|---|
| BEGIN_REQUEST | 指定されたURLにHTTP接続を確立し、そのURLにHTTPリクエストを送信して、req変数を返します |
| END_REQUEST | リクエストやその後の応答が完了しているかどうかにかかわらず、強制的にリクエストを閉じます。同時にHTTP接続も閉じます |
| GET_RESPONSE | HTTPリクエストの応答を取得するために使用されます |
| END_RESPONSE | HTTPリクエスト終了後に、HTTPリクエストの応答を終了するために使用されます |
| READ_LINE | HTTP応答ボディから1行のテキスト形式データを読み取ります |
| READ_RAW | HTTP応答ボディ内のバイナリデータを読み取るために使用されます |
| READ_TEXT | テキスト形式のデータを読み取るために使用されます |
| WRITE_LINE | HTTPリクエストボディに1行のテキストデータを書き込むために使用されます |
| WRITE_RAW | HTTPリクエストボディにバイナリデータを書き込むために使用されます |
| WRITE_TEXT | HTTPリクエストボディにテキストデータを書き込むために使用されます |
| SET_TRANSFER_TIMEOUT | HTTPデータ転送のタイムアウト時間の上限を設定するために使用されます |
| GET_TRANSFER_TIMEOUT | 現在のHTTPデータ転送のタイムアウト時間の上限を取得するために使用されます |
使用例
GETリクエストを送信する:
DECLARE
req UTL_HTTP.REQ;
resp UTL_HTTP.RESP;
url VARCHAR2(256) := 'https://api.example.com/data';
buf VARCHAR2(4000);
BEGIN
req := UTL_HTTP.BEGIN_REQUEST(url, 'GET');
resp := UTL_HTTP.GET_RESPONSE(req);
LOOP
UTL_HTTP.READ_TEXT(resp, buf);
DBMS_OUTPUT.PUT_LINE(buf);
END LOOP;
EXCEPTION
WHEN UTL_HTTP.END_OF_BODY THEN
UTL_HTTP.END_RESPONSE(resp);
END;