B Oracle Multimediaの拡張

この付録では、Oracle Multimediaオブジェクト型を拡張するための様々な方法について説明します。

注意:

Oracle Multimediaオブジェクト型を拡張して新しいソース・タイプや新しいフォーマット・タイプをサポートする機能は、現在のリリースで非推奨となり、将来のリリースでサポートされなくなる可能性があります。非推奨となった機能の使用はできるだけ早く中止することをお薦めします。

Oracle Multimediaオブジェクト型を拡張し、次の機能をサポートできます。

  • 現在サポートされていないその他の外部ソースのメディア・データ

  • 現在サポートされていないその他のメディア・データ・フォーマット

  • メディア(オーディオおよびビデオ)データの処理

独自の外部メディア・データ・ソースや独自のORDAudio、ORDVideoまたはORDDocデータ・フォーマットをサポートするには、次の作業を行う必要があります。

  1. 新しいデータ・ソースあるいは新しいORDAudio、ORDVideoまたはORDDocデータ・フォーマットを設計します。

  2. 新しいデータ・ソースあるいは新しいORDAudio、ORDVideoまたはORDDocデータ・フォーマットを実装します。

  3. 新しいソース・パッケージをORDPLUGINSスキーマにインストールします。

  4. 新しいソース・パッケージに対するEXECUTE権限をPUBLICに付与します。

この付録の内容は次のとおりです。

B.1 その他の外部ソースのサポート

新しいソース・パッケージを実装することで、新しい外部データ・ソースをサポートするようにOracle Multimediaオブジェクト型を拡張できます。

新しいデータ・ソースを実装するには、ORDPLUGINSスキーマ内のORDX_<srcType>_SOURCEパッケージに必要なインタフェースを実装します(<srcType>は、新しい外部ソース・タイプの名前です)。「Oracle Multimediaの拡張による新しいデータ・ソースのサポート」で示されているパッケージ本体の例をテンプレートとして使用して、パッケージ本体を作成します。その後、setSourceInformation( )コールのソース・タイプ・パラメータに適切なソース値を設定して、ORDAudio、ORDImage、ORDDocまたはORDVideoオブジェクトに対し、ORDPLUGINS.ORDX_<srcType>_SOURCEパッケージを使用する必要があることを示します。他の外部オーディオ、イメージ、ビデオまたはその他の異機種間メディア・データ・ソースをサポートするように拡張する場合は、ORDPLUGINS.ORDX_FILE_SOURCEおよびORDPLUGINS.ORDX_HTTP_SOURCEパッケージを指針として使用します。

次のサブセクションでは、事前定義済およびユーザー定義のパッケージに関するリファレンス情報を示します。

B.1.1 外部ソース・パッケージ

自分のPL/SQLパッケージにORDX_<name>_<module_name>という名前を付けます。ここで、<module_name>はORDSourceのSOURCEです。ORDPLUGINS.ORDX_FILE_SOURCEおよびORDPLUGINS.ORDX_HTTP_SOURCEパッケージを、新しいソース・タイプ・パッケージを開発する際の指針として使用します。

たとえば、ORDPLUGINS.ORDX_FILE_SOURCEパッケージで示されているFILEソース・タイプ・パッケージの名前はORDX_FILE_SOURCE、ORDPLUGINS.ORDX_HTTP_SOURCEパッケージで示されているHTTPソース・タイプ・パッケージの名前はORDX_HTTP_SOURCEで、<name>はソース・タイプです。ソース・タイプ名FILEおよびHTTPはどちらもOracle用に予約されています。

次の各項では、オーディオ、イメージ、ビデオまたはその他の異機種間メディア・データのサポートされる外部ソースの拡張に関する例と詳細情報を示します。

B.1.1.1 ORDPLUGINS.ORDX_FILE_SOURCEパッケージ

ORDPLUGINS.ORDX_FILE_SOURCEパッケージは、データベース外部のローカル・ファイル・システムに格納されたマルチメディアをサポートします。

ORDPLUGINS.ORDX_FILE_SOURCEパッケージは、次のように定義されます。

