Oracle Multimediaを拡張し、次の機能をサポートできます。
現在サポートされていないメディア・データの外部ソース(7.1項を参照)
現在サポートされていないメディア・データ・フォーマット(7.2項を参照)
新しいオブジェクト型(7.3項を参照)
メディア(オーディオおよびビデオ)・データ処理(7.4項を参照)
独自の外部メディア・データ・ソースや独自のORDAudio、ORDVideoまたはORDDocデータ・フォーマットをサポートするには、次の作業を行う必要があります。
新しいデータ・ソースあるいは新しいORDAudio、ORDVideoまたはORDDocデータ・フォーマットを設計します。
新しいデータ・ソースあるいは新しいORDAudio、ORDVideoまたはORDDocデータ・フォーマットを実装します。
新しいプラグインをORDPLUGINS
スキーマにインストールします。
新しいプラグインに対するEXECUTE権限をPUBLIC
に付与します。
新しいデータ・ソースを実装するには、ORDPLUGINS
スキーマ内のORDX_<srcType>_SOURCE
パッケージに必要なインタフェースを実装します(<srcType>
は、新しい外部ソース・タイプの名前です)。7.1.1.3項に示すパッケージ本体の例をテンプレートとして使用して、パッケージ本体を作成します。その後、setSourceInformation( )コールのソース・パラメータに適切なソース値を設定し、ORDAudio、ORDVideo、ORDImageまたはORDDocオブジェクトに対し、ORDPLUGINS.ORDX_<srcType>_SOURCE
パッケージがプラグインとして使用可能であることを示します。他の外部オーディオ、イメージ、ビデオまたはその他の異機種間メディア・データ・ソースをサポートするように拡張する場合は、ORDPLUGINS.ORDX_FILE_SOURCE
およびORDPLUGINS.ORDX_HTTP_SOURCE
パッケージを指針として使用します。
オーディオ、イメージ、ビデオまたはその他の異機種間メディア・データのサポートされる外部ソースの拡張例および詳細は、7.1.1.1項、7.1.1.2項および7.1.1.3項を参照してください。
この項では、付属のパッケージまたはPL/SQLプラグインのリファレンス情報について説明します。
プラグインの名前は、ORDX_<name>_<module_name>の形式で指定する必要があります。<module_name>には、ORDSourceのSOURCEが当てはまります。たとえば、7.1.1.1項に示したFILEプラグインは、ORDX_FILE_SOURCEと命名され、7.1.1.2項に示したHTTPプラグインは、ORDX_HTTP_SOURCEと命名されます。<name>はソース・タイプです。ソース・タイプ名のFILEおよびHTTPは、どちらもOracleの予約名です。
ORDPLUGINS.ORDX_FILE_SOURCE
およびORDPLUGINS.ORDX_HTTP_SOURCE
パッケージを、新しいソース・タイプ・パッケージを開発する際の指針として使用します。
ORDPLUGINS.ORDX_FILE_SOURCE
パッケージまたはPL/SQLプラグインは、データベース外部のローカル・ファイル・システムに格納されたマルチメディアをサポートします。
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; /
表7-1に、ORDX_FILE_SOURCE
パッケージでサポートされるメソッド、およびサポートされていないメソッドをコールした場合に発生する例外を示します。
表7-1 ORDPLUGINS.ORDX_FILE_SOURCEパッケージでサポートされるメソッド
メソッド名 | サポート・レベル |
---|---|
processCommand |
非サポート。METHOD_NOT_SUPPORTED例外が発生します。 |
import |
サポート |
import |
サポート |
importFrom |
サポート |
importFrom |
サポート |
export |
サポート |
getContentLength |
サポート |
getSourceAddress |
サポート |
open |
サポート |
close |
サポート |
trim |
非サポート。METHOD_NOT_SUPPORTED例外が発生します。 |
read |
サポート |
write |
非サポート。METHOD_NOT_SUPPORTED例外が発生します。 |
ORDPLUGINS.ORDX_HTTP_SOURCE
パッケージまたはPL/SQLプラグインは、HTTPサーバーに格納され、URLによってアクセスされるマルチメディアをサポートします。
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; /
表7-2に、ORDX_HTTP_SOURCE
パッケージでサポートされるメソッド、およびサポートされていないメソッドをコールした場合に発生する例外を示します。
表7-2 ORDPLUGINS.ORDX_HTTP_SOURCEパッケージでサポートされるメソッド
メソッド名 | サポート・レベル |
---|---|
processCommand |
非サポート。METHOD_NOT_SUPPORTED例外が発生します。 |
import |
サポート |
import |
サポート |
importFrom |
サポート |
importFrom |
サポート |
export |
非サポート。METHOD_NOT_SUPPORTED例外が発生します。 |
getContentLength |
サポート |
getSourceAddress |
サポート |
open |
サポート |
close |
サポート |
trim |
非サポート。METHOD_NOT_SUPPORTED例外が発生します。 |
read |
非サポート。METHOD_NOT_SUPPORTED例外が発生します。 |
write |
非サポート。METHOD_NOT_SUPPORTED例外が発生します。 |
Oracle Multimediaを拡張して新しいデータ・ソースをサポートするには、次の手順を実行します。
新しいデータ・ソースを設計します。
新しいデータ・ソースを実装し、名前(ORDX_MY_SOURCE.SQL
など)を付けます。
新しいORDX_MY_SOURCE.SQL
プラグインをORDPLUGINS
スキーマにインストールします。
新しいプラグイン(ORDX_MY_SOURCE.SQL
プラグインなど)に対するEXECUTE権限をPUBLICに付与します。
srctypeをmy
に設定して、プラグインを起動します。
例7-1に、パッケージ本体を示します。この操作を行う場合の参考にしてください。独自の変数を「--Your variables go here」と記述された場所に、独自のコードを「--Your code goes here」と記述された場所に追加します。
例7-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;
新しいORDAudio、ORDDocまたはORDVideoデータ・フォーマットを実装するには、ORDPLUGINS
スキーマ内のORDPLUGINS.ORDX_<format>_<media>
パッケージに必要なインタフェースを実装します(<format>
は新しいオーディオ名またはビデオ名あるいはその他の異機種間メディア・データ・フォーマット、<media>
はメディアの種類(AUDIO、VIDEOまたはDOC)です)。その他のオーディオまたはビデオ・データ・フォーマットあるいは異機種間メディア・データ・フォーマットにサポートを拡張する場合は、ORDPLUGINS.ORDX_DEFAULT_<media>
パッケージを指針として使用します。7.2.1.2項、7.2.2.2項および7.2.3.2項に示すパッケージ本体の例をテンプレートとして使用し、オーディオ、ビデオまたはその他の異機種間メディア・データのパッケージ本体をそれぞれ作成します。その後、setFormat( )コールの新しいフォーマット・パラメータに適切なフォーマット値を設定して、ORDAudio、ORDDocまたはORDVideoオブジェクトに対して、パッケージORDPLUGINS.ORDX_<format>_<media>
がプラグインとして使用可能であり、メソッドの起動に使用されることを指定します。
7.2.1.1項および7.2.1.2項では、その他のデータ・フォーマットをサポートするためのORDAudioの拡張方法を説明します。
独自のORDPLUGINS.ORDX_<format>_AUDIO
オーディオ・フォーマット・パッケージを開発する際の指針として、次のORDPLUGINS.ORDX_DEFAULT_AUDIO
パッケージを使用します。このパッケージでは、setProperties( )メソッドのmimeType
フィールドにファイル・フォーマットに依存するMIMEタイプ値を設定します。
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; /
表7-3に、ORDPLUGINS.ORDX_DEFAULT_AUDIO
パッケージでサポートされるメソッド、およびサポートされていないメソッドをコールした場合に発生する例外を示します。
表7-3 ORDPLUGINS.ORDX_DEFAULT_AUDIOパッケージでサポートされるメソッド
メソッド名 | サポート・レベル |
---|---|
setProperties |
サポート。ソースがローカルの場合、ローカル・データから属性を抽出してプロパティを設定します。ソースが |
checkProperties |
サポート。ソースがローカルの場合、ローカル・データから属性を抽出してオブジェクトの属性値と比較します。ソースが |
getAttribute |
非サポート。METHOD_NOT_SUPPORTEDおよびAUDIO_PLUGIN_EXCEPTION例外が発生します。 |
getAllAttributes |
サポート。ソースがローカルの場合、属性を取得して戻します。ソースが |
processCommand |
非サポート。METHOD_NOT_SUPPORTEDおよびAUDIO_PLUGIN_EXCEPTION例外が発生します。 |
Oracle Multimediaを拡張して新しいオーディオ・データ・フォーマットをサポートするには、次の手順を実行します。
新しいオーディオ・データ・フォーマットを設計します。
新しいオーディオ・データ・フォーマットをサポートするには、ORDPLUGINS
スキーマ内のORDX_<format>_AUDIO
パッケージに必要なインタフェースを実装します(<format>
は、新しいオーディオ・データ・フォーマット名です)。ORDX_DEFAULT_AUDIO
パッケージのインタフェースの詳細は、7.2.1.1項を参照してください。 例7-2のパッケージ本体の例をテンプレートとして使用し、オーディオ・パッケージ本体を作成します。
その後、setFormat( )コール内の新しいフォーマットのパラメータに適切なフォーマット値を設定して、オーディオ・オブジェクトに対し、ORDPLUGINS.ORDX_<format>_AUDIO
パッケージがプラグインとして使用可能であることを示します。
新しいオーディオ・データ・フォーマットを実装し、名前(ORDX_MY_AUDIO.SQL
など)を付けます。
新しいORDX_MY_AUDIO.SQL
プラグインをORDPLUGINS
スキーマにインストールします。
新しいプラグイン(ORDX_MY_AUDIO
プラグインなど)に対するEXECUTE権限をPUBLICに付与します。
アプリケーションで、format属性をmy
に設定して、プラグインを起動します。
例7-2に、パッケージ本体を示します。この操作を行う場合の参考にしてください。独自の変数を「--Your variables go here」と記述された場所に、独自のコードを「--Your code goes here」と記述された場所に追加します。
例7-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;
7.2.2.1項および7.2.2.2項では、その他のデータ・フォーマットをサポートするためのORDDocの拡張方法を説明します。
独自の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; /
表7-4に、ORDPLUGINS.ORDX_DEFAULT_DOC
パッケージでサポートされるメソッド、およびソースがNULL
の場合に発生する例外を示します。
Oracle Multimediaを拡張して新しいORDDocデータ・フォーマットをサポートするには、次の手順を実行します。
新しいメディア・データ・フォーマットを設計します。
新しいメディア・データ・フォーマットをサポートするには、ORDPLUGINS
スキーマ内のORDX_<format>_DOC
パッケージに必要なインタフェースを実装します(<format>
は、新しいメディア・データ・フォーマット名です)。ORDX_DEFAULT_DOC
パッケージのインタフェースの詳細は、7.2.2.1項を参照してください。例7-3のパッケージ本体の例をテンプレートとして使用し、パッケージ本体を作成します。
その後、setFormat( )コール内の新しいフォーマットのパラメータに適切なフォーマット値を設定して、メディア・オブジェクトに対し、ORDPLUGINS.ORDX_<format>_DOC
パッケージがプラグインとして使用可能であることを示します。
新しいメディア・データ・フォーマットを実装し、名前(ORDX_MY_DOC.SQL
など)を付けます。
新しいORDX_MY_DOC.SQL
プラグインをORDPLUGINS
スキーマにインストールします。
新しいプラグイン(ORDX_MY_DOC
プラグインなど)に対するEXECUTE権限をPUBLICに付与します。
アプリケーションで、フォーマットをmy
に設定して、プラグインを起動します。
例7-3に、パッケージ本体を示します。この操作を行う場合の参考にしてください。独自の変数を「--Your variables go here」と記述された場所に、独自のコードを「--Your code goes here」と記述された場所に追加します。
例7-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;
7.2.3.1項および7.2.3.2項では、その他のデータ・フォーマットをサポートするためのORDVideoの拡張方法を説明します。
独自のORDPLUGINS.ORDX_<format>_VIDEO
ビデオ・フォーマット・パッケージを開発する際の指針として、次のORDPLUGINS.ORDX_DEFAULT_VIDEO
パッケージを使用します。このパッケージでは、setProperties( )メソッドのmimeType
フィールドにファイル・フォーマットに依存するMIMEタイプ値を設定します。
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; /
表7-5に、ORDPLUGINS.ORDX_DEFAULT_VIDEO
パッケージでサポートされるメソッド、およびサポートされていないメソッドをコールした場合に発生する例外を示します。
表7-5 ORDPLUGINS.ORDX_DEFAULT_VIDEOパッケージでサポートされるメソッド
メソッド名 | サポート・レベル |
---|---|
getAttribute |
非サポート。METHOD_NOT_SUPPORTEDおよびVIDEO_PLUGIN_EXCEPTION例外が発生します。 |
setProperties |
サポート。ソースがローカルの場合、ローカル・データから属性を抽出してプロパティを設定します。ソースが |
checkProperties |
サポート。ソースがローカルの場合、ローカル・データから属性を抽出してオブジェクトの属性値と比較します。ソースが |
getAllAttributes |
サポート。ソースがローカルの場合、属性を取得して戻します。ソースが |
processCommand |
非サポート。METHOD_NOT_SUPPORTEDおよびVIDEO_PLUGIN_EXCEPTION例外が発生します。 |
Oracle Multimediaを拡張して新しいビデオ・データ・フォーマットをサポートするには、次の手順を実行します。
新しいビデオ・データ・フォーマットを設計します。
新しいビデオ・データ・フォーマットをサポートするには、ORDPLUGINS
スキーマ内のORDX_<format>_VIDEO
パッケージに必要なインタフェースを実装します(<format>
は、新しいビデオ・データ・フォーマット名です)。ORDX_DEFAULT_VIDEO
パッケージのインタフェースの詳細は、7.2.3.1項を参照してください。例7-4のパッケージ本体の例をテンプレートとして使用し、ビデオ・パッケージ本体を作成します。
その後、setFormat( )コール内の新しいフォーマットのパラメータに適切なフォーマット値を設定して、ビデオ・オブジェクトに対し、ORDPLUGINS.ORDX_<format>_VIDEO
パッケージがプラグインとして使用可能であることを示します。
新しいビデオ・データ・フォーマットを実装し、名前(ORDX_MY_VIDEO.SQL
など)を付けます。
新しいORDX_MY_VIDEO.SQL
プラグインをORDPLUGINS
スキーマにインストールします。
新しいプラグイン(ORDX_MY_VIDEO
プラグインなど)に対するEXECUTE権限をPUBLICに付与します。
アプリケーションで、ビデオ・フォーマットをmy
に設定して、プラグインを起動します。
例7-4に、パッケージ本体を示します。この操作を行う場合の参考にしてください。独自の変数を「--Your variables go here」と記述された場所に、独自のコードを「--Your code goes here」と記述された場所に追加します。
例7-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;
Oracle Multimediaでは、外部イメージ用のsetProperties( )メソッドを使用して、その他の特定イメージ・フォーマットをサポートします。このメソッドを使用すると、setProperties( )メソッドに外部イメージ用として渡される値を既存のORDImageデータ属性に書き込むことによって、他のイメージ・フォーマットの認識が可能になります。この方法でサポートできるイメージのタイプを判断する方法および詳細は、『Oracle Multimediaリファレンス』の外部イメージ・メソッド用のsetProperties( )に関する説明を参照してください。
例7-5のORDImageオブジェクト型で示すとおり、任意のOracle Multimediaオブジェクト型を基にして、独自のオブジェクト型を新しく作成できます。
注意: オブジェクト型を変更した場合、依存する型定義は無効になります。この問題は、Oracle Multimediaのオブジェクト型属性を含む新しい型を定義して、Oracle Multimediaのオブジェクト型が変更される場合に発生します。これは、Oracle Multimediaのアップグレード中、必ず発生します。この問題を回避するには、次のSQL文を使用して、すべての無効な型定義を再び有効にします。 SQL> ALTER TYPE <type-name> COMPILE; |
例7-5 新しいオブジェクト型を使用したOracle Multimedia ORDImageの拡張
CREATE TYPE AnnotatedImage AS OBJECT ( image ORDSYS.ORDImage, description VARCHAR2(2000), MEMBER PROCEDURE SetProperties(SELF IN OUT AnnotatedImage), MEMBER PROCEDURE Copy(dest IN OUT AnnotatedImage), MEMBER PROCEDURE ProcessCopy(command IN VARCHAR2, dest IN OUT AnnotatedImage) ); / CREATE TYPE BODY AnnotatedImage AS MEMBER PROCEDURE SetProperties(SELF IN OUT AnnotatedImage) IS BEGIN SELF.image.setProperties(); SELF.description := 'This is an example of using Image object as a subtype'; END SetProperties; MEMBER PROCEDURE Copy(dest IN OUT AnnotatedImage) IS BEGIN SELF.image.copy(dest.image); dest.description := SELF.description; END Copy; MEMBER PROCEDURE ProcessCopy(command IN VARCHAR2, dest IN OUT AnnotatedImage) IS BEGIN SELF.Image.processCopy(command,dest.image); dest.description := SELF.description; END ProcessCopy; END; /
新しい型を作成した後は、その型を他の型と同様に使用できます。次に例を示します。
CREATE OR REPLACE DIRECTORY ORDIMGDIR AS 'C:\TESTS'; CREATE TABLE my_example(id NUMBER, an_image AnnotatedImage); INSERT INTO my_example VALUES (1, AnnotatedImage( ORDSYS.ORDImage.init('file','ORDIMGDIR','plaid.gif')); COMMIT; DECLARE myimage AnnotatedImage; BEGIN SELECT an_image INTO myimage FROM my_example; myimage.SetProperties; DBMS_OUTPUT.PUT_LINE('This image has a description of '); DBMS_OUTPUT.PUT_LINE(myimage.description); UPDATE my_example SET an_image = myimage; END; /
7.4.1項および7.4.2項では、オーディオおよびビデオ・データ処理のサポートについて説明します。
オーディオ・データ処理をサポートする(オーディオ処理コマンドおよび引数のセットをフォーマット・プラグインに渡して処理する)には、processAudioCommand( )メソッドを使用します。このメソッドは、ユーザー定義フォーマットのみで使用可能です。
processAudioCommand( )メソッドの詳細は、『Oracle Multimediaリファレンス』を参照してください。
ビデオ・データ処理をサポートする(コマンドおよび引数のセットをフォーマット・プラグインに渡して処理する)には、processVideoCommand( )メソッドを使用します。このメソッドは、ユーザー定義フォーマットでのみ使用可能です。
processVideoCommand( )メソッドの詳細は、『Oracle Multimediaリファレンス』を参照してください。