B Oracle Multimediaの拡張
この付録では、Oracle Multimediaオブジェクト型を拡張するための様々な方法について説明します。
注意:
Oracle Multimediaオブジェクト型を拡張して新しいソース・タイプや新しいフォーマット・タイプをサポートする機能は、現在のリリースで非推奨となり、将来のリリースでサポートされなくなる可能性があります。非推奨となった機能の使用はできるだけ早く中止することをお薦めします。
Oracle Multimediaオブジェクト型を拡張し、次の機能をサポートできます。
-
現在サポートされていないその他の外部ソースのメディア・データ
-
現在サポートされていないその他のメディア・データ・フォーマット
-
メディア(オーディオおよびビデオ)データの処理
独自の外部メディア・データ・ソースや独自のORDAudio、ORDVideoまたはORDDocデータ・フォーマットをサポートするには、次の作業を行う必要があります。
-
新しいデータ・ソースあるいは新しいORDAudio、ORDVideoまたはORDDocデータ・フォーマットを設計します。
-
新しいデータ・ソースあるいは新しいORDAudio、ORDVideoまたはORDDocデータ・フォーマットを実装します。
-
新しいソース・パッケージを
ORDPLUGINSスキーマにインストールします。 -
新しいソース・パッケージに対する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を拡張するには、次の手順を実行します。
- 新しいデータ・ソースを設計します。
- 新しいデータ・ソースを実装し、名前(
ORDX_MY_SOURCE.SQLなど)を付けます。 - 新しい
ORDX_MY_SOURCE.SQLパッケージをORDPLUGINSスキーマにインストールします。 - 新しいパッケージ(
ORDX_MY_SOURCE.SQLなど)に対するEXECUTE権限をPUBLICに付与します。 - 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 |
サポート。ソースがローカルの場合、ローカル・データから属性を抽出してプロパティを設定します。ソースが |
|
checkProperties |
サポート。ソースがローカルの場合、ローカル・データから属性を抽出してオブジェクトの属性値と比較します。ソースが |
|
getAttribute |
非サポート。METHOD_NOT_SUPPORTEDおよびAUDIO_PLUGIN_EXCEPTION例外が発生します。 |
|
getAllAttributes |
サポート。ソースがローカルの場合、属性を取得して戻します。ソースが |
|
processCommand |
非サポート。METHOD_NOT_SUPPORTEDおよびAUDIO_PLUGIN_EXCEPTION例外が発生します。 |
B.2.1.2 Oracle Multimediaの拡張による新しいオーディオ・データ・フォーマットのサポート
Oracle Multimediaを拡張して新しいオーディオ・データ・フォーマットをサポートするには、一連のタスクを実行する必要があります。
新しいオーディオ・データ・フォーマットをサポートするようにOracle Multimediaを拡張するには、次の手順を実行します。
-
新しいオーディオ・データ・フォーマットを設計します。
-
新しいオーディオ・データ・フォーマットをサポートするには、
ORDPLUGINSスキーマ内のORDX_<format>_AUDIOパッケージに必要なインタフェースを実装します(<format>は、新しいオーディオ・データ・フォーマット名です)。例B-2のパッケージ本体の例をテンプレートとして使用し、オーディオ・パッケージ本体を作成します。 -
その後、setFormat( )コール内の新しいフォーマット・パラメータに適切なフォーマット値を設定して、オーディオ・オブジェクトに対し、
ORDPLUGINS.ORDX_<format>_AUDIOパッケージをコールする必要があることを示します。
-
-
新しいオーディオ・データ・ソースを実装し、名前(
ORDX_MY_AUDIO.SQLなど)を付けます。 -
新しい
ORDX_MY_AUDIO.SQLパッケージをORDPLUGINSスキーマにインストールします。 -
新しいパッケージ(
ORDX_MY_AUDIOなど)に対するEXECUTE権限をPUBLICに付与します。 -
アプリケーションで、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 |
サポート。ソースがローカルの場合、ローカル・データから属性を抽出してプロパティを設定します。ソースが |
B.2.2.2 Oracle Multimediaの拡張による新しいORDDocデータ・フォーマットのサポート
Oracle Multimediaを拡張して新しいメディア・データ・フォーマットをサポートするには、一連のタスクを実行する必要があります。
新しいORDDocデータ・フォーマットをサポートするようにOracle Multimediaを拡張するには、次の手順を実行します。
-
新しいメディア・データ・フォーマットを設計します。
-
新しいメディア・データ・フォーマットをサポートするには、
ORDPLUGINSスキーマ内のORDX_<format>_DOCパッケージに必要なインタフェースを実装します(<format>は、新しいメディア・データ・フォーマット名です)。例B-3のパッケージ本体の例をテンプレートとして使用し、パッケージ本体を作成します。 -
その後、setFormat( )コール内の新しいフォーマット・パラメータに適切なフォーマット値を設定して、メディア・オブジェクトに対し、
ORDPLUGINS.ORDX_<format>_DOCパッケージをコールする必要があることを示します。
-
-
新しいメディア・データ・フォーマットを実装し、名前(
ORDX_MY_DOC.SQLなど)を付けます。 -
新しい
ORDX_MY_DOC.SQLパッケージをORDPLUGINSスキーマにインストールします。 -
新しいパッケージ(
ORDX_MY_DOCなど)に対するEXECUTE権限をPUBLICに付与します。 -
アプリケーションで、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 |
サポート。ソースがローカルの場合、ローカル・データから属性を抽出してプロパティを設定します。ソースが |
|
checkProperties |
サポート。ソースがローカルの場合、ローカル・データから属性を抽出してオブジェクトの属性値と比較します。ソースが |
|
getAllAttributes |
サポート。ソースがローカルの場合、属性を取得して戻します。ソースが |
|
processCommand |
非サポート。METHOD_NOT_SUPPORTEDおよびVIDEO_PLUGIN_EXCEPTION例外が発生します。 |
B.2.3.2 Oracle Multimediaの拡張による新しいビデオ・データ・フォーマットのサポート
Oracle Multimediaを拡張して新しいビデオ・データ・フォーマットをサポートするには、一連のタスクを実行する必要があります。
新しいビデオ・データ・フォーマットをサポートするようにOracle Multimediaを拡張するには、次の手順を実行します。
-
新しいビデオ・データ・フォーマットを設計します。
-
新しいビデオ・データ・フォーマットをサポートするには、
ORDPLUGINSスキーマ内のORDX_<format>_VIDEOパッケージに必要なインタフェースを実装します(<format>は、新しいビデオ・データ・フォーマット名です)。例B-4のパッケージ本体の例をテンプレートとして使用し、ビデオ・パッケージ本体を作成します。 -
その後、setFormat( )コール内の新しいフォーマット・パラメータに適切なフォーマット値を設定して、ビデオ・オブジェクトに対し、
ORDPLUGINS.ORDX_<format>_VIDEOパッケージをコールする必要があることを示します。
-
-
新しいビデオ・データ・フォーマットを実装し、名前(
ORDX_MY_VIDEO.SQLなど)を付けます。 -
新しい
ORDX_MY_VIDEO.SQLパッケージをORDPLUGINSスキーマにインストールします。 -
新しいパッケージ(
ORDX_MY_VIDEOなど)に対するEXECUTE権限をPUBLICに付与します。 -
アプリケーションで、ビデオ・フォーマットを
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リファレンス』を参照してください