CREATE OR REPLACE PACKAGE ORDX_FILE_SOURCE AS
  -- functions/procedures
  FUNCTION processCommand(obj     IN OUT NOCOPY ORDSYS.ORDSource,
                          ctx     IN OUT RAW,
                          cmd     IN VARCHAR2,
                          arglist IN VARCHAR2,
                          result  OUT RAW)
           RETURN RAW;
  PROCEDURE import(obj      IN OUT NOCOPY ORDSYS.ORDSource,
                   ctx      IN OUT RAW,
                   mimetype OUT VARCHAR2,
                   format   OUT VARCHAR2);
  PROCEDURE import(obj      IN OUT NOCOPY ORDSYS.ORDSource,
                   ctx      IN OUT RAW,
                   dlob     IN OUT NOCOPY BLOB,
                   mimetype OUT VARCHAR2,
                   format   OUT VARCHAR2);
  PROCEDURE importFrom(obj      IN OUT NOCOPY ORDSYS.ORDSource,
                       ctx      IN OUT RAW,
                       mimetype OUT VARCHAR2,
                       format   OUT VARCHAR2,
                       loc      IN VARCHAR2,
                       name     IN VARCHAR2);
  PROCEDURE importFrom(obj      IN OUT NOCOPY ORDSYS.ORDSource,
                       ctx      IN OUT RAW,
                       dlob     IN OUT NOCOPY BLOB,
                       mimetype OUT VARCHAR2,
                       format   OUT VARCHAR2,
                       loc      IN VARCHAR2,
                       name     IN VARCHAR2);
  PROCEDURE export(obj  IN OUT NOCOPY ORDSYS.ORDSource,
                   ctx  IN OUT RAW,
                   slob IN OUT NOCOPY BLOB,
                   loc  IN VARCHAR2,
                   name IN VARCHAR2);
  FUNCTION  getContentLength(obj  IN ORDSYS.ORDSource,
                             ctx  IN OUT RAW),
            RETURN INTEGER;
  PRAGMA RESTRICT_REFERENCES(getContentLength, WNDS, WNPS, RNDS, RNPS);
  FUNCTION  getSourceAddress(obj  IN ORDSYS.ORDSource,
                             ctx  IN OUT RAW,
                             userData IN VARCHAR2)
            RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(getSourceAddress, WNDS, WNPS, RNDS, RNPS);
  
  FUNCTION open(obj IN OUT NOCOPY ORDSYS.ORDSource, 
           userArg IN RAW, 
           ctx OUT RAW) RETURN INTEGER;
  FUNCTION close(obj IN OUT NOCOPY ORDSYS.ORDSource, ctx IN OUT RAW) 
         RETURN INTEGER;
  FUNCTION trim(obj IN OUT NOCOPY ORDSYS.ORDSource, 
                ctx IN OUT RAW,
                newlen IN INTEGER) RETURN INTEGER;
PROCEDURE read(obj     IN OUT NOCOPY ORDSYS.ORDSource,
               ctx      IN OUT RAW,
               startPos IN INTEGER,
               numBytes IN OUT INTEGER,
               buffer   OUT RAW);
PROCEDURE write(obj      IN OUT NOCOPY ORDSYS.ORDSource,
                ctx      IN OUT RAW,
                startPos IN INTEGER,
                numBytes IN OUT INTEGER,
                buffer   OUT RAW);
END ORDX_FILE_SOURCE;
/

表B-1に、ORDX_FILE_SOURCEパッケージでサポートされるメソッド、およびサポートされていないメソッドをコールした場合に発生する例外を示します。

表B-1 ORDPLUGINS.ORDX_FILE_SOURCEパッケージでサポートされるメソッド

メソッド名 サポート・レベル

processCommand

非サポート。METHOD_NOT_SUPPORTED例外が発生します。

import

サポートされている

import

Supported

importFrom

Supported

importFrom

Supported

export

Supported

getContentLength

Supported

getSourceAddress

Supported

open

Supported

close

Supported

trim

非サポート。METHOD_NOT_SUPPORTED例外が発生します。

read

Supported

write

非サポート。METHOD_NOT_SUPPORTED例外が発生します。

B.1.1.2 ORDPLUGINS.ORDX_HTTP_SOURCEパッケージ

ORDPLUGINS.ORDX_HTTP_SOURCEパッケージは、HTTPサーバーに格納されURLによってアクセスされるマルチメディアをサポートします。

ORDPLUGINS.ORDX_HTTP_SOURCEパッケージは、次のように定義されます。

