この章では、次のOracle Multimediaオブジェクト型に使用する共通メソッドのリファレンス情報を示します。
ORDAudio
ORDDoc
ORDImage
ORDVideo
この章の例では、Product Mediaサンプル・スキーマのONLINE_MEDIA表を使用しています。また、第3章、第4章、第5章および第6章の例で示すように、表は移入済であると想定しています。
サンプル・スキーマの詳細は、『Oracle Databaseサンプル・スキーマ』を参照してください。
注意: Oracle Multimediaのメソッドは、内部的に一貫性があるように設計されています。Oracle Multimediaのメソッド(import( )、image process( )など)を使用してメディア・データを変更する場合、Oracle Multimediaは、オブジェクト属性とメディア・データが同期化されることを保証します。ただし、(BLOBを直接変更するか、または外部ソースを変更して)データ自体を操作した場合、オブジェクト属性の同期化が保持され、更新時刻が修正されていることを確認する必要があります。そうしないと、オブジェクト属性がデータと一致しなくなります。 |
ORDSourceオブジェクトは、ORDAudio、ORDDoc、ORDImageおよびORDVideoオブジェクト型に埋め込まれています。ORDSourceオブジェクト型は、様々なマルチメディア・データ・ソースへのアクセスをサポートします。このオブジェクト型は、Oracle DatabaseのBLOB内のデータ・ソースへのローカルなアクセスをサポートします。また、ローカル・ファイル・システムのBFILE、HTTPサーバー上のURLまたは別のサーバー上のユーザー定義ソースからデータ・ソースへの外部的なアクセスをサポートします。ORDSourceオブジェクト型の定義およびORDSource属性でサポートされている次の値の詳細は、第8章を参照してください。
localData: オブジェクト内にBLOBとしてローカルに格納されたマルチメディア・データです。ブロック・サイズに応じて、最大8TBから128TBのデータをBLOBとして格納できます。(BLOBの使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください)。
srcType: データ・ソース・タイプです。
srcLocation: srcTypeの値に基づいてデータが配置された場所です。
srcName: データ・オブジェクト名です。
updateTime: データの最終更新時刻です。
local: データがローカル(1またはNULL)か外部(0(ゼロ))かを示すフラグです。
ORDSourceレベルでコールされたメソッドは、ソース・プラグインに渡されて処理され、最初の引数にctx (RAW)を取ります。これらのメソッドのいずれかをクライアントから初めてコールする場合、ctx構造体を割り当ててNULLに初期化してから、openSource( )メソッドをコールする必要があります。このとき、ソース・プラグインが、このクライアント用にコンテキストを初期化できます。処理が完了したら、クライアントからcloseSource( )メソッドをコールする必要があります。
ORDAudio、ORDDocまたはORDVideoレベルでコールされたメソッドは、フォーマット・プラグインに渡されて処理され、最初の引数にctx (RAW)を取ります。これらのメソッドのいずれかをクライアントから初めてコールする場合、ctx構造体を割り当てて、NULLに初期化する必要があります。
注意: 今回のリリースでは、Oracleが提供するいずれのプラグインもctx構造体を使用しません。また、すべてのソース・プラグインまたはフォーマット・プラグインがctx構造体を使用するわけではありませんが、前述の方法でコーディングすると、アプリケーションは、現行または今後のソース・プラグインまたはフォーマット・プラグインで動作します。 |
ORDAudio、ORDDocまたはORDVideoオブジェクト型では、ネイティブにサポートされていないフォーマットの場合、個々のいずれかのsetメソッドを使用して、オブジェクトの属性値を設定するか、またはフォーマット・プラグインを記述してsetProperties( )メソッドをコールする必要があります。ネイティブにサポートされているフォーマットの場合は、setProperties( )メソッドを使用してオブジェクトの属性を移入します。
ORDImageオブジェクト型の場合は、setProperties( )メソッドを使用してオブジェクトの属性を移入します。ネイティブにサポートされていないフォーマットには、外部イメージ・メソッドにsetProperties( )を使用します。
この項では、Oracle Multimediaオブジェクト型(ORDAudio、ORDDoc、ORDImageおよびORDVideo)に共通のOracle Multimediaメソッドに関するリファレンス情報を示します。
任意のオブジェクト型に固有のメソッド、または各オブジェクト型に対して個別に実装されるメソッドについては、「ORDAudioのメソッド」、「ORDDocのメソッド」、「ORDImageのメソッド」および「ORDVideoのメソッド」を参照してください。
オブジェクト型およびメソッドの詳細は、『Oracle Database概要』を参照してください。
この項で説明するメソッドは、次のとおりです。
構文
clearLocal( );
説明
データが外部に格納されていることを示すために、(埋込みORDSourceオブジェクトの)source.local属性をリセットします。source.local属性が0(ゼロ)に設定されている場合、メディア・メソッドは、source.srcLocation、source.srcNameおよびsource.srcType属性を使用して、対応するデータを検索します。
パラメータ
なし
使用上の注意
このメソッドは、source.local属性を0(データがデータベースの外部に格納されていることを意味する)に設定します。
プラグマ
なし
例外
<object-type>Exceptions.NULL_SOURCE
この例外は、<object-type>.source属性の値がNULLの場合に発生します。
この例外は、ORDAudio、ORDDoc、ORDImageまたはORDVideoオブジェクト型で発生する可能性があります。<object-type>を、このメソッドを適用するオブジェクト型に置き換えてください。
これらの例外の詳細は、付録Hを参照してください。
例
データのローカル・フラグの値を消去します。
DECLARE obj ORDSYS.ORDAudio; BEGIN SELECT product_audio INTO obj FROM pm.online_media WHERE product_id=1733 FOR UPDATE; obj.clearLocal(); UPDATE pm.online_media SET product_audio=obj WHERE product_id=1733; COMMIT; END; /
構文
closeSource(ctx IN OUT RAW) RETURN INTEGER;
説明
データ・ソースをクローズします。
パラメータ
ソース・プラグインのコンテキスト情報を指定します。このパラメータは、常に割り当てて、NULLに初期化する必要があります。ユーザー定義のソース・プラグインを使用する場合は、openSource( )メソッドをコールします。詳細は、2.3項を参照してください。
使用上の注意
RETURN INTEGERには、成功した場合は0(ゼロ)、失敗した場合は0より大きい値(1など)が戻されます。正確な数字とその意味は、プラグインによって定義されます。たとえば、ファイル・プラグインの場合、1は「ファイルが見つからない」、2は「指定したディレクトリが見つからない」という意味です。
プラグマ
なし
例外
<object-type>Exceptions.NULL_SOURCE
この例外は、<object-type>.source属性の値がNULLの場合に発生します。
この例外は、ORDAudio、ORDDoc、ORDImageまたはORDVideoオブジェクト型で発生する可能性があります。<object-type>を、このメソッドを適用するオブジェクト型に置き換えてください。
ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION
この例外は、closeSource( )メソッドをコールし、source.srcType属性の値がNULLの場合に発生します。
ORDSourceExceptions.METHOD_NOT_SUPPORTED
この例外は、closeSource( )メソッドをコールし、使用するソース・プラグインがこのメソッドをサポートしていない場合に発生します。
これらの例外の詳細は、付録Hを参照してください。
例
外部データ・ソースをクローズします。
DECLARE obj ORDSYS.ORDAudio; res INTEGER; ctx RAW(64) :=NULL; BEGIN SELECT product_audio INTO obj FROM pm.online_media WHERE product_id=1733 FOR UPDATE; res := obj.closeSource(ctx); UPDATE pm.online_media SET product_audio=obj WHERE product_id=1733; COMMIT; 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; /
構文
deleteContent( );
説明
(埋込みORDSourceオブジェクトの)source.localData属性からBLOBを削除し、(データがローカルでないことを示すために)source.local属性を0(ゼロ)に設定し、source.updateTime属性を更新します。
パラメータ
なし
使用上の注意
このメソッドは、ローカル・ソースから外部のデータ・ソースへデータをエクスポートした後、ローカル・ソースのデータが不要になった場合にコールできます。
このメソッドは、オブジェクトを最新のオブジェクトに更新する場合にコールします。
プラグマ
なし
例外
<object-type>Exceptions.NULL_SOURCE
この例外は、<object-type>.source属性の値がNULLの場合に発生します。
この例外は、ORDAudio、ORDDoc、ORDImageまたはORDVideoオブジェクト型で発生する可能性があります。<object-type>を、このメソッドを適用するオブジェクト型に置き換えてください。
これらの例外の詳細は、付録Hを参照してください。
例
現行のローカル・ソースからローカル・データを削除します。
DECLARE image ORDSYS.ORDImage; BEGIN SELECT product_photo INTO image FROM pm.online_media WHERE product_id = 3515 FOR UPDATE; -- Delete the local content of the image: image.deleteContent(); COMMIT; END; /
構文
export(ctx IN OUT RAW,
source_type IN VARCHAR2,
source_location IN VARCHAR2,
source_name IN VARCHAR2);
説明
(埋込みORDSourceオブジェクトの)source.localData属性のBLOBから、対応する外部データ・ソースにデータをコピーします。
注意: export( )メソッドは、source_typeパラメータの値がFILEの場合にのみネイティブにサポートされます。この場合、データは、Oracle Databaseにアクセス可能なディレクトリ内にあるファイルに書き込まれます。ユーザー定義ソースによっては、他のタイプのデータ・ストアに対する書込み権限を提供するexport( )メソッドがサポートされる場合があります。 |
パラメータ
ソース・プラグインのコンテキスト情報を指定します。
外部ソース・データのタイプを指定します。このパラメータでは、大/小文字は区別されません。
ソース・データのエクスポート先の位置を指定します。
データのエクスポート先のオブジェクト名を指定します。
使用上の注意
データのエクスポート後、すべての属性は変更されず、source.srcType、source.srcLocationおよびsource.srcNameは入力値で更新されます。export( )メソッドのコール後、clearLocal( )メソッドをコールすると、データがデータベース外に格納されていることを示すことができます。また、source.localData属性の内容を削除するには、deleteContent( )メソッドをコールします。
このメソッドは、export( )メソッドをサポートするユーザー定義ソースにも使用できます。
ソース・タイプがFILEの場合、export( )メソッドは、BLOBに格納されているデータは変更しません。
export( )メソッドは、import( )メソッドと対称的な動作をするわけではありません。export( )メソッドでは、データがデータベース外に格納されていることを示すために、clearLocal( )メソッドが自動的にコールされることはありませんが、import( )メソッドでは、自動的にsetLocal( )メソッドがコールされます。
それ以降でデータベース内のマルチメディア・データを管理しない場合、export( )メソッドをコールした後、deleteContent( )メソッドをコールし、データベースの内容を削除します。
source_typeパラメータの値がFILEの場合、source_locationパラメータはOracleディレクトリ・オブジェクトの名前を、source_nameパラメータはデータが含まれるファイルの名前を指定します。
export( )メソッドは、ユーザーがアクセス権を持つデータベース・ディレクトリのオブジェクトに対してのみ書き込みます。つまり、SQLのCREATE DIRECTORY文を使用して作成したディレクトリ・オブジェクト、または読取りおよび書込み権限を付与されたディレクトリ・オブジェクトにアクセスできます。
たとえば、次のSQL*Plusコマンドを実行すると、ディレクトリ・オブジェクトが作成され、ディレクトリ/mydir/work
内の任意のファイルに対する読取りおよび書込み権限がユーザーron
に付与されます。
CONNECT sys/ as sysdba
Enter password: password
CREATE OR REPLACE DIRECTORY FILE_DIR AS '/mydir/work';
GRANT READ,WRITE ON DIRECTORY FILE_DIR TO ron;
これによって、ユーザーron
は、ORDImageオブジェクトのexport( )メソッドを次のように使用して、このディレクトリにあるtestimg.jpg
ファイルにイメージをエクスポートできます。
img.export('FILE', 'FILE_DIR', testimg.jpg');
このメソッドをコールすると、setUpdateTime( )メソッドが暗黙的にコールされます。
プラグマ
なし
例外
<object-type>Exceptions.NULL_SOURCE
この例外は、<object-type>.source属性の値がNULLの場合に発生します。
この例外は、ORDAudio、ORDDoc、ORDImageまたはORDVideoオブジェクト型で発生する可能性があります。<object-type>を、このメソッドを適用するオブジェクト型に置き換えてください。
ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION
この例外は、export( )メソッドをコールし、source_typeパラメータの値がNULLの場合に発生します。
ORDSourceExceptions.IO_ERROR
この例外は、export( )メソッドを使用して指定したオペレーティング・システムのファイルにBLOBデータを書き込む際に、エラーが発生した場合に発生します。
ORDSourceExceptions.METHOD_NOT_SUPPORTED
この例外は、export( )メソッドをコールし、使用するソース・プラグインがこのメソッドをサポートしていない場合に発生します。
これらの例外の詳細は、付録Hを参照してください。
例
ローカル・ソースから外部データ・ソースへデータをエクスポートします。
-- Create the directory to which you want users to export data. Then,
-- grant write access to the directory for ORDSYS and the user who will be
-- doing the exporting, in this case the user is Ron.
connect /as sysdba
CREATE OR REPLACE DIRECTORY FILE_DIR as '/mydir/work';
GRANT READ,WRITE ON DIRECTORY FILE_DIR TO 'ron';
BEGIN
-- Connect as the user Ron:
CONNECT ron
Enter password: password
set serveroutput on;
set echo on;
DECLARE
obj ORDSYS.ORDImage;
ctx RAW(64) :=NULL;
BEGIN
SELECT product_photo INTO obj FROM pm.online_media
WHERE product_id = 3515;
obj.export(ctx,'file','FILE_DIR','testimg.jpg');
COMMIT;
EXCEPTION
WHEN ORDSYS.ORDSourceExceptions.METHOD_NOT_SUPPORTED THEN
DBMS_OUTPUT.PUT_LINE('Source METHOD_NOT_SUPPORTED caught');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('OTHER EXCEPTION caught');
END;
/
構文
getBFile( ) RETURN BFILE;
説明
メディアを含むBFILEのLOBロケータを戻します。
パラメータ
なし
使用上の注意
このメソッドは、(埋込みORDSourceオブジェクトの)格納されているsource.srcLocationおよびsource.srcName属性の情報を使用して、BFILEを構成し、戻します。source.srcLocation属性には、定義済のディレクトリ・オブジェクトが含まれている必要があります。source.srcName属性は有効なファイル名であり、source.srcTypeはfileである必要があります。
プラグマ
PRAGMA RESTRICT_REFERENCES(getBFile, WNDS, WNPS, RNDS, RNPS)
例外
<object-type>Exceptions.NULL_SOURCE
この例外は、<object-type>.source属性の値がNULLの場合に発生します。
この例外は、ORDAudio、ORDDoc、ORDImageまたはORDVideoオブジェクト型で発生する可能性があります。<object-type>を、このメソッドを適用するオブジェクト型に置き換えてください。
ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION
この例外は、source.srcType属性値がNULLの場合に発生します。
ORDSourceExceptions.INVALID_SOURCE_TYPE
この例外は、source.srcType属性の値がfile以外の場合に発生します。
これらの例外の詳細は、付録Hを参照してください。
例
格納されるソース・ディレクトリおよびファイル名属性のBFILEを戻します。
DECLARE obj ORDSYS.ORDVideo; videobfile BFILE; BEGIN SELECT product_video INTO obj FROM pm.online_media WHERE product_id = 2030; -- Get the video BFILE. videobfile := obj.getBFile(); COMMIT; EXCEPTION WHEN ORDSYS.ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION THEN DBMS_OUTPUT.PUT_LINE('The source.srcType attribute value is NULL'); WHEN ORDSYS.ORDSourceExceptions.INVALID_SOURCE_TYPE THEN DBMS_OUTPUT.PUT_LINE('The value of srcType is not file'); END; /
構文
getContent( ) RETURN BLOB;
説明
(埋込みORDSourceオブジェクトの)source.localData属性に、BLOBハンドルを戻します。
パラメータ
なし
使用上の注意
なし
プラグマ
PRAGMA RESTRICT_REFERENCES(getContent, WNDS, WNPS, RNDS, RNPS)
例外
<object-type>Exceptions.NULL_SOURCE
この例外は、<object-type>.source属性の値がNULLの場合に発生します。
この例外は、ORDAudio、ORDDoc、ORDImageまたはORDVideoオブジェクト型で発生する可能性があります。<object-type>を、このメソッドを適用するオブジェクト型に置き換えてください。
これらの例外の詳細は、付録Hを参照してください。
例
Webベースのプレーヤに配置するビデオ・データにアクセスします。
DECLARE obj ORDSYS.ORDVideo; ctx RAW(64) := NULL; BEGIN SELECT product_video INTO obj FROM pm.online_media WHERE product_id = 2030 FOR UPDATE; -- import data obj.importFrom(ctx,'file','FILE_DIR','printer.rm'); -- check size DBMS_OUTPUT.PUT_LINE('Length is '||TO_CHAR(DBMS_LOB.GETLENGTH(obj.getContent())); DBMS_OUTPUT.PUT_LINE(obj.getSource()); COMMIT; END; /
構文
getMimeType( ) RETURN VARCHAR2;
説明
データのMIMEタイプを戻します。これは、mimeType属性の値を戻す単純なアクセス・メソッドです。
パラメータ
なし
使用上の注意
ソースがHTTPサーバーの場合、メディアがインポートされ、オブジェクト属性に格納されると、HTTPヘッダー情報からMIMEタイプの情報が読み取られます。ソースがファイルまたはBLOBの場合、setProperties( )メソッドがコールされるとMIMEタイプ情報が抽出されます。
認識できないファイル・フォーマットの場合、ユーザーはsetMimeType( )メソッドをコールしてMIMEタイプを指定する必要があります。
mimeType属性に直接アクセスすると、オブジェクトの内部表現を変更してしまう可能性があるため、それを避けるためにこのメソッドを使用します。
プラグマ
PRAGMA RESTRICT_REFERENCES(getMimeType, WNDS, WNPS, RNDS, RNPS)
例外
なし
例
格納されているイメージ・データのMIMEタイプを取得します。
DECLARE image ORDSYS.ORDImage; BEGIN SELECT p.product_photo INTO image FROM pm.online_media p WHERE product_id = 3515; DBMS_OUTPUT.PUT_LINE('writing mimetype'); DBMS_OUTPUT.PUT_LINE('----------------'); DBMS_OUTPUT.PUT_LINE(image.getMimeType()); COMMIT; END; /
構文
getSource( ) RETURN VARCHAR2;
説明
データの外部位置に関する情報をURL形式で戻します。(この情報は、埋込みORDSourceオブジェクトのsource.srcType、source.srcLocationおよびsource.srcName属性の値です。)
パラメータ
なし
使用上の注意
戻り値は、次のとおりです。
ファイル・ソースの場合はFILE://<DIR OBJECT NAME>/<FILE NAME>
HTTPソースの場合はHTTP://<URL>
ユーザー定義ソースの場合は
TYPE://<USER-DEFINED SOURCE LOCATION>/<USER-DEFINED SOURCE NAME>
プラグマ
PRAGMA RESTRICT_REFERENCES(getSource, WNDS, WNPS, RNDS, RNPS)
例外
<object-type>Exceptions.NULL_SOURCE
この例外は、<object-type>.source属性の値がNULLの場合に発生します。
この例外は、ORDAudio、ORDDoc、ORDImageまたはORDVideoオブジェクト型で発生する可能性があります。<object-type>を、このメソッドを適用するオブジェクト型に置き換えてください。
これらの例外の詳細は、付録Hを参照してください。
例
イメージ・データのソースを取得します。
DECLARE image ORDSYS.ORDImage; BEGIN SELECT p.product_photo INTO image FROM pm.online_media p WHERE p.product_id = 3515; -- Get the image source information: DBMS_OUTPUT.PUT_LINE(image.getSource()); COMMIT; END; /
構文
getSourceLocation( ) RETURN VARCHAR2;
説明
外部データ・ソースの位置を示す値(埋込みORDSourceオブジェクトのsource.srcLocation属性の値)を含む文字列を戻します。
パラメータ
なし
使用上の注意
このメソッドは、外部データの位置を示す値を含むVARCHAR2文字列(BFILEDIRなど)を戻します。
プラグマ
PRAGMA RESTRICT_REFERENCES(getSourceLocation, WNDS, WNPS, RNDS, RNPS)
例外
<object-type>Exceptions.NULL_SOURCE
この例外は、<object-type>.source属性の値がNULLの場合に発生します。
この例外は、ORDAudio、ORDDoc、ORDImageまたはORDVideoオブジェクト型で発生する可能性があります。<object-type>を、このメソッドを適用するオブジェクト型に置き換えてください。
ORDSourceExceptions.INCOMPLETE_SOURCE_LOCATION
この例外は、getSourceLocation( )メソッドをコールし、source.srcLocation属性の値がNULLの場合に発生します。
これらの例外の詳細は、付録Hを参照してください。
例
イメージ・データ・ソースの位置情報を取得します。
DECLARE image ORDSYS.ORDImage; BEGIN SELECT p.product_photo INTO image FROM pm.online_media p WHERE p.product_id = 3515; -- Get the image source location. DBMS_OUTPUT.PUT_LINE('Source location is ' || image.getSourceLocation()); COMMIT; END; /
構文
getSourceName( ) RETURN VARCHAR2;
説明
外部データ・ソースの名前(埋込みORDSourceオブジェクトのsource.srcName属性の値)を含む文字列を戻します。
パラメータ
なし
使用上の注意
このメソッドは、外部データ・ソース名を含むVARCHAR2文字列(testimg.datなど)を戻します。
プラグマ
PRAGMA RESTRICT_REFERENCES(getSourceName, WNDS, WNPS, RNDS, RNPS)
例外
<object-type>Exceptions.NULL_SOURCE
この例外は、<object-type>.source属性の値がNULLの場合に発生します。
この例外は、ORDAudio、ORDDoc、ORDImageまたはORDVideoオブジェクト型で発生する可能性があります。<object-type>を、このメソッドを適用するオブジェクト型に置き換えてください。
ORDSourceExceptions.INCOMPLETE_SOURCE_NAME
この例外は、getSourceName( )メソッドをコールし、source.srcName属性の値がNULLの場合に発生します。
これらの例外の詳細は、付録Hを参照してください。
例
イメージ・データ・ソースの名前情報を取得します。
DECLARE image ORDSYS.ORDImage; BEGIN SELECT p.product_photo INTO image FROM pm.online_media p WHERE p.product_id = 3515; -- Get the image source name. DBMS_OUTPUT.PUT_LINE('Source name is ' ||image.getSourceName()); COMMIT; END; /
構文
getSourceType( ) RETURN VARCHAR2;
説明
外部データ・ソースのタイプ(埋込みORDSourceオブジェクトのsource.srcType属性の値)を含む文字列を戻します。
パラメータ
なし
使用上の注意
このメソッドは、外部データ・ソースのタイプを含むVARCHAR2文字列(fileなど)を戻します。
プラグマ
PRAGMA RESTRICT_REFERENCES(getSourceType, WNDS, WNPS, RNDS, RNPS)
例外
<object-type>Exceptions.NULL_SOURCE
この例外は、<object-type>.source属性の値がNULLの場合に発生します。
この例外は、ORDAudio、ORDDoc、ORDImageまたはORDVideoオブジェクト型で発生する可能性があります。<object-type>を、このメソッドを適用するオブジェクト型に置き換えてください。
これらの例外の詳細は、付録Hを参照してください。
例
メディア・データ・ソースのタイプ情報を取得します。
DECLARE obj ORDSYS.ORDDoc; BEGIN SELECT p.product_testimonials INTO obj FROM pm.online_media p WHERE p.product_id= 3060; DBMS_OUTPUT.PUT_LINE('setting and getting source'); DBMS_OUTPUT.PUT_LINE('--------------------------'); -- set source to a file obj.setSource('file','FILE_DIR','speaker.wav'); -- get source information DBMS_OUTPUT.PUT_LINE('Source is ' || obj.getSource()); DBMS_OUTPUT.PUT_LINE('Source type is ' || obj.getSourceType()); DBMS_OUTPUT.PUT_LINE('Source location is ' || obj.getSourceLocation()); DBMS_OUTPUT.PUT_LINE('Source name is ' || obj.getSourceName()); COMMIT; END; /
構文
getUpdateTime( ) RETURN DATE;
説明
オブジェクトの最終更新時刻(埋込みORDSourceオブジェクトのsource.updateTime属性の値)を戻します。
パラメータ
なし
使用上の注意
なし
プラグマ
PRAGMA RESTRICT_REFERENCES(getUpdateTime, WNDS, WNPS, RNDS, RNPS)
例外
<object-type>Exceptions.NULL_SOURCE
この例外は、<object-type>.source属性の値がNULLの場合に発生します。
この例外は、ORDAudio、ORDDoc、ORDImageまたはORDVideoオブジェクト型で発生する可能性があります。<object-type>を、このメソッドを適用するオブジェクト型に置き換えてください。
これらの例外の詳細は、付録Hを参照してください。
例
オーディオ・データの更新時刻を取得します。
DECLARE obj ORDSYS.ORDAudio; BEGIN SELECT p.product_audio INTO obj FROM pm.online_media p WHERE p.product_id = 1733; DBMS_OUTPUT.PUT_LINE('Update time is:'); DBMS_OUTPUT.PUT_LINE(TO_CHAR(obj.getUpdateTime(),'MM-DD-YYYY HH24:MI:SS')); COMMIT; END; /
構文
isLocal( ) RETURN BOOLEAN;
説明
(埋込みORDSourceオブジェクトの)source.local属性の値が1の場合はTRUEを戻し、0(ゼロ)の場合はFALSEを戻します。つまり、データがsource.localData属性のBLOBに格納されている場合はTRUE、データが外部に格納されている場合はFALSEを戻します。
パラメータ
なし
使用上の注意
なし
プラグマ
PRAGMA RESTRICT_REFERENCES(isLocal, WNDS, WNPS, RNDS, RNPS)
例外
<object-type>Exceptions.NULL_SOURCE
この例外は、<object-type>.source属性の値がNULLの場合に発生します。
この例外は、ORDAudio、ORDDoc、ORDImageまたはORDVideoオブジェクト型で発生する可能性があります。<object-type>を、このメソッドを適用するオブジェクト型に置き換えてください。
これらの例外の詳細は、付録Hを参照してください。
例
オーディオ・データがローカルに存在するかどうかを判断します。
DECLARE obj ORDSYS.ORDAudio; BEGIN SELECT p.product_audio INTO obj FROM pm.online_media p WHERE p.product_id = 1733; IF (obj.isLocal() = TRUE) THEN DBMS_OUTPUT.PUT_LINE('local is set true'); ELSE DBMS_OUTPUT.PUT_LINE('local is set false'); END IF; COMMIT; END; /
構文
openSource(userArg IN RAW, ctx OUT RAW) RETURN INTEGER;
説明
データ・ソースをオープンします。
パラメータ
ユーザー引数を指定します。ユーザー定義のソース・プラグインで使用できます。
ソース・プラグインのコンテキスト情報を指定します。
使用上の注意
RETURN INTEGERには、成功した場合は0(ゼロ)、失敗した場合は0より大きい値(1など)が戻されます。正確な数字とその意味は、プラグインによって定義されます。たとえば、ファイル・プラグインの場合、1は「ファイルが見つからない」、2は「指定したディレクトリが見つからない」という意味です。
プラグマ
なし
例外
<object-type>Exceptions.NULL_SOURCE
この例外は、<object-type>.source属性の値がNULLの場合に発生します。
この例外は、ORDAudio、ORDDoc、ORDImageまたはORDVideoオブジェクト型で発生する可能性があります。<object-type>を、このメソッドを適用するオブジェクト型に置き換えてください。
ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION
この例外は、openSource( )メソッドをコールし、source.srcType属性の値がNULLの場合に発生します。
ORDSourceExceptions.METHOD_NOT_SUPPORTED
この例外は、openSource( )メソッドをコールし、使用するソース・プラグインがこのメソッドをサポートしていない場合に発生します。
これらの例外の詳細は、付録Hを参照してください。
例
外部データ・ソースをオープンします。
DECLARE obj ORDSYS.ORDAudio; res INTEGER; ctx RAW(64) :=NULL; userArg RAW(64); BEGIN SELECT p.product_audio INTO obj FROM pm.online_media p WHERE p.product_id = 1733; res := obj.openSource(userArg, ctx); COMMIT; 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; /
構文
processSourceCommand(ctx IN OUT RAW,
cmd IN VARCHAR2,
arguments IN VARCHAR2,
result OUT RAW)
RETURN RAW;
説明
任意のコマンドおよびその引数をソース・プラグインに送信します。このメソッドは、ユーザー定義のソース・プラグインでのみ使用できます。
パラメータ
ソース・プラグインのコンテキスト情報を指定します。このパラメータは、常に割り当てて、NULLに初期化する必要があります。ユーザー定義のソース・プラグインを使用する場合は、openSource( )メソッドをコールします。詳細は、2.3項を参照してください。
ソース・プラグインで認識される任意のコマンドを指定します。
コマンドの引数を指定します。
ソース・プラグインによって戻される、このメソッドのコール結果です。
使用上の注意
このメソッドを使用して、任意のコマンドおよびその引数をソース・プラグインに送信します。指定したコマンドは、このメソッドでは解釈されず、そのまま渡されて処理されます。
プラグマ
なし
例外
<object-type>Exceptions.NULL_SOURCE
この例外は、<object-type>.source属性の値がNULLの場合に発生します。
この例外は、ORDAudio、ORDDoc、ORDImageまたはORDVideoオブジェクト型で発生する可能性があります。<object-type>を、このメソッドを適用するオブジェクト型に置き換えてください。
ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION
この例外は、processSourceCommand( )メソッドをコールし、source.srcType属性の値がNULLの場合に発生します。
ORDSourceExceptions.METHOD_NOT_SUPPORTED
この例外は、processSource( )メソッドをコールし、使用するソース・プラグインがこのメソッドをサポートしていない場合に発生します。
これらの例外の詳細は、付録Hを参照してください。
例
なし
構文
readFromSource(ctx IN OUT RAW,
startPos IN INTEGER,
numBytes IN OUT INTEGER,
buffer OUT RAW);
説明
ソースの開始位置からnバイトのバッファを読み取ります。
パラメータ
ソース・プラグインのコンテキスト情報を指定します。このパラメータは、常に割り当てて、NULLに初期化する必要があります。ユーザー定義のソース・プラグインを使用する場合は、openSource( )メソッドをコールします。詳細は、2.3項を参照してください。
データ・ソースの開始位置を指定します。
データ・ソースから読み取るバイト数を指定します。
データの読取り先バッファが戻されます。
使用上の注意
このメソッドは、HTTPソースにはサポートされていません。
HTTPソース・タイプの読取りを確実に行うには、URLソース全体の読取り要求を実行する必要があります。HTTPソース・タイプ用の読取りメソッドを実装するには、HTTPソース・タイプ用に修正したソース・プラグイン内で、このメソッドを独自に実装する必要があります。
プラグマ
なし
例外
<object-type>Exceptions.NULL_SOURCE
この例外は、<object-type>.source属性の値がNULLの場合に発生します。
この例外は、ORDAudio、ORDDoc、ORDImageまたはORDVideoオブジェクト型で発生する可能性があります。<object-type>を、このメソッドを適用するオブジェクト型に置き換えてください。
ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION
この例外は、readFromSource( )メソッドをコールし、source.srcType属性の値がNULLの場合に発生します。
ORDSourceExceptions.METHOD_NOT_SUPPORTED
この例外は、readFromSource( )メソッドをコールし、使用するソース・プラグインがこのメソッドをサポートしていない場合に発生します。
ORDSourceExceptions.NULL_SOURCE
この例外は、readFromSource( )メソッドをコールし、source.localの値が1またはNULL(TRUE)で、source.localData属性値がNULLの場合に発生します。
これらの例外の詳細は、付録Hを参照してください。
例
ソースからバッファを読み取ります。
DECLARE obj ORDSYS.ORDAudio; buffer RAW(4000); i INTEGER; ctx RAW(64) :=NULL; BEGIN i := 20; SELECT p.product_audio into obj from pm.online_media p WHERE p.product_id = 1733; obj.readFromSource(ctx,1,i,buffer); DBMS_OUTPUT.PUT_LINE('Length is ' || TO_CHAR(obj.getContentLength(ctx))); COMMIT; EXCEPTION WHEN ORDSYS.ORDSourceExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.PUT_LINE('ORDSourceExceptions.METHOD_NOT_SUPPORTED caught'); WHEN ORDSYS.ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION THEN DBMS_OUTPUT.PUT_LINE('ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION caught'); WHEN ORDSYS.ORDSourceExceptions.NULL_SOURCE THEN DBMS_OUTPUT.PUT_LINE('ORDSourceExceptions.NULL_SOURCE caught'); WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('EXCEPTION caught'); END; /
構文
setLocal( );
説明
データがBLOB内部に格納されていることを示すために、(埋込みORDSourceオブジェクトの)source.local属性を設定します。source.local属性が設定されている場合、メソッドはsource.localData属性で対応するデータを検索します。
パラメータ
なし
使用上の注意
このメソッドは、source.local属性を1(データがsource.localData属性にローカルに格納されていることを意味する)に設定します。
プラグマ
なし
例外
<object-type>Exceptions.NULL_LOCAL_DATA
この例外は、setLocal( )メソッドをコールし、source.localData属性の値がNULLの場合に発生します。
この例外は、ORDAudio、ORDDoc、ORDImageまたはORDVideoオブジェクト型で発生する可能性があります。<object-type>を、このメソッドを適用するオブジェクト型に置き換えてください。
<object-type>Exceptions.NULL_SOURCE
この例外は、<object-type>.source属性の値がNULLの場合に発生します。
この例外は、ORDAudio、ORDDoc、ORDImageまたはORDVideoオブジェクト型で発生する可能性があります。<object-type>を、このメソッドを適用するオブジェクト型に置き換えてください。
これらの例外の詳細は、付録Hを参照してください。
例
データのフラグをローカルに設定します。
DECLARE obj ORDSYS.ORDAudio; BEGIN SELECT product_audio INTO obj FROM online_media WHERE product_id = 1733; obj.setLocal; UPDATE online_media SET product_audio = obj WHERE product_id = 1733; COMMIT; END; /
構文
setMimeType(mime IN VARCHAR2);
説明
データのMIMEタイプを設定します。
パラメータ
MIMEタイプを指定します。
使用上の注意
指定したMIME値でこのメソッドをコールし、MIME情報の自動設定を無効にできます。
このメソッドをコールすると、setUpdateTime( )メソッドが暗黙的にコールされます。
このメソッドは、setProperties( )メソッドから暗黙的にコールされます。
イメージ・オブジェクトの場合、process( )およびprocessCopy( )メソッドでもこのメソッドが暗黙的にコールされます。
プラグマ
なし
例外
<object-type>Exceptions.INVALID_MIME_TYPE
この例外は、setMimeType( )メソッドをコールし、mimeパラメータの値がNULLの場合に発生します。
この例外は、ORDAudio、ORDDocまたはORDVideoオブジェクト型で発生する可能性があります。<object-type>を、このメソッドを適用するオブジェクト型に置き換えてください。
<object-type>Exceptions.NULL_SOURCE
この例外は、<object-type>.source属性の値がNULLの場合に発生します。
この例外は、ORDAudio、ORDDoc、ORDImageまたはORDVideoオブジェクト型で発生する可能性があります。<object-type>を、このメソッドを適用するオブジェクト型に置き換えてください。
これらの例外の詳細は、付録Hを参照してください。
例
格納されているデータに、MIMEタイプを設定します。
DECLARE obj ORDSYS.ORDAudio; BEGIN SELECT p.product_audio INTO obj FROM pm.online_media p WHERE p.product_id = 1733 FOR UPDATE; DBMS_OUTPUT.PUT_LINE('writing current mimetype'); DBMS_OUTPUT.PUT_LINE('----------------'); DBMS_OUTPUT.PUT_LINE(obj.getMimeType()); DBMS_OUTPUT.PUT_LINE('setting and writing new mimetype'); DBMS_OUTPUT.PUT_LINE('----------------'); obj.setMimeType('audio/basic'); DBMS_OUTPUT.PUT_LINE(obj.getMimeType()); UPDATE pm.online_media p SET p.product_audio = obj WHERE p.product_id = 1733; COMMIT; END; /
構文
setSource(source_type IN VARCHAR2,
source_location IN VARCHAR2,
source_name IN VARCHAR2);
説明
データの外部ソース情報を設定または変更します。
パラメータ
外部ソース・データのタイプを指定します。詳細は、第8章のORDSourceオブジェクト型の定義を参照してください。
外部ソース・データの位置を指定します。詳細は、第8章のORDSourceオブジェクト型の定義を参照してください。
外部ソース・データの名前を指定します。詳細は、第8章のORDSourceオブジェクト型の定義を参照してください。
使用上の注意
このメソッドを使用して、データ・ソースを新しいFILEまたはURLに設定できます。
このメソッドを使用する前に、source_locationパラメータで指定したディレクトリが存在するか、または作成されていることを確認する必要があります。
このメソッドをコールすると、source.setUpdateTime( )およびclearLocal( )メソッドが暗黙的にコールされます。
プラグマ
なし
例外
<object-type>Exceptions.NULL_SOURCE
この例外は、<object-type>.source属性の値がNULLの場合に発生します。
この例外は、ORDAudio、ORDDoc、ORDImageまたはORDVideoオブジェクト型で発生する可能性があります。<object-type>を、このメソッドを適用するオブジェクト型に置き換えてください。
ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION
この例外は、setSource( )メソッドをコールし、source.srcType属性の値がNULLの場合に発生します。
これらの例外の詳細は、付録Hを参照してください。
例
データのソースを設定します。
DECLARE obj ORDSYS.ORDAudio; BEGIN SELECT p.product_audio INTO obj FROM pm.online_media p WHERE p.product_id = 1733 FOR UPDATE; DBMS_OUTPUT.PUT_LINE('setting and getting source'); DBMS_OUTPUT.PUT_LINE('--------------------------'); obj.setSource('file','FILE_DIR','audio.au'); DBMS_OUTPUT.PUT_LINE(obj.getSource()); UPDATE pm.online_media p SET p.product_audio = obj WHERE p.product_id = 1733; COMMIT; END; /
構文
setUpdateTime(current_time DATE);
説明
データの最終更新時刻(埋込みORDSourceオブジェクトのsource.srcUpdateTime属性)を設定します。データを変更した場合は、必ずこのメソッドを使用します。このメソッドは、オブジェクトの属性を変更するメソッドおよびすべてのsetメディア・アクセス・メソッドから暗黙的にコールされます。たとえば、setMimeType( )、setSource( )およびdeleteContent( )メソッドは、このメソッドを暗黙的にコールします。
パラメータ
格納するタイムスタンプを指定します。デフォルトはSYSDATEです。
使用上の注意
オブジェクト・メソッドを使用せずにデータを変更した場合は、必ずこのメソッドをコールします。
プラグマ
なし
例外
<object-type>Exceptions.NULL_SOURCE
この例外は、<object-type>.source属性の値がNULLの場合に発生します。
この例外は、ORDAudio、ORDDoc、ORDImageまたはORDVideoオブジェクト型で発生する可能性があります。<object-type>を、このメソッドを適用するオブジェクト型に置き換えてください。
これらの例外の詳細は、付録Hを参照してください。
例
データの更新時刻を設定します。
DECLARE obj ORDSYS.ORDAudio; BEGIN SELECT p.product_audio INTO obj FROM pm.online_media p WHERE p.product_id = 1733 FOR UPDATE; DBMS_OUTPUT.PUT_LINE('current update time:'); DBMS_OUTPUT.PUT_LINE(obj.getUpdateTime()); DBMS_OUTPUT.PUT_LINE('set and get new update time:'); obj.setUpdateTime(SYSDATE); DBMS_OUTPUT.PUT_LINE(obj.getUpdateTime()); UPDATE pm.online_media p SET p.product_audio = obj WHERE p.product_id = 1733; COMMIT; END; /
構文
trim(ctx IN OUT RAW,
newlen IN INTEGER) RETURN INTEGER;
説明
データ・ソースを切り捨てます。
パラメータ
ソース・プラグインのコンテキスト情報を指定します。このパラメータは、常に割り当てて、NULLに初期化する必要があります。ユーザー定義のソース・プラグインを使用する場合は、openSource( )メソッドをコールします。詳細は、2.3項を参照してください。
切捨て後の新しい長さを指定します。
使用上の注意
RETURN INTEGERには、成功した場合は0(ゼロ)、失敗した場合は0より大きい値(1など)が戻されます。正確な数字とその意味は、プラグインによって定義されます。たとえば、ファイル・プラグインの場合、1は「ファイルが見つからない」、2は「指定したディレクトリが見つからない」という意味です。
プラグマ
なし
例外
<object-type>Exceptions.NULL_SOURCE
この例外は、<object-type>.source属性の値がNULLの場合に発生します。
この例外は、ORDAudio、ORDDoc、ORDImageまたはORDVideoオブジェクト型で発生する可能性があります。<object-type>を、このメソッドを適用するオブジェクト型に置き換えてください。
ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION
この例外は、trimSource( )メソッドをコールし、source.srcType属性の値がNULLの場合に発生します。
ORDSourceExceptions.METHOD_NOT_SUPPORTED
この例外は、trimSource( )メソッドをコールし、使用するソース・プラグインがこのメソッドをサポートしていない場合に発生します。
これらの例外の詳細は、付録Hを参照してください。
例
外部データ・ソースを切り捨てます。
DECLARE obj ORDSYS.ORDAudio; res INTEGER; ctx RAW(64) :=NULL; BEGIN SELECT p.product_audio INTO obj FROM pm.online_media p WHERE p.product_id = 1733 FOR UPDATE; res := obj.trimSource(ctx,0); UPDATE pm.online_media p SET p.product_audio = obj WHERE p.product_id = 1733; COMMIT; EXCEPTION WHEN ORDSYS.ORDSourceExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.PUT_LINE('ORDSourceExceptions.METHOD_NOT_SUPPORTED caught'); WHEN ORDSYS.ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION THEN DBMS_OUTPUT.PUT_LINE('ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION caught'); WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('EXCEPTION caught'); END; /
構文
writeToSource(
ctx IN OUT RAW,
startPos IN INTEGER,
numBytes IN OUT INTEGER,
buffer IN RAW);
説明
ソースの開始位置からnバイトのバッファを書き込みます。
パラメータ
ソース・プラグインのコンテキスト情報を指定します。このパラメータは、常に割り当てて、NULLに初期化する必要があります。ユーザー定義のソース・プラグインを使用する場合は、openSource( )メソッドをコールします。詳細は、2.3項を参照してください。
バッファのコピー先のソースの開始位置を指定します。
ソースに書き込むバイト数を指定します。
データの書込み先のバッファを指定します。
使用上の注意
このメソッドは、ソースで、任意のバイト位置からnバイトの書込みが可能であることを想定しています。fileおよびHTTPソース・タイプは書込みできないため、このメソッドをサポートしていません。このメソッドは、データがローカルのBLOBに格納されているか、またはユーザー定義ソース・プラグインを介してデータにアクセス可能な場合に使用できます。
プラグマ
なし
例外
<object-type>Exceptions.NULL_SOURCE
この例外は、<object-type>.source属性の値がNULLの場合に発生します。
この例外は、ORDAudio、ORDDoc、ORDImageまたはORDVideoオブジェクト型で発生する可能性があります。<object-type>を、このメソッドを適用するオブジェクト型に置き換えてください。
ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION
この例外は、writeToSource( )メソッドをコールし、source.srcType属性の値がNULLの場合に発生します。
ORDSourceExceptions.METHOD_NOT_SUPPORTED
この例外は、writeToSource( )メソッドをコールし、使用するソース・プラグインがこのメソッドをサポートしていない場合に発生します。
ORDSourceExceptions.NULL_SOURCE
この例外は、writeToSource( )メソッドをコールし、source.localの値が1またはNULL(TRUE)で、source.localData属性の値がNULLの場合に発生します。
これらの例外の詳細は、付録Hを参照してください。
例
ソースにバッファを書き込みます。
DECLARE obj ORDSYS.ORDAudio; n INTEGER := 6; ctx RAW(64) :=NULL; BEGIN SELECT p.product_audio INTO obj FROM pm.online_media p WHERE p.product_id = 1743 FOR UPDATE; obj.writeToSource(ctx,1,n,UTL_RAW.CAST_TO_RAW('helloP')); UPDATE pm.online_media p SET p.product_audio = obj WHERE p.product_id = 1743; DBMS_OUTPUT.PUT_LINE('Length is ' || TO_CHAR(obj.getContentLength(ctx))); -- Roll back the transaction to keep the sample schema unchanged. ROLLBACK; 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; /