9 Oracle Multimedia ORDDocオブジェクト型
Oracle Multimediaでは、イメージ、オーディオ、ビデオなど、すべてのメディア・データの格納および管理をサポートするORDDocオブジェクト型が提供されます。
ORDDocオブジェクト型は、orddspec.sql
ファイルで定義されています。インストール後、このファイルは次のOracleホーム・ディレクトリに格納されています。
<ORACLE_HOME>
\ord\im\admin
(Windowsの場合)
<ORACLE_HOME>
/ord/im/admin
(LinuxおよびUNIXの場合)
9.1 ORDDocオブジェクトの例
ORDDocオブジェクト型の例では、Oracle Database Product Media (PM)サンプル・スキーマのONLINE_MEDIA表を使用しています。Oracle Databaseサンプル・スキーマは、GitHubで使用できます。使用しているコンピュータでこれらの例を再現するには、まず、ORDDocのコンストラクタ、およびimport( )とimportFrom( )メソッドの項に示す例を実行してください。例のファイルは、実際のメディア・ファイルで置き換えてください。
コンストラクタの「BLOBのORDDoc」の例では、テスト・ドキュメント表のTDOCを使用しています。(この表の定義は、「TDOC表の定義」を参照してください。)
注意:
BLOBを直接修正するか、または外部ソースを変更してメディア・データ自体を操作した場合、オブジェクト属性の同期が維持されていることと、更新時刻が修正されていることを確認する必要があります。そうしないと、オブジェクト属性がメディア・データと一致しなくなります。
9.2 ORDDocのメソッドの重要な注意事項
ORDSourceレベルでコールされたメソッドは、ソース・プラグインに渡されて処理され、最初の引数にctx (RAW)を取ります。これらのメソッドのいずれかをクライアントから初めてコールする場合、ctx構造体を割り当ててNULLに初期化してから、openSource( )メソッドをコールする必要があります。このとき、ソース・プラグインが、このクライアント用にコンテキストを初期化できます。処理が完了したら、クライアントからcloseSource( )メソッドをコールする必要があります。
ソース・プラグインのコールによってコールされたメソッドは、最初の引数にctx (RAW)を取ります。
ORDDocレベルでコールされたメソッドは、フォーマット・プラグインに渡されて処理され、最初の引数にctx (RAW)を取ります。これらのメソッドのいずれかをクライアントから初めてコールする場合、ctx構造体を割り当てて、NULLに初期化する必要があります。
注意:
今回のリリースでは、Oracleが提供するいずれのプラグインもctx構造体を使用しません。また、すべてのソース・プラグインまたはフォーマット・プラグインがctx構造体を使用するわけではありませんが、前述の方法でコーディングすると、アプリケーションは、現行または今後のソース・プラグインまたはフォーマット・プラグインで動作します。
ネイティブにサポートされていないフォーマットの場合、個々のいずれかのsetメソッドを使用して、オブジェクトの属性値を設定します。ネイティブにサポートされているフォーマットの場合は、setProperties( )メソッドを使用して、オブジェクトの属性を移入するか、またはフォーマット・プラグインを記述します。
9.3 ORDDocオブジェクト型
ORDDocオブジェクト型は、イメージ、オーディオ、ビデオなど、すべてのメディア・データの格納と管理をサポートします。このオブジェクト型の属性は、orddspec.sql
ファイルで次のように定義されています。
------------------- -- TYPE ATTRIBUTES ------------------- source ORDSource, format VARCHAR(80), mimeType VARCHAR(80), contentLength INTEGER, comments CLOB,
説明:
-
source: メディア・データが格納されるORDSource。
-
format: メディア・データの格納フォーマット。
-
mimeType: MIMEタイプについての情報。
-
contentLength: ソースに格納されたメディア・データ長。
-
comments: メディア・オブジェクトのメタデータ情報。
注意:
comments属性は、setCommentsパラメータがTRUEである場合、setProperties( )メソッドによって移入されます。この属性に対して直接書込みしないことをお薦めします。
9.4 ORDDocのコンストラクタ
ORDDocのコンストラクタには、BLOBの格納専用のものと、他のすべてのソースに対応したものと2つあります。
9.4.1 BLOBのORDDoc
構文
ORDDoc(SELF IN OUT NOCOPY ORDSYS.ORDDoc, data IN BLOB, setproperties IN INTEGER DEFAULT 0) RETURN SELF AS RESULT
説明
BLOBからORDDocオブジェクトを構築します。構築されたORDDocオブジェクトが表に挿入または更新されると、BLOBに格納されているデータがORDDocオブジェクトにコピーされます。
パラメータ
プラグマ
なし。
例外
なし。
使用上の注意
メディア・コンテンツが一時または永続BLOBのいずれかに格納される場合は、このコンストラクタを使用して、ORDDocオブジェクトを作成します。
例
BLOBオブジェクトからORDDocオブジェクトを作成し、表に挿入します。
注意:
この文を実行するユーザーは、ユーザーmediauser
によって作成されたtdoc
表に対するSELECT権限を持っている必要があります。
テスト・ドキュメント表のTDOCの定義は、「TDOC表の定義」を参照してください。
INSERT INTO pm.online_media (product_id, product_testimonials) SELECT 2808, ORDSYS.ORDDoc(t.document) FROM mediauser.tdoc t WHERE t.n = 1;
9.4.2 他のソースのORDDoc
構文
ORDDoc(SELF IN OUT NOCOPY ORDSYS.ORDDoc, source_type IN VARCHAR2 DEFAULT 'LOCAL', source_location IN VARCHAR2 DEFAULT NULL, source_name IN VARCHAR2 DEFAULT NULL, setproperties IN INTEGER DEFAULT 0) RETURN SELF AS RESULT
説明
特定のソースからORDDocオブジェクトを構築します。デフォルトでは、ローカル・ソースによる空のオブジェクトが構築されます。
パラメータ
- source_type
-
ソース・メディア・データのタイプを指定します。有効な値は、
FILE
、HTTP
、LOCAL
またはユーザー定義です。デフォルトは、LOCAL
です。パラメータ値の
LOCAL
は、データがOracle Databaseに格納されていることを示します。パラメータ値のLOCAL
は、srcType属性に格納されることはありません。かわりに、このパラメータ値は、localData属性でデータがOracle Databaseに格納されていることを示します。(ORDSourceオブジェクトの説明は、「埋込みORDSourceオブジェクト」を参照してください。) - source_location
-
インポート元のソース・メディア・データの位置を指定します。(表7-2を参照してください。)
- source_name
-
ソース・メディア・データの名前を指定します。(表7-3を参照してください。)
- setproperties
-
コンストラクタでsetProperties( )メソッドをコールするかどうかを決定するインジケータ・フラグです。値が
1
の場合、setProperties( )メソッドがコールされます。値が0
の場合、メソッドはコールされません。デフォルトは0
です。
プラグマ
なし。
例外
なし。
使用上の注意
次のいずれかの状況のように、メディア・コンテンツがまだBLOBに格納されていない場合は、このコンストラクタを使用して、ORDDocオブジェクトを作成します。
- コンテンツがローカル・ファイルに存在します。
- コンテンツがURLで参照されています。
- コンテンツがORDDocオブジェクトの作成時に使用できません。
例
指定されたソースからORDDocオブジェクトを作成します。
-- Construct an ORDDoc object from an external file and insert it into the table. INSERT INTO pm.online_media (product_id, product_testimonials) VALUES (2999, ORDSYS.ORDDoc('FILE', 'FILE_DIR', 'modem.jpg')); -- Initialize an ORDDoc object in the table. INSERT INTO pm.online_media (product_id, product_testimonials) VALUES(2808, ORDSYS.ORDDoc());
9.5 ORDDocのメソッド
Oracle Multimediaのいくつかのメソッドは、特にメディア・データの操作用に設計されています。
ORDAudio、ORDDoc、ORDImageおよびORDVideoに共通のOracle Multimediaのメソッドに関するリファレンス情報については、「すべてのOracle Multimediaオブジェクト型に共通のメソッド」を参照してください。この章と第2章に示すメソッドを使用すると、属性の取得と設定およびメタデータの抽出を実行できます。
関連項目:
オブジェクト型およびメソッドの詳細は、『Oracle Database概要』を参照してください
9.5.1 getContentInLob( )
構文
getContentInLob(ctx IN OUT RAW, dest_lob IN OUT NOCOPY BLOB, mimeType OUT VARCHAR2, format OUT VARCHAR2);
説明
データ・ソースのデータを、指定されたBLOBにコピーします。コピー先のBLOBは、(埋込みORDSourceオブジェクトの)source.localData属性内のBLOBとは異なる必要があります。
パラメータ
- ctx
-
ソース・プラグインのコンテキスト情報を指定します。(「ORDDocのメソッドの重要な注意事項」を参照してください。)
- dest_lob
-
データのコピー先のLOBを指定します。
- mimeType
-
データのMIMEタイプが戻されます(戻されない場合もあります)。
- format
-
データのフォーマットが戻されます(戻されない場合もあります)。
使用上の注意
なし。
プラグマ
なし。
例外
ORDDocExceptions.NULL_SOURCE
この例外は、ORDDoc.source属性の値がNULL
の場合に発生します。
ORDSourceExceptions.METHOD_NOT_SUPPORTED
この例外は、getContentInLob( )メソッドをコールし、使用するソース・プラグインがこのメソッドをサポートしていない場合に発生します。
これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。
例
データ・ソースからデータを取得して、指定したBLOBに格納します。
DECLARE obj ORDSYS.ORDDoc; tempBLob BLOB; mimeType VARCHAR2(4000); format VARCHAR2(31); ctx RAW(64) :=NULL; BEGIN SELECT product_testimonials INTO obj FROM pm.online_media WHERE product_id = 2808 ; IF (obj.isLocal()) THEN DBMS_OUTPUT.put_line('Local is true'); END IF; DBMS_LOB.CREATETEMPORARY(tempBLob, true, 10); obj.getContentInLob(ctx,tempBLob, mimeType,format); DBMS_OUTPUT.PUT_LINE('Length: ' || TO_CHAR(DBMS_LOB.getLength(tempBLob))); EXCEPTION WHEN ORDSYS.ORDSourceExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.put_line('ORDSourceExceptions.METHOD_NOT_SUPPORTED caught'); WHEN OTHERS THEN DBMS_OUTPUT.put_line('EXCEPTION caught'); END; /
9.5.2 getContentLength( )
構文
getContentLength( ) RETURN INTEGER;
説明
ソースに格納されたメディア・データのコンテンツ長を戻します。
パラメータ
なし。
使用上の注意
なし。
プラグマ
なし。
例外
ORDDocExceptions.NULL_SOURCE
この例外は、ORDDoc.source属性の値がNULL
の場合に発生します。
この例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。
例
メディア・データのコンテンツ長を取得します。
DECLARE obj ORDSYS.ORDDoc; BEGIN SELECT product_testimonials INTO obj FROM pm.online_media WHERE product_id = 2808 ; IF (obj.isLocal()) THEN DBMS_OUTPUT.put_line('Local is true'); END IF; DBMS_OUTPUT.PUT_LINE('Content length is ' || TO_CHAR(obj.getContentLength())); END;/
9.5.3 getFormat( )
構文
getFormat( ) RETURN VARCHAR2;
説明
メディア・オブジェクトのformat属性の値を戻します。
パラメータ
なし。
使用上の注意
なし。
プラグマ
PRAGMA RESTRICT_REFERENCES(getFormat, WNDS, WNPS, RNDS, RNPS)
例外
ORDDocExceptions.INVALID_FORMAT_TYPE
この例外は、getFormat( )メソッドをコールし、format属性の値がNULL
の場合に発生します。
この例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。
例
「setFormat( )」の例を参照してください。
9.5.4 import( )
構文
import(ctx IN OUT RAW set_prop IN BOOLEAN);
説明
外部メディア・データ・ソースからデータベース内の(埋込みORDSourceオブジェクトの)source.localData属性にメディア・データを転送します。
パラメータ
- ctx
-
ソース・プラグインのコンテキスト情報を指定します。このパラメータは、常に割り当てて、NULLに初期化する必要があります。ユーザー定義のソース・プラグインを使用する場合は、openSource( )メソッドをコールします。(「ORDDocのメソッドの重要な注意事項」を参照してください。)
- set_prop
-
setProperties( )メソッドをコールするかどうかを決定する値です。このパラメータの値が
TRUE
の場合、メディア・データを読み取るためにsetProperties( )メソッドがコールされ、オブジェクト属性の値が取得され、それらの値がオブジェクト属性に格納されます。値がFALSE
の場合、setProperties( )メソッドはコールされません。デフォルト値はFALSE
です。
使用上の注意
import( )メソッドをコールする前に、setSource( )メソッドを使用して、外部ソースの(埋込みORDSourceオブジェクトの) source.srcType、source.srcLocationおよびsource.srcName属性を設定します。
外部メディア・データ・ソースからローカル・ソース(Oracleデータベース内)にデータをインポートした後も、ソース情報は変更されません(データのインポート元のソースを指したままです)。
このメソッドをコールすると、setUpdateTime( )およびsetLocal( )メソッドが暗黙的にコールされます。
source.srcType属性の値がFILE
の場合、source.srcLocation属性にはインポート対象のファイルを格納したデータベース・ディレクトリ・オブジェクトの名前が含まれ、source.srcName属性にはインポート対象のファイルの名前が含まれます。このメソッドを使用する前に、外部ソースの位置にディレクトリが存在するか、または作成されていることを確認する必要があります。
import( )メソッドは、ユーザーがアクセス権を持つデータベース・ディレクトリのオブジェクトからのみ読み取ります。つまり、SQL文のCREATE DIRECTORYを使用して作成したディレクトリ・オブジェクト、または読取り権限を付与されたディレクトリ・オブジェクトにアクセスできます。
たとえば、次のSQL*Plusコマンドを実行すると、ディレクトリ・オブジェクトが作成され、ディレクトリc:\mydir\work
内の任意のファイルに対する読取り権限がユーザーron
に付与されます。これらのコマンドを実行する前に、ディレクトリ・オブジェクトを作成する権限を持ったユーザーとして接続しておく必要があります。
CREATE OR REPLACE DIRECTORY FILE_DIR AS 'c:\mydir\work'; GRANT READ ON DIRECTORY FILE_DIR TO ron;
ディレクトリおよび表の定義の詳細は、「ORDDocオブジェクトの例」を参照してください。
source.srcType属性の値がHTTP
の場合、source.srcLocation属性にはインポート対象のオブジェクトを格納したディレクトリを検索するために必要なベースURLが含まれ、source.srcName属性にはインポート対象のオブジェクトの名前が含まれます。
このメソッドは、PL/SQL UTL_HTTPパッケージを使用して、HTTPデータ・ソースからメディア・データをインポートします。環境変数を使用して、UTL_HTTPパッケージのプロキシの動作を指定できます。たとえば、LinuxおよびUNIXの場合、環境変数http_proxyをURLに設定すると、UTL_HTTPパッケージはそのURLをHTTPリクエスト用のプロキシ・サーバーとして使用する必要があります。環境変数no_proxyをドメイン名に設定すると、HTTPプロキシ・サーバーは指定したドメイン内のURLには使用されません。
関連項目:
UTL_HTTPパッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください
source.srcType属性の値がユーザー定義の名前の場合、source.srcLocation属性にはインポート対象のユーザー定義オブジェクトにアクセスするために必要な識別子文字列が含まれ、source.srcName属性にはインポート対象のオブジェクトの名前が含まれます。
プラグマ
なし。
例外
ORDDocExceptions.NULL_SOURCE
この例外は、ORDDoc.source属性の値がNULL
の場合に発生します。
ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION
この例外は、import( )メソッドをコールし、source.srcType属性の値がNULL
の場合に発生します。
ORDSourceExceptions.METHOD_NOT_SUPPORTED
この例外は、import( )メソッドをコールし、使用するソース・プラグインがimport( )メソッドをサポートしていない場合に発生します。
ORDSourceExceptions.NULL_SOURCE
この例外は、import( )メソッドをコールし、source.localData属性の値がNULL
の場合に発生します。
ORDSYS.ORDDocExceptions.DOC_PLUGIN_EXCEPTION
この例外は、import( )メソッドをコールし、setProperties( )メソッドにメディア・プラグインの例外が発生した場合に発生します。
これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。
例
外部メディア・データ・ソースからローカル・ソースにメディア・データをインポートします。
DECLARE
obj ORDSYS.ORDDoc; ctx RAW(64) :=NULL; BEGIN SELECT product_testimonials INTO obj FROM pm.online_media WHERE product_id = 2808 FOR UPDATE; DBMS_OUTPUT.PUT_LINE('setting and getting source'); DBMS_OUTPUT.PUT_LINE('--------------------------'); -- set source to a file obj.setSource('file','FILE_DIR','printer.rm'); -- get source information DBMS_OUTPUT.PUT_LINE(obj.getSource()); -- import data obj.import(ctx,FALSE); -- check size DBMS_OUTPUT.PUT_LINE('Length:' ||TO_CHAR(DBMS_LOB.getLength(obj.getContent()))); UPDATE pm.online_media SET product_testimonials=obj WHERE product_id=2808; COMMIT; EXCEPTION WHEN ORDSYS.ORDSourceExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.PUT_LINE('ORDSourceExceptions.METHOD_NOT_SUPPORTED caught'); WHEN ORDSYS.ORDDocExceptions.DOC_PLUGIN_EXCEPTION THEN DBMS_OUTPUT.put_line('DOC PLUGIN EXCEPTION caught'); END; /
9.5.5 importFrom( )
構文
importFrom(ctx IN OUT RAW, source_type IN VARCHAR2, source_location IN VARCHAR2, source_name IN VARCHAR2, set_prop IN BOOLEAN);
説明
指定された外部メディア・データ・ソースからデータベース内の(埋込みORDSourceオブジェクトの) source.localData属性にメディア・データを転送します。
パラメータ
- ctx
-
ソース・プラグインのコンテキスト情報を指定します。このパラメータは、常に割り当てて、NULLに初期化する必要があります。ユーザー定義のソース・プラグインを使用する場合は、openSource( )メソッドをコールします。(「ORDDocのメソッドの重要な注意事項」を参照してください。)
- source_type
-
ソース・メディア・データのタイプを指定します。(表7-1を参照してください。)
- source_location
-
インポート元のソース・メディア・データの位置を指定します。(表7-2を参照してください。)
- source_name
-
ソース・メディア・データの名前を指定します。(表7-3を参照してください。)
- set_prop
-
setProperties( )メソッドをコールするかどうかを決定する値です。このパラメータの値が
TRUE
の場合、メディア・データを読み取るためにsetProperties( )メソッドがコールされ、オブジェクト属性の値が取得され、それらの値がオブジェクト属性に格納されます。値がFALSE
の場合、setProperties( )メソッドはコールされません。デフォルト値はFALSE
です。
使用上の注意
このメソッドは、ソース情報を個別に指定せずにパラメータで指定すること以外は、import( )メソッドと同じです。
外部メディア・データ・ソースからローカル・ソース(Oracleデータベース内)にデータをインポートすると、(データのインポート元のソースを指している)ソース情報は入力値に設定されます。
このメソッドをコールすると、setUpdateTime( )およびsetLocal( )メソッドが暗黙的にコールされます。
source_typeパラメータの値がFILE
の場合、source_locationパラメータにはインポート対象のファイルを格納したデータベース・ディレクトリ・オブジェクトの名前が含まれ、source_nameパラメータにはインポート対象のファイルの名前が含まれます。このメソッドを使用する前に、source_locationパラメータで指定したディレクトリが存在するか、または作成されていることを確認する必要があります。
importFrom( )メソッドは、ユーザーがアクセス権を持つデータベース・ディレクトリのオブジェクトからのみ読み取ります。つまり、SQL文のCREATE DIRECTORYを使用して作成したディレクトリ・オブジェクト、または読取り権限を付与されたディレクトリ・オブジェクトにアクセスできます。
たとえば、次のSQL*Plusコマンドを実行すると、ディレクトリ・オブジェクトが作成され、ディレクトリc:\mydir\work
内の任意のファイルに対する読取り権限がユーザーron
に付与されます。これらのコマンドを実行する前に、ディレクトリ・オブジェクトを作成する権限を持ったユーザーとして接続しておく必要があります。
CREATE OR REPLACE DIRECTORY FILE_DIR AS 'c:\mydir\work'; GRANT READ ON DIRECTORY FILE_DIR TO ron;
ディレクトリおよび表の定義の詳細は、「ORDDocオブジェクトの例」を参照してください。
source_typeパラメータの値がHTTP
の場合、source_locationパラメータにはインポート対象のオブジェクトを格納したディレクトリを検索するために必要なベースURLが含まれ、source_nameパラメータにはインポート対象のオブジェクトの名前が含まれます。
このメソッドは、PL/SQL UTL_HTTPパッケージを使用して、HTTPデータ・ソースからメディア・データをインポートします。環境変数を使用して、UTL_HTTPパッケージのプロキシの動作を指定できます。たとえば、LinuxおよびUNIXの場合、環境変数http_proxyをURLに設定すると、UTL_HTTPパッケージはそのURLをHTTPリクエスト用のプロキシ・サーバーとして使用する必要があります。環境変数no_proxyをドメイン名に設定すると、HTTPプロキシ・サーバーは指定したドメイン内のURLには使用されません。
関連項目:
UTL_HTTPパッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください
source_typeパラメータの値がユーザー定義の名前の場合、source_locationパラメータにはインポート対象のユーザー定義オブジェクトにアクセスするために必要な識別子文字列が含まれ、source_nameパラメータにはインポート対象のオブジェクトの名前が含まれます。
プラグマ
なし。
例外
ORDDocExceptions.NULL_SOURCE
この例外は、ORDDoc.source属性の値がNULL
の場合に発生します。
ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION
この例外は、importFrom( )メソッドをコールし、source_typeパラメータの値がNULL
の場合に発生します。
ORDSourceExceptions.METHOD_NOT_SUPPORTED
この例外は、importFrom( )メソッドをコールし、使用するソース・プラグインがこのメソッドをサポートしていない場合に発生します。
ORDSYS.ORDDocExceptions.DOC_PLUGIN_EXCEPTION
この例外は、importFrom( )メソッドをコールし、setProperties( )メソッドにメディア・プラグインの例外が発生した場合に発生します。
これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。
例
指定した外部データ・ソースからローカル・ソースにメディア・データをインポートします。
DECLARE obj ORDSYS.ORDDoc; ctx RAW(64) :=NULL; BEGIN SELECT product_testimonials INTO obj FROM pm.online_media WHERE product_id=2999 FOR UPDATE; DBMS_OUTPUT.PUT_LINE('setting and getting source'); DBMS_OUTPUT.PUT_LINE('--------------------------'); -- set source to a file -- import data obj.importFrom(ctx,'file','FILE_DIR','modem.jpg',FALSE); -- check size DBMS_OUTPUT.PUT_LINE('Length: '||TO_CHAR(DBMS_LOB.GETLENGTH(obj.getContent()))); DBMS_OUTPUT.PUT_LINE(obj.getSource()); UPDATE pm.online_media SET product_testimonials=obj WHERE product_id=2999; COMMIT; EXCEPTION WHEN ORDSYS.ORDSourceExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.PUT_LINE('ORDSourceExceptions.METHOD_NOT_SUPPORTED caught'); WHEN ORDSYS.ORDDocExceptions.DOC_PLUGIN_EXCEPTION THEN DBMS_OUTPUT.put_line('DOC PLUGIN EXCEPTION caught'); END; /
9.5.6 setFormat( )
構文
setFormat(knownFormat IN VARCHAR2);
説明
メディア・オブジェクトのformat属性の値を設定します。
使用上の注意
このメソッドをコールすると、setUpdateTime( )メソッドが暗黙的にコールされます。
プラグマ
なし。
例外
ORDDocExceptions.NULL_INPUT_VALUE
この例外は、setFormat( )メソッドをコールし、knownFormatパラメータの値がNULL
の場合に発生します。
ORDDocExceptions.NULL_SOURCE
この例外は、ORDDoc.source属性の値がNULL
の場合に発生します。
これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。
例
メディア・データのフォーマットを設定します。
DECLARE obj ORDSYS.ORDDoc; BEGIN SELECT product_testimonials INTO obj FROM pm.online_media WHERE product_id = 2808 FOR UPDATE; obj.setFormat('PDF'); DBMS_OUTPUT.put_line('format: ' || obj.getformat()); COMMIT; EXCEPTION WHEN ORDSYS.ORDDocExceptions.NULL_INPUT_VALUE THEN DBMS_OUTPUT.put_line('ORDDocExceptions.NULL_INPUT_VALUE caught'); WHEN OTHERS THEN DBMS_OUTPUT.put_line('EXCEPTION caught'); END; /
9.5.7 setProperties( )
構文
setProperties(ctx IN OUT RAW, setComments IN BOOLEAN);
説明
メディア・データを読み取ってオブジェクト属性の値を取得し、取得した値をオブジェクト属性に格納します。このメソッドは、メディア・データの属性(フォーマット、MIMEタイプおよびコンテンツ長)のプロパティを設定します。setCommentsパラメータの値がTRUE
の場合、オブジェクトのコメント・フィールドに、XML形式で様々なフォーマット・プロパティおよびアプリケーション・プロパティが移入されます。
注意:
このメソッドは、ネイティブにサポートされたオーディオ、イメージおよびビデオ・フォーマットのみに有効です。これらのフォーマットの詳細は、それぞれ「Oracle Multimediaで使用するオーディオ・ファイル・フォーマットおよび圧縮形式」、「Oracle Multimediaで使用するイメージ・ファイル・フォーマットおよび圧縮形式」および「Oracle Multimediaで使用するビデオ・ファイル・フォーマットおよび圧縮形式」を参照してください。
パラメータ
- ctx
-
フォーマット・プラグインのコンテキスト情報を指定します。(「ORDDocのメソッドの重要な注意事項」を参照してください。)
- setComments
-
オブジェクトのコメント・フィールドが移入されるかどうかを示すブール値です。値が
TRUE
の場合、オブジェクトのコメント・フィールドにXML形式でメディア・オブジェクトの様々なフォーマット・プロパティおよびアプリケーション・プロパティが移入され、値がFALSE
の場合、オブジェクトのコメント・フィールドは移入されません。デフォルト値はFALSE
です。
使用上の注意
メディア・ソースからプロパティを抽出できない場合、それぞれの属性はNULLに設定されます。
format属性の値がNULLの場合、setProperties( )メソッドは、デフォルトのフォーマット・プラグインを使用します。それ以外の場合は、formatで指定されたプラグインを使用します。
プラグマ
なし。
例外
ORDDocExceptions.DOC_PLUGIN_EXCEPTION
この例外は、setProperties( )メソッドをコールし、メディア・プラグインに例外が発生した場合に発生します。
ORDDocExceptions.NULL_SOURCE
この例外は、ORDDoc.source属性の値がNULL
の場合に発生します。
これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。
例
例1:
既知のメディア属性のプロパティ情報を設定します。
DECLARE obj ORDSYS.ORDDoc; ctx RAW(64) :=NULL; BEGIN SELECT product_testimonials INTO obj FROM pm.online_media WHERE product_id = 2808 FOR UPDATE; obj.setProperties(ctx,FALSE); DBMS_OUTPUT.put_line('format: ' || obj.getformat()); UPDATE pm.online_media SET product_testimonials = obj WHERE product_id=2808; COMMIT; EXCEPTION WHEN ORDSYS.ORDDocExceptions.DOC_PLUGIN_EXCEPTION THEN DBMS_OUTPUT.put_line('DOC PLUGIN EXCEPTION caught'); WHEN OTHERS THEN DBMS_OUTPUT.put_line('EXCEPTION caught'); END; /
例2:
既知のメディア属性のプロパティ情報を設定し、comments属性にフォーマットおよびアプリケーションのプロパティを格納します。Oracle Textを使用して、comments属性の内容に拡張索引を作成します。
DECLARE obj ORDSYS.ORDDoc; ctx RAW(64) :=NULL; BEGIN SELECT product_testimonials INTO obj FROM pm.online_media WHERE product_id = 2999 FOR UPDATE; obj.setProperties(ctx,TRUE); DBMS_OUTPUT.put_line('format: ' || obj.getformat()); UPDATE pm.online_media SET product_testimonials = obj WHERE product_id=2999; COMMIT; EXCEPTION WHEN ORDSYS.ORDDocExceptions.DOC_PLUGIN_EXCEPTION THEN DBMS_OUTPUT.put_line('DOC PLUGIN EXCEPTION caught'); WHEN OTHERS THEN DBMS_OUTPUT.put_line('EXCEPTION caught'); END; /