CREATE OR REPLACE PACKAGE ORDX_HTTP_SOURCE AS
  -- functions/procedures
  FUNCTION processCommand(obj     IN OUT NOCOPY ORDSYS.ORDSource,
                          ctx     IN OUT RAW,
                          cmd     IN VARCHAR2,
                          arglist IN VARCHAR2,
                          result  OUT RAW)
           RETURN RAW;
  PROCEDURE import(obj      IN OUT NOCOPY ORDSYS.ORDSource,
                   ctx      IN OUT RAW,
                   mimetype OUT VARCHAR2,
                   format   OUT VARCHAR2);
  PROCEDURE import(obj      IN OUT NOCOPY ORDSYS.ORDSource,
                   ctx      IN OUT RAW,
                   dlob     IN OUT NOCOPY BLOB,
                   mimetype OUT VARCHAR2,
                   format   OUT VARCHAR2);
  PROCEDURE importFrom(obj      IN OUT NOCOPY ORDSYS.ORDSource,
                       ctx      IN OUT RAW,
                       mimetype OUT VARCHAR2,
                       format   OUT VARCHAR2,
                       loc      IN VARCHAR2,
                       name     IN VARCHAR2);
  PROCEDURE importFrom(obj      IN OUT NOCOPY ORDSYS.ORDSource,
                       ctx      IN OUT RAW,
                       dlob     IN OUT NOCOPY BLOB,
                       mimetype OUT VARCHAR2,
                       format   OUT VARCHAR2,
                       loc      IN VARCHAR2,
                       name     IN VARCHAR2);
  PROCEDURE export(obj  IN OUT NOCOPY ORDSYS.ORDSource,
                   ctx  IN OUT RAW,
                   dlob IN OUT NOCOPY BLOB,
                   loc  IN VARCHAR2,
                   name IN VARCHAR2);
  FUNCTION  getContentLength(obj  IN ORDSYS.ORDSource,
                             ctx  IN OUT RAW)
            RETURN INTEGER;
  PRAGMA RESTRICT_REFERENCES(getContentLength, WNDS, WNPS, RNDS, RNPS, TRUST);
  FUNCTION  getSourceAddress(obj  IN ORDSYS.ORDSource,
                             ctx  IN OUT RAW,
                             userData IN VARCHAR2) 
            RETURN VARCHAR2;
  PRAGMA RESTRICT_REFERENCES(getSourceAddress, WNDS, WNPS, RNDS, RNPS);
  FUNCTION open(obj IN OUT NOCOPY ORDSYS.ORDSource, userArg IN RAW,
           ctx OUT RAW) RETURN INTEGER;
  FUNCTION close(obj IN OUT NOCOPY ORDSYS.ORDSource, ctx IN OUT RAW) 
           RETURN INTEGER;
  FUNCTION trim(obj IN OUT NOCOPY ORDSYS.ORDSource, 
           ctx IN OUT RAW,
           newlen IN INTEGER) RETURN INTEGER;
  PROCEDURE read(obj      IN OUT NOCOPY ORDSYS.ORDSource,
                 ctx      IN OUT RAW,
                 startPos IN INTEGER,
                 numBytes IN OUT INTEGER,
                 buffer   OUT RAW);
  PROCEDURE write(obj      IN OUT NOCOPY ORDSYS.ORDSource,
                  ctx      IN OUT RAW,
                  startPos IN INTEGER,
                  numBytes IN OUT INTEGER,
                  buffer   OUT RAW);
END ORDX_HTTP_SOURCE;
/

表B-2に、ORDX_HTTP_SOURCEパッケージでサポートされるメソッド、およびサポートされていないメソッドをコールした場合に発生する例外を示します。

表B-2 ORDPLUGINS.ORDX_HTTP_SOURCEパッケージでサポートされるメソッド

メソッド名 サポート・レベル

processCommand

非サポート。METHOD_NOT_SUPPORTED例外が発生します。

import

Supported

import

Supported

importFrom

Supported

importFrom

Supported

export

非サポート。METHOD_NOT_SUPPORTED例外が発生します。

getContentLength

Supported

getSourceAddress

Supported

open

Supported

close

Supported

trim

非サポート。METHOD_NOT_SUPPORTED例外が発生します。

read

非サポート。METHOD_NOT_SUPPORTED例外が発生します。

write

非サポート。METHOD_NOT_SUPPORTED例外が発生します。

B.1.1.3 Oracle Multimediaの拡張による新しいデータ・ソースのサポート

Oracle Multimediaを拡張して新しいデータ・ソースをサポートするには、一連のタスクを実行する必要があります。

新しいデータ・ソースをサポートするようにOracle Multimediaを拡張するには、次の手順を実行します。

  1. 新しいデータ・ソースを設計します。
  2. 新しいデータ・ソースを実装し、名前(ORDX_MY_SOURCE.SQLなど)を付けます。
  3. 新しいORDX_MY_SOURCE.SQLパッケージをORDPLUGINSスキーマにインストールします。
  4. 新しいパッケージ(ORDX_MY_SOURCE.SQLなど)に対するEXECUTE権限をPUBLICに付与します。
  5. srctypeをmyに設定して、パッケージが起動されるようにします。

例B-1 新しいデータ・ソースを拡張サポートするためのパッケージ本体

