7 すべてのOracle Multimediaオブジェクト型に共通のメソッド

Oracle Multimediaオブジェクト型には、マルチメディア・データをOracle Databaseとローカル・ファイル・システムとの間で移動できるようにする、いくつかの共通メソッドがあります。

これらの共通メソッドは、次のオブジェクト型ごとに同一であるため、この章で定義されています。

  • ORDAudio

  • ORDDoc

  • ORDImage

  • ORDVideo

関連項目:

DICOMフォーマットの医学イメージおよびその他のデータを格納、管理および操作するためのORDDicomオブジェクト型およびメソッドの詳細は、Oracle Multimedia DICOM開発者ガイドを参照してください

7.1 共通メソッドの例

ここで提供される例では、Oracle Database Product Media (PM)サンプル・スキーマのONLINE_MEDIA表を使用しています。Oracle Databaseサンプル・スキーマは、GitHubで使用できます。これらの例では、「Oracle Multimedia ORDAudioオブジェクト型」「Oracle Multimedia ORDDocオブジェクト型」「Oracle Multimedia ORDImageオブジェクト型」および「Oracle Multimedia ORDVideoオブジェクト型」の例で示すように表が移入されていると仮定します。

注意:

Oracle Multimediaのメソッドは、内部的に矛盾しないように設計されています。Oracle Multimediaのメソッド(import( )やイメージprocess( )など)を使用してメディア・データを変更する場合、Oracle Multimediaによって、オブジェクト属性がメディア・データとの同期を維持することが保証されます。ただし、BLOBを直接修正するか、または外部ソースを変更してデータ自体を操作した場合、オブジェクト属性の同期が維持されていることと、更新時刻が修正されていることを確認する必要があります。そうしないと、オブジェクト属性がデータと一致しなくなります。

7.2 埋込みORDSourceオブジェクト

ORDSourceオブジェクトは、ORDAudio、ORDDoc、ORDImageおよびORDVideoオブジェクト型に埋め込まれます。ORDSourceオブジェクト型は、様々なマルチメディア・データ・ソースへのアクセスをサポートします。サポートされるデータ・ソースへのアクセスには、Oracle Database内のBLOBへのローカル・アクセス、ローカル・ファイル・システム上のBFILEに基づく外部アクセス、HTTPサーバー上のURLに基づく外部アクセス、または別のサーバー上のユーザー定義ソースに基づく外部アクセスがあります。

データがOracle Database内のBLOBにローカルに格納されている場合、メディア・データの検出にlocalData属性が使用され、localフラグはデータがローカルであることを示します。srcType、srcLocationおよびsrcName属性は使用されません。

データがBFILE、URLまたはユーザー定義ソースに外部的に格納されている場合、メディア・データの検出にsrcType、srcLocationおよびsrcName属性が使用され、localフラグはデータが外部であることを示します。

次のORDSourceの属性を含むORDSourceオブジェクト型の定義方法の詳細は、「ORDSourceオブジェクト型」を参照してください。

  • localData: オブジェクト内にBLOBとしてローカルに格納されたマルチメディア・データです。

  • srcType: データ・ソース・タイプです。(「srcType属性の定義」を参照してください。)

  • srcLocation: srcTypeの値に基づいてデータが配置された場所です。(「srcLocation属性の定義」を参照してください。)

  • srcName: データ・オブジェクト名です。(「srcName属性の定義」を参照してください。)

  • updateTime: データの最終更新時刻です。

  • local: データがローカルか外部かを示すフラグです。

注意:

HTTPソースでは、srcLocation属性とsrcName属性が連結されて、メディア・オブジェクトの場所を特定するURLが作成されます。次に例を示します。

srcTypeがHTTP、srcLocationがwww.example.com/images/、srcNameがexample.jpgの場合、メディアの場所を示すURLは、http://www.example.com/images/example.jpgになります。

7.2.1 srcType属性の定義

表7-1に、srcType属性の有効な値を示します。

表7-1 srcTypeの値

説明

FILE

ローカル・ファイル・システム上のBFILE

HTTP

HTTPサーバー

<name>

ユーザー定義

FILE

srcTypeの値FILEは、オラクル社が提供するBFILEソース・プラグイン用の予約語です。独自のファイル・プラグインを実装する場合は、異なる名前(MYFILEなど)を選択してください。

HTTP

srcTypeの値HTTPは、オラクル社が提供するHTTPソース・プラグイン用の予約語です。

7.2.2 srcLocation属性の定義

表7-2に、srcLocation属性の有効な値と、対応するsrcTypeの値を示します。

表7-2 srcLocationの値と対応するsrcTypeの値

srcType ロケーション値

FILE

データベース・ディレクトリ・オブジェクトの名前

HTTP

