必要なパッケージ
UTL_HTTP
UTL_HTTP パッケージを使えば PL/SQL から HTTP 経由でデータを参照することができる。
-
UTL_HTTP
docs.oracle.com
DBMS_NETWORK_ACL_ADMIN
DBMS_NETWORK_ACL_ADMIN パッケージを使えばアクセス制御エントリを登録して、一般ユーザでも UTL_HTTP パッケージを使用してデータ参照ができるようになる。
-
DBMS_NETWORK_ACL_ADMIN
docs.oracle.com
実行例
以下の例では、SCOTT ユーザーに該当 Web サーバーへのアクセス権を付与してから、SCOTT ユーザーで http://xx.xx.xxx.xx:xxxxx/test.json へアクセスをしている。
SQL> BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => 'xx.xx.xxx.xx',
ace => xs$ace_type(privilege_list => xs$name_list('http'),
principal_name => 'scott',
principal_type => xs_acl.ptype_db)
);
END;
/
PL/SQLプロシージャが正常に完了しました。
SQL> conn scott/tiger
接続されました。
SQL> SELECT UTL_HTTP.REQUEST('xxxx://xx.xx.xxx.xx:xxxxx/test.json') FROM DUAL;
UTL_HTTP.REQUEST('HTTP://xx.xx.xxx.xx:xxxxx/TEST.JSON')
----------------------------------------------------------
{"Name":"New York", "Size":"2398472"}