CREATE OR REPLACE PACKAGE BODY ORDX_MY_SOURCE
AS
  -- functions/procedures
  FUNCTION processCommand(
                    obj  IN OUT NOCOPY ORDSYS.ORDSource,
                    ctx  IN OUT RAW,
                    cmd  IN VARCHAR2,
                    arglist IN VARCHAR2,
                    result OUT RAW)
  RETURN RAW
  IS
   --Your variables go here.
  BEGIN
  --Your code goes here.
  END processCommand;
  PROCEDURE import( obj  IN OUT NOCOPY ORDSYS.ORDSource,
                    ctx  IN OUT RAW,
                    mimetype OUT VARCHAR2,
                    format   OUT VARCHAR2)
  IS
  --Your variables go here.
  BEGIN
  --Your code goes here.
  END import;
  PROCEDURE import( obj  IN OUT NOCOPY ORDSYS.ORDSource,
                    ctx  IN OUT RAW,
                    dlob IN OUT NOCOPY BLOB,
                    mimetype OUT VARCHAR2,
                    format   OUT VARCHAR2)
  IS
  --Your variables go here.
  BEGIN
  --Your code goes here.
  END import;
  PROCEDURE importFrom( obj      IN OUT NOCOPY ORDSYS.ORDSource,
                        ctx      IN OUT RAW,
                        mimetype OUT VARCHAR2,
                        format   OUT VARCHAR2,
                        loc      IN VARCHAR2,
                        name     IN VARCHAR2)
  IS
  --Your variables go here.
  BEGIN
  --Your code goes here.
  END importFrom;
  PROCEDURE importFrom( obj      IN OUT NOCOPY ORDSYS.ORDSource,
                        ctx      IN OUT RAW,
                        dlob     IN OUT NOCOPY BLOB,
                        mimetype OUT VARCHAR2,
                        format   OUT VARCHAR2,
                        loc      IN VARCHAR2,
                        name     IN VARCHAR2)
  IS
  --Your variables go here.
  BEGIN
  --Your code goes here.
  END importFrom;
  PROCEDURE export( obj  IN OUT NOCOPY ORDSYS.ORDSource,
                    ctx  IN OUT RAW,
                    slob IN OUT NOCOPY BLOB,
                    loc  IN VARCHAR2,
                    name IN VARCHAR2)
  IS
  --Your variables go here.
  BEGIN
  --Your code goes here.
  END export;
  
  FUNCTION  getContentLength( obj  IN ORDSYS.ORDSource,
                              ctx  IN OUT RAW)
  RETURN INTEGER
  IS
  --Your variables go here.
  BEGIN
  --Your code goes here.
  END getContentLength;
  FUNCTION  getSourceAddress(obj  IN ORDSYS.ORDSource,
                             ctx  IN OUT RAW,
                             userData IN VARCHAR2)
  RETURN VARCHAR2
  IS
  --Your variables go here.
  BEGIN
  --Your code goes here.
  END getSourceAddress;
  FUNCTION open(obj IN OUT NOCOPY ORDSYS.ORDSource, userArg IN RAW, ctx OUT RAW)
  RETURN INTEGER
  IS
  --Your variables go here.
  BEGIN
  --Your code goes here.
  END open;
  FUNCTION close(obj IN OUT NOCOPY ORDSYS.ORDSource, ctx IN OUT RAW)
  RETURN INTEGER
  IS
  --Your variables go here.
  BEGIN
  --Your code goes here.
  END close;
  FUNCTION trim(obj    IN OUT NOCOPY ORDSYS.ORDSource,
                       ctx    IN OUT RAW,
                       newlen IN INTEGER)
  RETURN INTEGER
  IS
  --Your variables go here.
  BEGIN
  --Your code goes here.
  END trim;
  PROCEDURE read(obj      IN OUT NOCOPY ORDSYS.ORDSource,
                 ctx      IN OUT RAW,
                 startPos IN INTEGER,
                 numBytes IN OUT INTEGER,
                 buffer   OUT RAW)
  IS
  --Your variables go here.
  BEGIN
  --Your code goes here.
  END read;
  PROCEDURE write(obj      IN OUT NOCOPY ORDSYS.ORDSource,
                  ctx      IN OUT RAW,
                  startPos IN INTEGER,
                  numBytes IN OUT INTEGER,
                  buffer   OUT RAW)
  IS
  --Your variables go here.
  BEGIN
  --Your code goes here.
  END write;
END ORDX_MY_SOURCE;
/
show errors;

この操作を支援するためのパッケージ本体のリストが例B-1で提供されています。"--Your variables go here"と記載されている場所に変数を追加し、"--Your code goes here"と記載されている場所にコードを追加します。

B.2 その他のメディア・データ・フォーマットのサポート

新しいフォーマット・パッケージを定義することにより、ORDAudio、ORDDocおよびORDVideoオブジェクト型のサポートを拡張して新しいメディア・データ・フォーマットを含めることができます。

新しいORDAudio、ORDDocまたはORDVideoデータ・フォーマットを実装するには、ORDPLUGINSスキーマ内のORDPLUGINS.ORDX_<format>_<media>パッケージに必要なインタフェースを実装します(<format>は新しいオーディオまたはビデオの名前、あるいはその他の異機種間メディア・データ・フォーマットであり、<media>はメディアの種類(AUDIO、VIDEOまたはDOC)です)。その他のオーディオまたはビデオ・データ・フォーマットあるいは異機種間メディア・データ・フォーマットにサポートを拡張する場合は、ORDPLUGINS.ORDX_DEFAULT_<media>パッケージを指針として使用します。「Oracle Multimediaの拡張による新しいオーディオ・データ・フォーマットのサポート」「Oracle Multimediaの拡張による新しいORDDocデータ・フォーマットのサポート」および「Oracle Multimediaの拡張による新しいビデオ・データ・フォーマットのサポート」で示されているパッケージ本体の例をテンプレートとして使用して、それぞれオーディオ、ビデオまたはその他の異機種間メディア・データのパッケージ本体を作成します。その後、setFormat( )コールの新しいフォーマット・パラメータに適切なフォーマット値を設定して、ORDAudio、ORDDocまたはORDVideoオブジェクトに対して、パッケージORDPLUGINS.ORDX_<format>_<media>をメソッドの起動に使用する必要があることを示します。

次の各項では、他のデータ・フォーマットをサポートするようにOracle Multimediaを拡張する方法について説明します。

B.2.1 その他のORDAudioデータ・フォーマットのサポート

次の各項では、他のデータ・フォーマットをサポートするようにORDAudioを拡張する方法について説明します。