メディア・ディレクトリの場所を示すベースURL (接頭辞http://は不要)

<name>

ユーザー定義ソースへのアクセスに必要な識別子文字列

7.2.3 srcName属性の定義

表7-3に、srcName属性の有効な値と、対応するsrcTypeの値を示します。

表7-3 srcNameの値と対応するsrcTypeの値

srcType ロケーション名

FILE

ファイルの名前です

HTTP

オブジェクトの名前。

<name>

オブジェクトの名前。

7.3 共通メソッドの重要な注意事項

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( )を使用します。

7.4 インストールおよびアップグレードの重要な考慮事項

Oracle Database 11gリリース2 (11.2)で導入された新しいデータベース・セキュリティ対策では、メディア・コンテンツにHTTPソースを使用するOracle Multimediaアプリケーションに追加の構成手順が必要です。次の問合せを使用して、メディア列にHTTPソースが含まれるかどうかを判別できます。この問合せでは、表名がMEDIA_TABLEで、列名がMEDIA_COLUMNであるとします。

  SELECT count(*) 
   FROM MEDIA_TABLE m
   WHERE m.MEDIA_COLUMN.source.srcType = 'HTTP'
     AND m.MEDIA_COLUMN.source.local IS NOT NULL 
     AND m.MEDIA_COLUMN.source.local <> 1

Oracle Multimediaでは、PL/SQLパッケージのUTL_HTTPを使用して、HTTPソースのメディア・コンテンツにアクセスします。アプリケーション・ユーザーは、リモート・ホストに接続するための適切な権限を持っている必要があります。たとえば、ユーザーSCOTTに、ホストwwww.oracle.com:80にあるHTTPコンテンツへのアクセス権を付与する場合、データベース管理者は、次のコマンドを実行する必要があります。

SQL> REM Creates a new ACL and adds SCOTT the privilege to the ACL to make 
SQL> REM TCP connections
SQL> EXECUTE DBMS_NETWORK_ACL_ADMIN.CREATE_ACL('acl_for_oracle.xml', -
> 'ACL for www.oracle.com', 'SCOTT', TRUE, 'connect')
 
SQL> REM Assigns the new ACL to www.oracle.com for TCP/IP port 80 (HTTP)
SQL> EXECUTE DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL('acl_for_oracle.xml', -
> 'www.oracle.com', 80)
 
SQL> REM Commits to make the ACL take effect
SQL> COMMIT

関連項目:

7.5 共通メソッド

Oracle Multimediaのいくつかのメソッドは、ORDAudio、ORDDoc、ORDImageおよびORDVideoというOracle Multimediaオブジェクト型に共通です。

注意:

<object-type>は、ORDAudio、ORDDoc、ORDImageまたはORDVideoオブジェクト型で発生する可能性のある例外を表します。<object-type>を適切なオブジェクト型に置き換えてください。

オブジェクト型に固有であるか、各オブジェクト型で実装形式が異なるOracle Multimediaのメソッドについて、次の章で説明します。

関連項目:

オブジェクト型およびメソッドの詳細は、『Oracle Database概要』を参照してください

7.5.1 clearLocal( )

構文

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>を、このメソッドを適用するオブジェクト型に置き換えてください。

これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。

データのローカル・フラグの値を消去します。

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;
 /

7.5.2 closeSource( )

構文

closeSource(ctx IN OUT RAW) RETURN INTEGER;

説明

データ・ソースをクローズします。

パラメータ

ctx

ソース・プラグインのコンテキスト情報を指定します。このパラメータは、常に割り当てて、NULLに初期化する必要があります。ユーザー定義のソース・プラグインを使用する場合は、openSource( )メソッドをコールします。(「共通メソッドの重要な注意事項」を参照してください。)

使用上の注意

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( )メソッドをコールし、使用するソース・プラグインがこのメソッドをサポートしていない場合に発生します。

これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。

外部データ・ソースをクローズします。

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;
/

7.5.3 deleteContent( )

構文

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>を、このメソッドを適用するオブジェクト型に置き換えてください。

これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。

現行のローカル・ソースからローカル・データを削除します。

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;
/

7.5.4 export( )

構文

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データベースにアクセス可能なディレクトリ内にあるファイルに書き込まれます。ユーザー定義ソースによっては、他のタイプのデータ・ストアに対する書込み権限を提供するexport( )メソッドがサポートされる場合があります。

パラメータ

ctx

ソース・プラグインのコンテキスト情報を指定します。(「共通メソッドの重要な注意事項」を参照してください。)

source_type

外部ソース・データのタイプを指定します。このパラメータでは、大/小文字は区別されません。(表7-1を参照してください。)

source_location

ソース・データのエクスポート先の位置を指定します。(表7-2を参照してください。)

source_name

データのエクスポート先のオブジェクト名を指定します。(表7-3を参照してください。)

使用上の注意

データをエクスポートした後も、すべての属性は変更されないままで、source.srcType、source.srcLocationおよびsource.srcNameは入力値で更新されます。export( )メソッドをコールした後で、clearLocal( )メソッドをコールしてデータがデータベースの外部に格納されていることを示したり、deleteContent( )メソッドをコールしてsource.localData属性のコンテンツを削除できます。

source_typeパラメータの値がFILEの場合、source_locationパラメータはOracleディレクトリ・オブジェクトの名前を、source_nameパラメータはデータが含まれるファイルの名前を指定します。

export( )メソッドは、ユーザーがアクセス権を持つデータベース・ディレクトリのオブジェクトに対してのみ書き込みます。つまり、SQL文のCREATE DIRECTORYを使用して作成したディレクトリ・オブジェクト、または読取りおよび書込み権限を付与されたディレクトリ・オブジェクトにアクセスできます。

たとえば、次のSQL*Plusコマンドを実行すると、ディレクトリ・オブジェクトが作成され、ディレクトリc:\mydir\work内の任意のファイルに対する読取りおよび書込み権限がユーザーronに付与されます。これらのコマンドを実行する前に、ディレクトリ・オブジェクトを作成する権限を持ったユーザーとして接続しておく必要があります。

CREATE OR REPLACE DIRECTORY FILE_DIR AS 'c:\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.METHOD_NOT_SUPPORTED

この例外は、export( )メソッドをコールし、使用するソース・プラグインがこのメソッドをサポートしていない場合に発生します。

これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。

ローカル・ソースから外部データ・ソースへデータをエクスポートします。

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;
/

7.5.5 getBFile( )

構文

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以外の場合に発生します。

これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。

格納されるソース・ディレクトリおよびファイル名属性の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;
/

7.5.6 getContent( )

構文

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>を、このメソッドを適用するオブジェクト型に置き換えてください。

これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。

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;
/

7.5.7 getMimeType( )

構文

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;
/

7.5.8 getSource( )

構文

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>を、このメソッドを適用するオブジェクト型に置き換えてください。

これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。

イメージ・データのソースを取得します。

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;
/

7.5.9 getSourceLocation( )

構文

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の場合に発生します。

これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。

イメージ・データ・ソースの位置情報を取得します。

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;
/

7.5.10 getSourceName( )

構文

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の場合に発生します。

これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。

イメージ・データ・ソースの名前情報を取得します。

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;
/

7.5.11 getSourceType( )

構文

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>を、このメソッドを適用するオブジェクト型に置き換えてください。

これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。

メディア・データ・ソースのタイプ情報を取得します。

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;
/

7.5.12 getUpdateTime( )

構文

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>を、このメソッドを適用するオブジェクト型に置き換えてください。

これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。

オーディオ・データの更新時刻を取得します。

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;
/

7.5.13 isLocal( )

構文

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>を、このメソッドを適用するオブジェクト型に置き換えてください。

これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。

オーディオ・データがローカルに存在するかどうかを判断します。

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;
/

7.5.14 openSource( )

構文

openSource(userArg IN RAW, ctx OUT RAW) RETURN INTEGER;

説明

データ・ソースをオープンします。

パラメータ

userArg

ユーザー引数を指定します。このパラメータは、ユーザー定義のソース・プラグインで使用できます。

ctx

ソース・プラグインのコンテキスト情報を指定します。(「共通メソッドの重要な注意事項」を参照してください。)

使用上の注意

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( )メソッドをコールし、使用するソース・プラグインがこのメソッドをサポートしていない場合に発生します。

これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。

外部データ・ソースをオープンします。

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;
/

7.5.15 processSourceCommand( )

構文

processSourceCommand(ctx        IN OUT RAW,
                     cmd        IN VARCHAR2,
                     arguments  IN VARCHAR2,
                     result     OUT RAW)  RETURN RAW;

説明

任意のコマンドおよびその引数をソース・プラグインに送信します。このメソッドは、ユーザー定義のソース・プラグインでのみ使用できます。

パラメータ

ctx

ソース・プラグインのコンテキスト情報を指定します。このパラメータは、常に割り当てて、NULLに初期化する必要があります。ユーザー定義のソース・プラグインを使用する場合は、openSource( )メソッドをコールします。(「共通メソッドの重要な注意事項」を参照してください。)

cmd

ソース・プラグインで認識される任意のコマンドを指定します。

arguments

コマンドの引数を指定します。

result

ソース・プラグインによって戻される、このメソッドのコール結果です。

使用上の注意

このメソッドを使用して、任意のコマンドおよびその引数をソース・プラグインに送信します。指定したコマンドは、このメソッドでは解釈されず、そのまま渡されて処理されます。

プラグマ

なし。

例外

<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( )メソッドをコールし、使用するソース・プラグインがこのメソッドをサポートしていない場合に発生します。

これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。

なし。

7.5.16 readFromSource( )

構文

readFromSource(ctx      IN OUT RAW,
               startPos IN INTEGER,
               numBytes IN OUT INTEGER,
               buffer   OUT RAW); 

説明

ソースの開始位置からnバイトのバッファを読み取ります。

パラメータ

ctx

ソース・プラグインのコンテキスト情報を指定します。このパラメータは、常に割り当てて、NULLに初期化する必要があります。ユーザー定義のソース・プラグインを使用する場合は、openSource( )メソッドをコールします。(「共通メソッドの重要な注意事項」を参照してください。)

startPos

データ・ソースの開始位置を指定します。

numBytes

データ・ソースから読み取るバイト数を指定します。

buffer

データの読取り先バッファが戻されます。

使用上の注意

このメソッドは、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の場合に発生します。

これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。

ソースからバッファを読み取ります。

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;
/

7.5.17 setLocal( )

構文

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>を、このメソッドを適用するオブジェクト型に置き換えてください。

これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。

データのフラグをローカルに設定します。

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;
/

7.5.18 setMimeType( )

構文

setMimeType(mime IN VARCHAR2);

説明

データのMIMEタイプを設定します。

パラメータ

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>を、このメソッドを適用するオブジェクト型に置き換えてください。

これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。

格納されているデータに、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;
/

7.5.19 setSource( )

構文

setSource(source_type     IN VARCHAR2,
          source_location IN VARCHAR2,
          source_name     IN VARCHAR2); 

説明

データの外部ソース情報を設定または変更します。

パラメータ

source_type

外部ソース・データのタイプを指定します。(表7-1を参照してください。)

source_location

外部ソース・データの位置を指定します。(表7-2を参照してください。)

source_name

外部ソース・データの名前を指定します。(表7-3を参照してください。)

使用上の注意

このメソッドを使用して、データ・ソースを新しいファイルまたは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の場合に発生します。

これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。

データのソースを設定します。

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;
/

7.5.20 setUpdateTime( )

構文

setUpdateTime(current_time DATE);

説明

データの最終更新時刻(埋込みORDSourceオブジェクトのsource.srcUpdateTime属性)を設定します。データを変更した場合は、必ずこのメソッドを使用します。このメソッドは、オブジェクトの属性を変更するメソッドおよびすべてのsetメディア・アクセス・メソッドから暗黙的にコールされます。たとえば、setMimeType( )、setSource( )およびdeleteContent( )メソッドは、このメソッドを暗黙的にコールします。

パラメータ

current_time

格納するタイムスタンプを指定します。デフォルトはSYSDATEです。

使用上の注意

オブジェクト・メソッドを使用せずにデータを変更した場合は、必ずこのメソッドをコールします。

プラグマ

なし。

例外

<object-type>Exceptions.NULL_SOURCE

この例外は、<object-type>.source属性の値がNULLの場合に発生します。

この例外は、ORDAudio、ORDDoc、ORDImageまたはORDVideoオブジェクト型で発生する可能性があります。<object-type>を、このメソッドを適用するオブジェクト型に置き換えてください。

これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。

データの更新時刻を設定します。

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;
/

7.5.21 trimSource( )

構文

trim(ctx    IN OUT RAW,
     newlen IN INTEGER) RETURN INTEGER;

説明

データ・ソースを切り捨てます。

パラメータ

ctx

ソース・プラグインのコンテキスト情報を指定します。このパラメータは、常に割り当てて、NULLに初期化する必要があります。ユーザー定義のソース・プラグインを使用する場合は、openSource( )メソッドをコールします。(「共通メソッドの重要な注意事項」を参照してください。)

newlen

切捨て後の新しい長さを指定します。

使用上の注意

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( )メソッドをコールし、使用するソース・プラグインがこのメソッドをサポートしていない場合に発生します。

これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。

外部データ・ソースを切り捨てます。

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;
/

7.5.22 writeToSource( )

構文

writeToSource(ctx      IN OUT RAW,
              startPos IN INTEGER,
              numBytes IN OUT INTEGER,
              buffer   IN RAW); 

説明

ソースの開始位置からnバイトのバッファを書き込みます。

パラメータ

ctx

ソース・プラグインのコンテキスト情報を指定します。このパラメータは、常に割り当てて、NULLに初期化する必要があります。ユーザー定義のソース・プラグインを使用する場合は、openSource( )メソッドをコールします。(「共通メソッドの重要な注意事項」を参照してください。)

startPos

バッファのコピー先のソースの開始位置を指定します。

numBytes

ソースに書き込むバイト数を指定します。

buffer

データの書込み先のバッファを指定します。

使用上の注意

このメソッドは、ソースで、任意のバイト位置から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の場合に発生します。

これらの例外の詳細は、「Oracle Multimediaオブジェクトの例外」を参照してください。

ソースにバッファを書き込みます。

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;
/