無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

32.4. サーバ側の関数

これまで説明したクライアント側の関数それぞれに対応する、SQLから呼び出し可能なサーバ側の関数があります。 実際、ほとんどのクライアント側の関数は対応するサーバ側の関数に対する単なるインタフェースです。 SQLコマンドからの呼び出しが実際に有用な関数は、 lo_creat lo_create lo_unlink lo_import lo_export です。 これらの使用例を示します。

CREATE TABLE image (
    name            text,
    raster          oid
);

SELECT lo_creat(-1);       -- 新しい空のラージオブジェクトのOIDを返します

SELECT lo_create(43213);   -- OID43213でラージオブジェクトの生成を試行します

SELECT lo_unlink(173454);  -- OID 173454のラージオブジェクトを削除します

INSERT INTO image (name, raster)
    VALUES ('beautiful image', lo_import('/etc/motd'));

INSERT INTO image (name, raster)  -- 上と同じですが使用するOIDを指定します
    VALUES ('beautiful image', lo_import('/etc/motd', 68583));

SELECT lo_export(image.raster, '/tmp/motd') FROM image
    WHERE name = 'beautiful image';

サーバ側の lo_import および lo_export 関数の動作はクライアント側の関数とかなり異なります。 この2つの関数はサーバのファイルシステム上のファイルの読み書きを、データベースを所有するユーザの権限で行います。 したがって、これらの使用はスーパーユーザに限定されています。 対照的に、クライアント側のインポート関数とエクスポート関数はクライアントのファイルシステム上のファイルをクライアントプログラムの権限で読み書きします。 このクライアント側の関数はスーパーユーザ権限を必要としません。

また lo_read および lo_write の機能はサーバサイドの呼び出しを介しても利用することができます。 しかしサーバサイドの関数名はクライアント側のインタフェースとは異なり、アンダースコアが含まれません。 loread および lowrite としてこれらの関数を呼び出さなければなりません。


powered by SEO.CUG.NET