B.2.1.1 ORDPLUGINS.ORDX_DEFAULT_AUDIOパッケージ

ORDPLUGINS.ORDX_DEFAULT_AUDIOパッケージを、独自のORDPLUGINS.ORDX_<format>_AUDIOオーディオ・フォーマット・パッケージを開発する際の指針として使用します。このパッケージでは、setProperties( )メソッドのmimeTypeフィールドにファイル・フォーマットに依存するMIMEタイプ値を設定します。

ORDPLUGINS.ORDX_DEFAULT_AUDIOパッケージは、次のように定義されます。

CREATE OR REPLACE PACKAGE ORDX_DEFAULT_AUDIO
authid current_user
AS 
--AUDIO ATTRIBUTES ACCESSORS

PROCEDURE setProperties(ctx IN OUT RAW, 
                        obj IN OUT NOCOPY ORDSYS.ORDAudio,
                        setComments IN NUMBER := 0);
FUNCTION checkProperties(ctx IN OUT RAW, obj IN OUT ORDSYS.ORDAudio)
                RETURN NUMBER;
FUNCTION getAttribute(ctx IN OUT RAW,
                      obj IN ORDSYS.ORDAudio,
                      name IN VARCHAR2) RETURN VARCHAR2;
PROCEDURE getAllAttributes(ctx IN OUT RAW, 
                           obj IN ORDSYS.ORDAudio, 
                           attributes IN OUT NOCOPY CLOB);
--AUDIO PROCESSING METHODS
FUNCTION processCommand(ctx       IN OUT RAW,
                        obj       IN OUT NOCOPY ORDSYS.ORDAudio,
                        cmd       IN VARCHAR2,
                        arguments IN VARHAR2,
                        result    OUT RAW)
         RETURN RAW;

END;
/

表B-3に、ORDPLUGINS.ORDX_DEFAULT_AUDIOパッケージでサポートされるメソッド、およびサポートされていないメソッドをコールした場合に発生する例外を示します。

表B-3 ORDPLUGINS.ORDX_DEFAULT_AUDIOパッケージでサポートされるメソッド

メソッド名 サポート・レベル

setProperties

サポート。ソースがローカルの場合、ローカル・データから属性を抽出してプロパティを設定します。ソースがNULLの場合、ORDSYS.ORDSourceExceptions.EMPTY_SOURCE例外が発生します。ソースがBFILEの場合、BFILEから属性を抽出してプロパティを設定します。ソースがローカルでもBFILEでもない場合は、メディア・コンテンツを一時LOBに取得してデータから属性を抽出し、プロパティを設定します。

checkProperties

サポート。ソースがローカルの場合、ローカル・データから属性を抽出してオブジェクトの属性値と比較します。ソースがNULLの場合、ORDSYS.ORDSourceExceptions.EMPTY_SOURCE例外が発生します。ソースがBFILEの場合、BFILEから属性を抽出してオブジェクトの属性値と比較します。ソースがローカルでもBFILEでもない場合は、メディア・コンテンツを一時LOBに取得し、メディア・コンテンツから属性を抽出してオブジェクトの属性値と比較します。

getAttribute

非サポート。METHOD_NOT_SUPPORTEDおよびAUDIO_PLUGIN_EXCEPTION例外が発生します。

getAllAttributes

サポート。ソースがローカルの場合、属性を取得して戻します。ソースがNULLの場合、ORDSYS.ORDSourceExceptions.EMPTY_SOURCE例外が発生します。ソースがローカルでもNULLでもなく、外部にある場合は、ORDSYS.ORDAudioExceptions.LOCAL_DATA_SOURCE_REQUIRED例外が発生します。

processCommand

非サポート。METHOD_NOT_SUPPORTEDおよびAUDIO_PLUGIN_EXCEPTION例外が発生します。

B.2.1.2 Oracle Multimediaの拡張による新しいオーディオ・データ・フォーマットのサポート

Oracle Multimediaを拡張して新しいオーディオ・データ・フォーマットをサポートするには、一連のタスクを実行する必要があります。

新しいオーディオ・データ・フォーマットをサポートするようにOracle Multimediaを拡張するには、次の手順を実行します。

  1. 新しいオーディオ・データ・フォーマットを設計します。

    1. 新しいオーディオ・データ・フォーマットをサポートするには、ORDPLUGINSスキーマ内のORDX_<format>_AUDIOパッケージに必要なインタフェースを実装します(<format>は、新しいオーディオ・データ・フォーマット名です)。例B-2のパッケージ本体の例をテンプレートとして使用し、オーディオ・パッケージ本体を作成します。

    2. その後、setFormat( )コール内の新しいフォーマット・パラメータに適切なフォーマット値を設定して、オーディオ・オブジェクトに対し、ORDPLUGINS.ORDX_<format>_AUDIOパッケージをコールする必要があることを示します。

  2. 新しいオーディオ・データ・ソースを実装し、名前(ORDX_MY_AUDIO.SQLなど)を付けます。

  3. 新しいORDX_MY_AUDIO.SQLパッケージをORDPLUGINSスキーマにインストールします。

  4. 新しいパッケージ(ORDX_MY_AUDIOなど)に対するEXECUTE権限をPUBLICに付与します。

  5. アプリケーションで、format属性をmyに設定してパッケージが起動されるようにします。

