4 Oracle Multimedia ORD_DOC PL/SQLパッケージ
Oracle Multimediaでは、ORD_DOC PL/SQLパッケージが提供されます。このパッケージには、一般的な操作(オペレーティング・システム・ファイルを対象とするメディア・データのインポートおよびエクスポートや、メディア・データからの情報の抽出など)を実行するためのプロシージャが含まれます。
このパッケージにより、BLOBおよびBFILEに格納されているオーディオ、イメージ、ビデオおよびその他の異機種間メディア・データにOracle Multimediaサポートが追加されます。
ORD_DOCパッケージは、orddrpsp.sql
ファイルに定義されています。インストール後、このファイルは次のOracleホーム・ディレクトリに格納されています。
<ORACLE_HOME>
/ord/im/admin
(LinuxおよびUNIXの場合)
<ORACLE_HOME>
\ord\im\admin
(Windowsの場合)
これらのトピックの例では、DOCDIRディレクトリと、TAUD、TDOC、TIMGおよびTVIDの各表が存在すると仮定します。
ORD_DOC PL/SQLパッケージのプロシージャの詳細は、次のトピックを参照してください。
関連項目:
-
オペレーティング・システム・ファイルを対象にメディア・データをエクスポートおよびインポートする方法の詳細は、「すべてのOracle Multimedia PL/SQLパッケージAPIに共通のプロシージャ」を参照してください
-
例で使用されている表およびディレクトリの詳細は、Oracle Multimedia PL/SQLパッケージの例を参照してください。
4.1 ORD_DOC PL/SQLパッケージ: BFILEのgetProperties( )
構文
getProperties(docBfile IN OUT NOCOPY BFILE,
attributes IN OUT NOCOPY CLOB);
説明
BFILEに格納されたドキュメント・データを読み取ってサポートしているフォーマットのメディア属性の値を取得し、入力CLOBに格納します。このプロシージャは、XML形式で一連のフォーマット・プロパティおよびアプリケーション・プロパティをCLOBに移入します。
パラメータ
使用上の注意
なし。
プラグマ
なし。
例外
なし。
例
既知のドキュメント属性のプロパティ情報を取得します。
DECLARE
doc_attrib CLOB;
doc_data BFILE:=BFILENAME('DOCDIR','testvid.dat');
BEGIN
DBMS_LOB.CREATETEMPORARY(doc_attrib, FALSE, DBMS_LOB.CALL);
-- get properties from bfile
ORDSYS.ORD_DOC.getProperties(doc_data, doc_attrib);
-- print length of extracted properties
DBMS_OUTPUT.PUT_LINE('Size of XML Annotations ' ||
TO_CHAR(DBMS_LOB.GETLENGTH(doc_attrib)));
EXCEPTION
WHEN OTHERS THEN
RAISE;
END;
/
4.2 ORD_DOC PL/SQLパッケージ: BFILEのgetProperties( ) (すべての属性)
構文
getProperties(docBfile IN OUT NOCOPY BFILE,
mimeType OUT VARCHAR2,
format OUT VARCHAR2,
contentLength OUT INTEGER);
説明
BFILEに格納されたドキュメント・データを読み取ってサポートしているフォーマットのメディア属性の値を取得し、明示的パラメータとして戻します。このプロシージャは、ドキュメント・データの属性(MIMEタイプ、コンテンツ長およびフォーマット)のプロパティを抽出します。
パラメータ
使用上の注意
メディア・ソースからプロパティを抽出できない場合、それぞれのパラメータがNULLに設定されます。
プラグマ
なし。
例外
なし。
例
既知のドキュメント属性のプロパティ情報を取得します。
DECLARE
doc_data BFILE:=BFILENAME('DOCDIR','testimg.dat');
doc_mimeType VARCHAR2(80);
doc_format VARCHAR2(32):=NULL;
doc_contentLength NUMBER;
BEGIN
-- get properties from bfile
ORDSYS.ORD_DOC.getProperties(doc_data,
doc_mimeType, doc_format, doc_contentLength);
-- print properties
DBMS_OUTPUT.PUT_LINE('mimeType: ' || doc_mimeType );
DBMS_OUTPUT.PUT_LINE('format: ' || doc_format );
DBMS_OUTPUT.PUT_LINE('contentLength: ' || doc_contentLength );
EXCEPTION
WHEN OTHERS THEN
RAISE;
END;
/
4.3 ORD_DOC PL/SQLパッケージ: BLOBのgetProperties( )
構文
getProperties(docBlob IN BLOB,
attributes IN OUT NOCOPY CLOB);
説明
BLOBに格納されたドキュメント・データを読み取ってサポートしているフォーマットのメディア属性の値を取得し、入力CLOBに格納します。このプロシージャは、ドキュメント・データの属性(MIMEタイプ、コンテンツ長およびフォーマット)のプロパティを抽出します。このプロシージャは、XML形式で一連のフォーマット・プロパティおよびアプリケーション・プロパティをCLOBに移入します。
パラメータ
使用上の注意
なし。
プラグマ
なし。
例外
ORDSourceExceptions.EMPTY_SOURCE
この例外は、入力docBLOBパラメータがNULLの場合に発生します。
例
既知のドキュメント属性のプロパティ情報を取得します。
DECLARE
doc_attrib CLOB;
doc_data BLOB;
BEGIN
SELECT document,attributes INTO doc_data,doc_attrib
FROM tdoc WHERE N=1 FOR UPDATE;
-- get properties from blob
ORDSYS.ORD_DOC.getProperties(doc_data, doc_attrib);
-- print length of extracted properties
DBMS_OUTPUT.PUT_LINE('Size of XML Annotations ' ||
TO_CHAR(DBMS_LOB.GETLENGTH(doc_attrib)));
UPDATE tdoc SET document=doc_data, attributes=doc_attrib WHERE N=1;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
RAISE;
END;
/
4.4 ORD_DOC PL/SQLパッケージ: BLOBのgetProperties( ) (すべての属性)
構文
getProperties(docBLOB IN BLOB,
mimeType OUT VARCHAR2,
format OUT VARCHAR2,
contentLength OUT INTEGER);
説明
BLOBに格納されたドキュメント・データを読み取ってサポートしているフォーマットのメディア属性の値を取得し、明示的パラメータとして戻します。このプロシージャは、ドキュメント・データの属性(MIMEタイプ、コンテンツ長およびフォーマット)のプロパティを抽出します。
パラメータ
使用上の注意
メディア・ソースからプロパティを抽出できない場合、それぞれのパラメータがNULLに設定されます。
プラグマ
なし。
例外
ORDSourceExceptions.EMPTY_SOURCE
この例外は、入力docBLOBパラメータがNULLの場合に発生します。
例
既知のドキュメント属性のプロパティ情報を取得します。
DECLARE
doc_data BLOB;
doc_mimeType VARCHAR2(80);
doc_format VARCHAR2(32):=NULL;
doc_contentLength NUMBER;
BEGIN
SELECT document, mimetype, format, contentlength
INTO doc_data, doc_mimeType, doc_format, doc_contentLength
FROM tdoc WHERE N=1 FOR UPDATE;
-- get properties from blob
ORDSYS.ORD_DOC.getProperties(doc_data, doc_mimeType, doc_format,
doc_contentLength);
-- print properties
DBMS_OUTPUT.PUT_LINE('mimeType: ' || doc_mimeType );
DBMS_OUTPUT.PUT_LINE('format: ' || doc_format );
DBMS_OUTPUT.PUT_LINE('contentLength: ' || doc_contentLength );
UPDATE tdoc SET
document=doc_data,
mimetype=doc_mimeType,
format=doc_format,
contentlength=doc_contentLength
WHERE N=1;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
RAISE;
END;
/