この操作を支援するためのパッケージ本体のリストが例B-2で提供されています。"--Your variables go here"と記載されている場所に変数を追加し、"--Your code goes here"と記載されている場所にコードを追加します。

例B-2 新しいオーディオ・データ・フォーマットを拡張サポートするためのパッケージ本体

CREATE OR REPLACE PACKAGE BODY ORDX_MY_AUDIO
AS
  --AUDIO ATTRIBUTES ACCESSORS
  PROCEDURE setProperties(ctx IN OUT RAW,
                          obj IN OUT NOCOPY ORDSYS.ORDAudio,
                          setComments IN NUMBER :=0)
  IS
--Your variables go here.
  BEGIN
--Your code goes here.
  END;
  FUNCTION checkProperties(ctx IN OUT RAW, obj IN OUT ORDSYS.ORDAudio)
  RETURN NUMBER
  IS
--Your variables go here.
  BEGIN
--Your code goes here.
  END;
  FUNCTION  getAttribute(ctx IN OUT RAW,
                         obj IN ORDSYS.ORDAudio,
                         name IN VARCHAR2)
  RETURN VARCHAR2
  IS
--Your variables go here.
  BEGIN
--Your code goes here.
  END;
  PROCEDURE getAllAttributes(ctx IN OUT RAW,
                             obj IN ORDSYS.ORDAudio,
                             attributes IN OUT NOCOPY CLOB)
  IS
--Your variables go here.
  BEGIN
--Your code goes here.
  END;
  -- AUDIO PROCESSING METHODS
  FUNCTION  processCommand(
                                 ctx       IN OUT RAW,
                                 obj       IN OUT NOCOPY ORDSYS.ORDAudio,
                                 cmd       IN VARCHAR2,
                                 arguments IN VARCHAR2,
                                 result    OUT RAW)
  RETURN RAW
  IS
--Your variables go here.
  BEGIN
--Your code goes here.
  END;
END;
/
show errors;

B.2.2 その他のORDDocデータ・フォーマットのサポート

次の各項では、他のデータ・フォーマットをサポートするようにORDDocを拡張する方法について説明します。

B.2.2.1 ORDPLUGINS.ORDX_DEFAULT_DOCパッケージ

ORDPLUGINS.ORDX_DEFAULT_DOCパッケージを、独自のORDPLUGINS.ORDX_<format>_DOCメディア・フォーマット・パッケージを開発する際の指針として使用します。

ORDPLUGINS.ORDX_DEFAULT_DOCパッケージは、次のように定義されます。

CREATE OR REPLACE PACKAGE ORDX_DEFAULT_DOC
authid current_user
AS 

PROCEDURE setProperties(ctx IN OUT RAW, 
                        obj IN OUT NOCOPY ORDSYS.ORDDoc,
                        setComments IN NUMBER := 0);

END;
/

表B-4に、ORDPLUGINS.ORDX_DEFAULT_DOCパッケージでサポートされるメソッド、およびソースがNULLの場合に発生する例外を示します。

表B-4 ORDPLUGINS.ORDX_DEFAULT_DOCパッケージでサポートされるメソッド

メソッド名 サポート・レベル

setProperties

サポート。ソースがローカルの場合、ローカル・データから属性を抽出してプロパティを設定します。ソースがNULLの場合、ORDSYS.ORDSourceExceptions.EMPTY_SOURCE例外が発生します。ソースがBFILEの場合、BFILEから属性を抽出してプロパティを設定します。ソースがローカルでもBFILEでもない場合は、メディア・コンテンツを一時LOBに取得してデータから属性を抽出し、プロパティを設定します。

B.2.2.2 Oracle Multimediaの拡張による新しいORDDocデータ・フォーマットのサポート

Oracle Multimediaを拡張して新しいメディア・データ・フォーマットをサポートするには、一連のタスクを実行する必要があります。

新しいORDDocデータ・フォーマットをサポートするようにOracle Multimediaを拡張するには、次の手順を実行します。

  1. 新しいメディア・データ・フォーマットを設計します。

    1. 新しいメディア・データ・フォーマットをサポートするには、ORDPLUGINSスキーマ内のORDX_<format>_DOCパッケージに必要なインタフェースを実装します(<format>は、新しいメディア・データ・フォーマット名です)。例B-3のパッケージ本体の例をテンプレートとして使用し、パッケージ本体を作成します。

    2. その後、setFormat( )コール内の新しいフォーマット・パラメータに適切なフォーマット値を設定して、メディア・オブジェクトに対し、ORDPLUGINS.ORDX_<format>_DOCパッケージをコールする必要があることを示します。

  2. 新しいメディア・データ・フォーマットを実装し、名前(ORDX_MY_DOC.SQLなど)を付けます。

  3. 新しいORDX_MY_DOC.SQLパッケージをORDPLUGINSスキーマにインストールします。

  4. 新しいパッケージ(ORDX_MY_DOCなど)に対するEXECUTE権限をPUBLICに付与します。

  5. アプリケーションで、formatをmyに設定してパッケージが起動されるようにします。

この操作を支援するためのパッケージ本体のリストが例B-3で提供されています。"--Your variables go here"と記載されている場所に変数を追加し、"--Your code goes here"と記載されている場所にコードを追加します。

例B-3 新しいORDDocデータ・フォーマットを拡張サポートするためのパッケージ本体

CREATE OR REPLACE PACKAGE BODY ORDX_MY_DOC
AS
  --DOCUMENT ATTRIBUTES ACCESSORS
  PROCEDURE setProperties(ctx IN OUT RAW,
                          obj IN OUT NOCOPY ORDSYS.ORDDoc,
                          setComments IN NUMBER :=0)
  IS
--Your variables go here.
  BEGIN
--Your code goes here.
  END;
END;
/
show errors;

B.2.3 その他のビデオ・データ・フォーマットのサポート

次の各項では、他のデータ・フォーマットをサポートするようにORDVideoを拡張する方法について説明します。

B.2.3.1 ORDPLUGINS.ORDX_DEFAULT_VIDEOパッケージ

ORDPLUGINS.ORDX_DEFAULT_VIDEOパッケージを、独自のORDPLUGINS.ORDX_<format>_VIDEOビデオ・フォーマット・パッケージを開発する際の指針として使用します。このパッケージでは、setProperties( )メソッドのmimeTypeフィールドにファイル・フォーマットに依存するMIMEタイプ値を設定します。

ORDPLUGINS.ORDX_DEFAULT_VIDEOパッケージは、次のように定義されます。

CREATE OR REPLACE PACKAGE ORDX_DEFAULT_VIDEO
authid current_user
AS
--VIDEO ATTRIBUTES ACCESSORS
FUNCTION  getAttribute(ctx IN OUT RAW,
                       obj IN ORDSYS.ORDVideo,
                       name IN VARCHAR2) 
          RETURN VARCHAR2;
PROCEDURE setProperties(ctx IN OUT RAW, 
                        obj IN OUT NOCOPY ORDSYS.ORDVideo,
                        setComments IN NUMBER := 0);
FUNCTION checkProperties(ctx IN OUT RAW,obj IN ORDSYS.ORDVideo) RETURN NUMBER;

-- must return name=value; name=value; ...  pairs
PROCEDURE getAllAttributes(ctx IN OUT RAW,
                           obj IN ORDSYS.ORDVideo,
                           attributes IN OUT NOCOPY CLOB);
-- VIDEO PROCESSING METHODS
FUNCTION  processCommand(
                         ctx       IN OUT RAW,
                         obj       IN OUT NOCOPY ORDSYS.ORDVideo,
                         cmd       IN VARCHAR2,
                         arguments IN VARCHAR2,
                         result    OUT RAW)
         RETURN RAW;

END;
/

表B-5に、ORDPLUGINS.ORDX_DEFAULT_VIDEOパッケージでサポートされるメソッド、およびサポートされていないメソッドをコールした場合に発生する例外を示します。

表B-5 ORDPLUGINS.ORDX_DEFAULT_VIDEOパッケージでサポートされるメソッド

メソッド名 サポート・レベル

getAttribute

非サポート。METHOD_NOT_SUPPORTEDおよびVIDEO_PLUGIN_EXCEPTION例外が発生します。

setProperties

サポート。ソースがローカルの場合、ローカル・データから属性を抽出してプロパティを設定します。ソースがNULLの場合、ORDSYS.ORDSourceExceptions.EMPTY_SOURCE例外が発生します。ソースがBFILEの場合、BFILEから属性を抽出してプロパティを設定します。ソースがローカルでもBFILEでもない場合は、メディア・コンテンツを一時LOBに取得してデータから属性を抽出し、プロパティを設定します。

checkProperties

サポート。ソースがローカルの場合、ローカル・データから属性を抽出してオブジェクトの属性値と比較します。ソースがNULLの場合、ORDSYS.ORDSourceExceptions.EMPTY_SOURCE例外が発生します。ソースがBFILEの場合、BFILEデータから属性を抽出してオブジェクトの属性値と比較します。ソースがローカルでもBFILEでもない場合は、メディア・コンテンツを一時LOBに取得し、メディア・コンテンツから属性を抽出してオブジェクトの属性値と比較します。

getAllAttributes

サポート。ソースがローカルの場合、属性を取得して戻します。ソースがNULLの場合、ORDSYS.ORDSourceExceptions.EMPTY_SOURCE例外が発生します。ソースがローカルでもNULLでもなく、外部にある場合は、ORDSYS.ORDVideoExceptions.LOCAL_DATA_SOURCE_REQUIRED例外が発生します。

processCommand

非サポート。METHOD_NOT_SUPPORTEDおよびVIDEO_PLUGIN_EXCEPTION例外が発生します。

B.2.3.2 Oracle Multimediaの拡張による新しいビデオ・データ・フォーマットのサポート

Oracle Multimediaを拡張して新しいビデオ・データ・フォーマットをサポートするには、一連のタスクを実行する必要があります。

新しいビデオ・データ・フォーマットをサポートするようにOracle Multimediaを拡張するには、次の手順を実行します。

  1. 新しいビデオ・データ・フォーマットを設計します。

    1. 新しいビデオ・データ・フォーマットをサポートするには、ORDPLUGINSスキーマ内のORDX_<format>_VIDEOパッケージに必要なインタフェースを実装します(<format>は、新しいビデオ・データ・フォーマット名です)。例B-4のパッケージ本体の例をテンプレートとして使用し、ビデオ・パッケージ本体を作成します。

    2. その後、setFormat( )コール内の新しいフォーマット・パラメータに適切なフォーマット値を設定して、ビデオ・オブジェクトに対し、ORDPLUGINS.ORDX_<format>_VIDEOパッケージをコールする必要があることを示します。

  2. 新しいビデオ・データ・フォーマットを実装し、名前(ORDX_MY_VIDEO.SQLなど)を付けます。

  3. 新しいORDX_MY_VIDEO.SQLパッケージをORDPLUGINSスキーマにインストールします。

  4. 新しいパッケージ(ORDX_MY_VIDEOなど)に対するEXECUTE権限をPUBLICに付与します。

  5. アプリケーションで、ビデオ・フォーマットをmyに設定してパッケージが起動されるようにします。

この操作を支援するためのパッケージ本体のリストが例B-4で提供されています。"--Your variables go here"と記載されている場所に変数を追加し、"--Your code goes here"と記載されている場所にコードを追加します。

例B-4 新しいビデオ・データ・フォーマットを拡張サポートするためのパッケージ本体

CREATE OR REPLACE PACKAGE BODY ORDX_MY_VIDEO
AS
  --VIDEO ATTRIBUTES ACCESSORS
  FUNCTION  getAttribute(ctx IN OUT RAW,
                         obj IN ORDSYS.ORDVideo,
                         name IN VARCHAR2)
  RETURN VARCHAR2
  IS
--Your variables go here.
  BEGIN
--Your code goes here.
  END;
  PROCEDURE setProperties(ctx IN OUT RAW, 
          obj IN OUT NOCOPY ORDSYS.ORDVideo,
          setComments IN NUMBER :=0)
  IS
--Your variables go here.
  BEGIN
--Your code goes here.
  END;
  FUNCTION checkProperties(ctx IN OUT RAW, obj IN ORDSYS.ORDVideo) RETURN NUMBER
  IS
--Your variables go here.
  BEGIN
--Your code goes here.
  END;
  PROCEDURE getAllAttributes(ctx IN OUT RAW,
                             obj IN ORDSYS.ORDVideo,
                             attributes IN OUT NOCOPY CLOB)
  IS
--Your variables go here.
  BEGIN
--Your code goes here.
  END;
  -- VIDEO PROCESSING METHODS
  FUNCTION  processCommand(
                                 ctx       IN OUT RAW,
                                 obj       IN OUT NOCOPY ORDSYS.ORDVideo,
                                 cmd       IN VARCHAR2,
                                 arguments IN VARCHAR2,
                                 result OUT RAW)
  RETURN RAW
  IS
--Your variables go here.
  BEGIN
--Your code goes here.
  END;
END;
/
show errors;

B.2.4 その他のイメージ・データ・フォーマットのサポート

Oracle Multimediaでは、外部イメージ用のsetProperties( )メソッドを使用して、その他の特定イメージ・フォーマットをサポートします。

このメソッドを使用すると、setProperties( )メソッドに外部イメージ用として渡される値を既存のORDImageデータ属性に書き込むことによって、他のイメージ・フォーマットの認識が可能になります。

関連項目:

この方法でサポートされるイメージのタイプを判断する方法および詳細は、『Oracle Multimediaリファレンス』の外部イメージ・メソッド用のsetProperties( )に関する説明を参照してください

B.3 メディア・データ処理のサポート

Oracle Multimediaオーディオおよびビデオ・オブジェクト型のサポートを拡張して、オーディオおよびビデオ・データの処理を含めることができます。

次の各項で説明するように、Oracle Multimediaでは、オーディオおよびビデオ・オブジェク型を拡張して、オーディオおよびビデオ・データの処理をサポートできます。

B.3.1 オーディオ・データ処理のサポート

オーディオ・データ処理とは、オーディオ処理コマンドと一連の引数をフォーマット・パッケージに渡して処理することです。

オーディオ・データ処理をサポートするには、processAudioCommand( )メソッドを使用します。このメソッドは、ユーザー定義フォーマットのみで使用可能です。

関連項目:

processAudioCommand( )メソッドの詳細は、『Oracle Multimediaリファレンス』を参照してください

B.3.2 ビデオ・データ処理のサポート

ビデオ・データ処理とは、コマンドと一連の引数をフォーマット・パッケージに渡して処理することです。

ビデオ・データ処理をサポートするには、processVideoCommand( )メソッドを使用します。このメソッドは、ユーザー定義フォーマットでのみ使用可能です。

関連項目:

processVideoCommand( )メソッドの詳細は、『Oracle Multimediaリファレンス』を参照してください