この章では、BFILEを使用する操作のためのAPIについて説明します。この章で説明するAPIのリストは、表16-1を参照してください。
この章では、操作ごとに次の項目について説明します。
「使用上の注意」では、特定のプログラム環境またはデータ型に固有の情報など、実装時のガイドラインを示します。
「構文」では、サポートされているプログラム環境ごとに構文の参照先マニュアルを示します。
「例」では、特定の例を実行するために必要なセットアップ作業について説明します。掲載されているデモ・ファイルは、$ORACLE_HOME/rdbms/demo/lobs/のplsql、oci、vbおよびjavaという名前のサブディレクトリにあります。ドライバ・プログラムlobdemo.sqlは/plsqlにあり、ドライバ・プログラムlobdemo.cは/ociにあります。
この章の内容は次のとおりです。
表16-1「BFILE APIについてサポートされている環境」に、この章で説明するAPIについてサポートされているプログラム環境を示します。第1列は、APIで実行される操作を示します。その他の列は、そのAPIがPL/SQL、OCI、COBOL、Pro*C/C++、COMおよびJDBCでサポートされているかどうかに応じて、「はい」または「いいえ」となっています。
表16-1 BFILE APIについてサポートされている環境
| 操作 | PL/SQL | OCI | COBOL | Pro*C/C++ | COM | JDBC |
|---|---|---|---|---|---|---|
|
はい |
はい |
はい |
はい |
はい |
はい |
|
|
はい |
はい |
はい |
はい |
はい |
はい |
|
|
はい |
はい |
いいえ |
いいえ |
いいえ |
はい |
|
|
はい |
はい |
はい |
はい |
はい |
はい |
|
|
はい |
はい |
はい |
はい |
はい |
はい |
|
|
はい |
はい |
いいえ |
いいえ |
いいえ |
はい |
|
|
はい |
はい |
はい |
はい |
はい |
はい |
|
|
はい |
はい |
はい |
はい |
はい |
はい |
|
|
はい |
いいえ |
はい |
はい |
はい |
はい |
|
|
はい |
いいえ |
はい |
はい |
はい |
はい |
|
|
はい |
いいえ |
はい |
はい |
いいえ |
はい |
|
|
|
はい |
はい |
はい |
はい |
はい |
はい |
|
はい |
はい |
はい |
はい |
はい |
はい |
|
|
はい |
はい |
はい |
はい |
いいえ |
はい |
|
|
はい |
はい |
はい |
はい |
はい |
はい |
|
|
はい |
はい |
はい |
はい |
はい |
はい |
|
|
はい |
はい |
いいえ |
いいえ |
はい |
はい |
|
|
はい |
はい |
はい |
はい |
はい |
はい |
|
|
はい |
はい |
はい |
はい |
はい |
はい |
BFILEにアクセスするには、次のインタフェースのいずれかを使用します。
OCI
PL/SQL(DBMS_LOBパッケージ)
Pro*C/C++やPro*COBOLなどのプリコンパイラ
Oracle Objects for OLE(OO4O)
Java(JDBC)
ディレクトリ・オブジェクトを使用すると、BFILEデータ型のアクセスと使用方法を管理できます。ディレクトリ・オブジェクトは、アクセスするファイルが置かれているデータベース・サーバーのファイル・システムの物理ディレクトリの論理的な別名を示します。サーバーのファイル・システム内にあるファイルへは、ディレクトリ・オブジェクトに対する必要なアクセス権限が付与されている場合にかぎり、アクセスできます。Enterprise ManagerのWebコンソールを使用して、ディレクトリ・オブジェクトを管理することもできます。
|
関連項目:
|
ディレクトリ・オブジェクトを使用すると、ファイルの位置を柔軟に扱えるようになり、アプリケーション内の物理ファイルの絶対パス名をハードコードしなくてもすみます。ディレクトリ・オブジェクト名は、BFILEロケータの初期化の際に、BFILENAMEファンクション(SQLおよびPL/SQL)またはOCILobFileSetName()(OCI)で使用されます。
|
注意: データベースは、指定したディレクトリおよびパス名が実際に存在するかどうかは検証しません。ご使用のOSで有効なディレクトリを指定するよう注意してください。オペレーティング・システムがパス名の大/小文字を区別している場合は、必ず正しい形式でディレクトリを指定してください。最後のスラッシュを指定する必要はありません(たとえば、 ディレクトリの指定時には、「..」をパス内に含めることはできません(たとえば、 |
OSファイルをBFILEに対応付けるために、まずOSファイルへのフルパス名の別名であるディレクトリ・オブジェクトを作成する必要があります。
既存のOSファイルを特定の表の関連するデータベース・レコードに対応付けるには、OracleのSQL DMLを使用します。次に例を示します。
BFILEの列がサーバーのファイル・システム内の既存ファイルを参照するようにBFILEを初期化するには、INSERTを使用します。
BFILEの参照ターゲットを変更するには、UPDATEを使用します。
BFILENAMEファンクションを使用して、BFILEをNULLに初期化してから、後でOSファイルを参照するように更新します。
OCIユーザーの場合、OCILobFileSetName()を使用して、INSERT文のVALUES句で使用されるBFILEロケータ変数を初期化することもできます。
ディレクトリの例
次の文では、ファイルImage1.gifおよびimage2.gifをそれぞれkey_valueが21および22のレコードに対応付けます。IMGは、Image1.gifおよびimage2.gifが格納される物理ディレクトリを示すディレクトリ・オブジェクトです。
次のようなデータ構造を設定しないと機能しない場合もあります。
CREATE TABLE Lob_table (Key_value NUMBER NOT NULL,F_lob BFILE)INSERT INTO Lob_table VALUES (21, BFILENAME('IMG', 'Image1.gif')); INSERT INTO Lob_table VALUES (22, BFILENAME('IMG', 'image2.gif'));
次のUPDATE文は、key_valueが22の行の場合にターゲット・ファイルをimage3.gifに変更します。
UPDATE Lob_table SET f_lob = BFILENAME('IMG', 'image3.gif')
WHERE Key_value = 22;
|
注意: データベースでは、
BFILENAME('WORK_DIR', '$MY_FILE')
|
BFILENAMEは、BFILE列が外部ファイルを参照するようにBFILEを初期化するために使用する組込みファンクションです。
SQL DMLを使用して物理ファイルがレコードに対応付けられると、BFILEに対するその後の読取り操作は、PL/SQLのDBMS_LOBパッケージおよびOCIを使用して実行できます。ただし、これらのファイルは、BFILEを介してアクセスされる場合は読取り専用であるため、BFILEによる更新または削除はできません。
BFILEは参照セマンティクスであるため、同一レコード内または異なるレコード内に、同じファイルを参照する複数のBFILE列を持つことができます。たとえば、次のUPDATE文は、lob_table内でkey_valueが21の行を持つBFILEが、key_valueが22の行と同じファイルを参照するように設定します。
UPDATE lob_table
SET f_lob = (SELECT f_lob FROM lob_table WHERE key_value = 22)
WHERE key_value = 21;
初期化という点からBFILENAMEを考えてみます。このファンクションは、次の値を初期化できます。
BFILE列
PL/SQLモジュール内で宣言されるBFILE(自動)変数
BFILEデータ型を使用すると次のメリットがあります。
特定のBFILEが、一時的に、操作中のモジュール内にかぎり必要な場合、データベース内の列に対応付けることなく、BFILE関連のAPIを変数に対して使用できます。
サーバー側の表にBFILE列を作成し、列の値を初期化した後、SELECTを使用してその列の値を取り出す必要がないため、サーバーへのラウンドトリップの必要がなくなります。
詳細は、DBMS_LOB.LOADFROMFILEの例を参照してください(「LOBへのBFILEデータのロード」を参照)。
OCIでBFILENAMEに相当するものはOCILobFileSetName()であり、同様に使用できます。
ディレクトリを作成するには、CREATE ANY DIRECTORYシステム権限が必要です。パス名に2つのピリオド(「..」)を含めることはできません。ディレクトリ・オブジェクトのネーミング規則は、表および索引のネーミング規則と同じです。つまり、通常の識別子は大文字で解釈されますが、デリミタ付き識別子はそのまま解釈されます。たとえば、次のような文があるとします。
CREATE OR REPLACE DIRECTORY scott_dir AS '/usr/home/scott';
この文によって、名前が「SCOTT_DIR」(大文字)のディレクトリ・オブジェクトが作成または再定義されます。ただし、次の文のように、ディレクトリ名にデリミタ付き識別子が使用されるとします。
CREATE DIRECTORY "Mary_Dir" AS '/usr/home/mary';
ディレクトリ・オブジェクトの名前は「Mary_Dir」になります。BFILENAMEをコールするときは、「SCOTT_DIR」および「Mary_Dir」を使用します。次に例を示します。
BFILENAME('SCOTT_DIR', 'afile')
BFILENAME('Mary_Dir', 'afile')
この項では、BFILEセキュリティ・モデルおよびそれに対応付けられたSQL文について説明します。BFILEセキュリティに関係する主なSQL文は、次のとおりです。
SQL DDL: ディレクトリ・オブジェクトのCREATEおよびREPLACEまたはALTER
SQL DML: ディレクトリ・オブジェクトに対するREADシステム権限およびオブジェクト権限のGRANTおよびREVOKE
ディレクトリ・オブジェクトは、システム所有のオブジェクトです。システム所有のオブジェクトの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。Oracle Databaseでは、次の2つの新しいシステム権限をサポートしており、これらはDBAのみに付与されます。
CREATE ANY DIRECTORY: ディレクトリ・オブジェクトの作成または変更用
DROP ANY DIRECTORY: ディレクトリ・オブジェクトの削除用
ディレクトリ・オブジェクトに対するREAD権限によって、そのディレクトリ下に置かれたファイルを読み取ることができます。ディレクトリ・オブジェクトの作成者には、READ権限が自動的に付与されます。
GRANTオプション付きのREAD権限を付与されている場合は、その権限を他のユーザーやロールに付与して、自分の権限ドメインに追加することもできます。
ディレクトリ・オブジェクトが表す物理ディレクトリには、Oracleサーバー・プロセスに対する適切なOS権限(この場合は読取り)が含まれていない場合もあります。
DBAは、次のことを確認する必要があります。
物理ディレクトリの存在
Oracleサーバー・プロセスに対して、ファイル、ディレクトリおよびディレクトリへのパスの読取り権限が使用可能になっていること
データベース・ユーザーによってファイル・アクセスが行われている間、ディレクトリおよび読取り権限が使用可能な状態に保たれていること
ここでの権限とは、単にOracleサーバーがそのディレクトリ内のファイルを読むことができるということです。これらの権限は、実際のファイル操作時に、PL/SQLのDBMS_LOBパッケージおよびOCI APIによってチェックおよび施行されます。
|
注意:
|
ディレクトリ・オブジェクトを作成、置換および削除する次のSQL DDL文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
CREATE DIRECTORY
DROP DIRECTORY
BFILEに対してセキュリティを提供する次のSQL DML文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
GRANT(システム権限)
GRANT(オブジェクト権限)
REVOKE(システム権限)
REVOKE(オブジェクト権限)
AUDIT(新規文)
AUDIT(スキーマ・オブジェクト)
カタログ・ビューは、ディレクトリ・オブジェクト用に提供され、これによってユーザーは、オブジェクトの名前、および対応するパスおよび権限を参照できます。サポートされるビューは次のとおりです。
ALL_DIRECTORIES(OWNER、DIRECTORY_NAME、DIRECTORY_PATH)
このビューには、ユーザーがアクセスできるすべてのディレクトリが記述されます。
DBA_DIRECTORIES(OWNER、DIRECTORY_NAME、DIRECTORY_PATH)
このビューには、データベース全体について指定されたすべてのディレクトリが記述されます。
ディレクトリ機能の主な目的は、サーバーのファイル・システム内の大きなファイルへのアクセスをDBAが管理するうえで、単純で柔軟性があり、既存アプリケーションの変更が不要で、安全性の高いメカニズムを使用可能にすることです。ただし、この目的を実現するには、DBAがディレクトリ・オブジェクトの使用時に次のガイドラインに従うことが非常に重要です。
ディレクトリ・オブジェクトは、データファイルのディレクトリにマップしないでください。ディレクトリ・オブジェクトは、Oracleデータファイル、制御ファイル、ログ・ファイルおよび他のシステム・ファイルを含む物理ディレクトリにマップしないでください。これらのファイルを(不意にまたはなんらかの理由で)変更すると、データベースまたはサーバーのOSが破損する場合があります。
DBAのみがシステム権限を持つ必要があります。CREATE ANY DIRECTORYなどのシステム権限(DBAにあらかじめ付与される)を他のユーザーに付与する場合は、慎重に行ってください。多くの場合、データベース管理者のみが、これらの権限を持ちます。
DIRECTORY権限を付与するときには、十分な注意が必要です。ディレクトリ・オブジェクトへの権限を他のユーザーに付与する場合は、注意が必要です。同様に、権限をユーザーに付与するときは、WITH GRANT OPTION句の使用にも注意が必要です。
データベースの運用中に、ディレクトリ・オブジェクトを削除または置換しないでください。ディレクトリ・オブジェクトは、安易な判断でデータベース運用中に削除または置換しないようにします。ディレクトリ・オブジェクトを削除または置換した場合、このディレクトリ・オブジェクトに対応付けられているすべてのファイルのすべてのセッションからの操作が正常に実行されなくなります。さらに、これらのファイルを正常にクローズする前にDROPコマンドまたはREPLACEコマンドを実行した場合は、プログラムにおけるこれらのファイルへの参照が失われ、これらのファイルに対応付けられているシステム・リソースも、セッションを停止するまで解放されなくなります。
この場合、PL/SQLユーザーに可能な手段は、たとえばDBMS_LOB.FILECLOSEALLをコールするプログラム・ブロックを実行してファイル操作を再開するか、または各セッションをすべて終了するかのいずれかです。したがって、これらのコマンドは慎重に使用し、できればメンテナンスの停止時間中に使用します。
ユーザーのDIRECTORYオブジェクト権限を取り消すときには、十分な注意が必要です。REVOKE文を使用してユーザーのDIRECTORYオブジェクト権限を取り消した場合、ユーザーのセッションに依存するファイルへの、その後の操作が正常に実行されません。ユーザーは、権限を再取得してファイルをクローズするか、またはセッションでFILECLOSEALLを実行し、ファイル操作を再開する必要があります。
一般的に、ファイル・アクセスの管理にディレクトリ・オブジェクトを使用することは、OSレベルでのシステム管理作業の延長です。ファイルは、計画を立てることによって、Oracleプロセス用のREAD権限を持つ適切なディレクトリに論理的に構成できます。
これらの物理ファイルにマップするREAD権限とともにディレクトリ・オブジェクトを作成し、特定のデータベース・ユーザーにこれらのディレクトリへのアクセス権限を付与できます。
データベースでは、共有サーバー(マルチスレッド・サーバー)・モードでのBFILEデータ型のセッション移行がサポートされません。これは、オープンされたBFILEインスタンスに対する操作を、共有サーバーへのコール終了後も継続できることを意味します。
BFILE操作が含まれる共有サーバーのセッションは、1台の共有サーバーに限定され、サーバー間での移行はできません。この制約は、次回のリリースではなくなります。
BFILEでは、値はサーバー側のOSファイル(データベースの外部)に格納されます。そのファイルを参照するBFILEロケータは、インラインに格納されます。
DBMS_LOB.FILEOPENで使用されるBFILEロケータ変数(たとえばL1)が、別のロケータ変数(たとえばL2)に割り当てられた場合、L1およびL2はどちらも同じファイルを参照します。BFILE列を持つ表の2つの行は、同じファイルを参照することも、2つの異なるファイルを参照することもできます。このことは、開発者が慎重であればメリットになりますが、そうでなければデメリットになる場合があります。
BFILEロケータ変数は、他の自動変数と同じように機能します。ファイル操作に関しては、最も標準的なプログラミング言語の標準I/Oの一部として利用できるファイル記述子と同じように機能します。BFILEロケータを定義および初期化し、このロケータによって参照されるファイルをオープンした場合、このファイルをクローズするまでのすべての操作は、このロケータまたはこのロケータのローカル・コピーを使用して、同じプログラム・ブロック内から実行する必要があることを意味します。
BFILEを操作するときのガイドラインは、次のとおりです。
ファイルは、同じネスト・レベルにある、同じプログラム・ブロックからオープンおよびクローズします。BFILEロケータ変数は、スカラーと同様、他のプロシージャ、メンバー・メソッドまたは外部関数コールアウトのパラメータとして使用できます。ただし、ファイルのオープンおよびクローズは、同じネスト・レベルにある、同じプログラム・ブロックから行うことをお薦めします。
オブジェクトをデータベースにフラッシュする前に、BFILE値を設定します。オブジェクトにBFILEが含まれる場合、データベースにオブジェクトをフラッシュする前にBFILE値を設定する必要があります。それによって、新しい行を挿入できます。つまり、OCIObjectNew()の後でかつOCIObjectFlush()の前に、OCILobFileSetName()をコールする必要があります。
BFILEを挿入または更新する前に、ディレクトリ・オブジェクト名およびファイル名を指定します。ディレクトリ・オブジェクト名およびファイル名を指定せずにBFILEを挿入または更新すると、エラーになります。
この規則は、INSERT文またはUPDATE文でBFILEに対してOCIバインド変数を使用するユーザーにも適用されます。INSERT文またはUPDATE文を発行する前に、OCIバインド変数をディレクトリ・オブジェクト名およびファイル名で初期化する必要があります。
挿入または更新する前にBFILEを初期化します。
BFILEを持つ行を挿入または更新するためのSQLを使用する前に、BFILEを次のいずれかに初期化する必要があります。
NULL(OCIバインド変数を使用している場合は不可)
ディレクトリ・オブジェクト名とファイル名
パス名の指定のどこにも2つのピリオド(「..」)を含めることはできません。ファイル名の最初に2つのピリオドを使用することもできません。
この項では、BFILEのデータをLOBにロードする方法について説明します。
事前条件
このプロシージャをコールする前に、次の事前条件を満たしている必要があります。
ソースBFILEインスタンスが存在すること。
宛先のLOBインスタンスが存在すること。
使用上の注意
|
注意: LOADBLOBFROMFILEおよびLOADCLOBFROMFILEプロシージャによって、このプロシージャの機能が実装されるため、バイナリ・データおよび文字データのロード機能が向上します。機能が向上したプロシージャは、PL/SQL環境でのみ使用できます。可能なかぎり、機能が向上したプロシージャを使用することをお薦めします。詳細は、「BLOBへのBFILEデータのロード」および「CLOBまたはNCLOBへのBFILEデータのロード」を参照してください。 |
OCIまたはOCI機能にアクセスするプログラム環境を使用する場合、キャラクタ・セットの変換は、1つのキャラクタ・セットから別のキャラクタ・セットに変換するときに、暗黙的に実行されます。
BFILEからCLOBまたはNCLOBへのロード: バイナリ・データからキャラクタ・セットへの変換
DBMS_LOB.LOADFROMFILEプロシージャを使用してCLOBまたはNCLOBに移入する場合は、BFILEのバイナリ・データをLOBに移入することになります。バイナリ・データからキャラクタ・セットへの場合は、暗黙的な変換は実行されません。このため、テキストをロードする場合はLOADCLOBFROMFILEプロシージャを使用します(「CLOBまたはNCLOBへのBFILEデータのロード」を参照)。
|
関連項目: キャラクタ・セット変換の問題点は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。 |
量パラメータには、次の注意事項があります。
BFILE全体をロードする場合は、DBMS_LOB.LOBMAXSIZE定数を渡すことができます。他の値を渡す場合、値はBFILEのサイズ以下である必要があります。
BFILE全体をロードする場合は、UB4MAXVAL定数を渡すことができます。他の値を渡す場合、値はBFILEのサイズ以下である必要があります。
BFILE全体をロードする場合は、UB8MAXVAL定数を渡すことができます。他の値を渡す場合、値はBFILEのサイズ以下である必要があります。
構文
各プログラム環境における構文については、次のマニュアルの項を参照してください。
PL/SQL(DBMS_LOB): 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_LOB」の「LOADFROMFILE」
C(OCI): 『Oracle Call Interfaceプログラマーズ・ガイド』の第7章「LOBとBFILEの操作」の使用上の注意および例、第16章「LOB関数」の「OCILobLoadFromFile2()」
COBOL(Pro*COBOL): 『Pro*COBOLプログラマーズ・ガイド』のLOBの詳細、LOB文の使用上の注意および「埋込みSQLおよびプリコンパイラ・ディレクティブ」。
C/C++(Pro*C/C++): 『Pro*C/C++プログラマーズ・ガイド』の「ラージ・オブジェクト(LOB)」、「LOB文」および「埋込みSQL文およびディレクティブ」の「LOB LOAD」
COM(OO4O): 『Oracle Objects for OLE開発者ガイド』
Java(JDBC): 『Oracle Database JDBC開発者ガイドおよびリファレンス』の「LOBとBFILEの操作」の「BLOBまたはCLOB列の作成と移入」
例
次のプログラム環境での例を示します。
PL/SQL(DBMS_LOB): floaddat.sql
OCI: floaddat.c
COM(OO4O): floaddat.bas
Java(JDBC): 例は提供されません。
この項では、OPENファンクションを使用してBFILEをオープンする方法について説明します。
|
注意: BFILEをオープンするには、FILEOPENファンクションを使用する方法もありますが、新規に開発する場合にはOPENファンクションを使用することをお薦めします。FILEOPENファンクションを使用する方法は、「FILEOPENを使用したBFILEのオープン」を参照してください。 |
構文
各プログラム環境における構文については、次のマニュアルの項を参照してください。
PL/SQL(DBMS_LOB): 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_LOB」の「OPEN」
C(OCI): 『Oracle Call Interfaceプログラマーズ・ガイド』の第7章「LOBとBFILEの操作」の使用上の注意、第16章「LOB関数」の「OCILobOpen()」および「OCILobClose()」
COBOL(Pro*COBOL): 『Pro*COBOLプログラマーズ・ガイド』のLOBの詳細、LOB文の使用上の注意および「埋込みSQLおよびプリコンパイラ・ディレクティブ」の「LOB OPEN」
C/C++(Pro*C/C++): 『Pro*C/C++プログラマーズ・ガイド』の「ラージ・オブジェクト(LOB)」、「LOB文」および「埋込みSQL文およびディレクティブ」の「LOB OPEN」。
COM(OO4O): 『Oracle Objects for OLE開発者ガイド』
Java(JDBC): 『Oracle Database JDBC開発者ガイドおよびリファレンス』の「LOBとBFILEの操作」の「BLOBまたはCLOB列の作成と移入」
使用例
次の例では、OSファイルADPHOTO_DIRのイメージをオープンします。
例
次のプログラム環境での例を示します。
PL/SQL(DBMS_LOB): fopen.sql
OCI: fopen.c
COM(OO4O): fopen.bas
Java(JDBC): fopen.java
この項では、FILEOPENファンクションを使用してBFILEをオープンする方法について説明します。
|
注意: 新規アプリケーション開発には、FILEOPENファンクションをお薦めしません。OPENファンクションを使用することをお薦めします。「OPENを使用したBFILEのオープン」を参照してください。 |
BFILEオープン時の使用上の注意
古いFILEOPEN形式の使用を継続することもできますが、OPENは将来の拡張性を備えているため、切り替えることをお薦めします。
構文
各プログラム環境における構文については、次のマニュアルの項を参照してください。
PL/SQL(DBMS_LOB): 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_LOB」の「FILEOPEN」および「FILECLOSE」
C(OCI): 『Oracle Call Interfaceプログラマーズ・ガイド』の第7章「LOBとBFILEの操作」の使用上の注意、第16章「LOB関数」の「OCILobFileOpen()」、「OCILobFileClose()」および「OCILobFileSetName()」
COBOL(Pro*COBOL): 参照マニュアルはありません。
C/C++(Pro*C/C++): 参照マニュアルはありません。
COM(OO4O): 参照マニュアルはありません。
Java(JDBC): 『Oracle Database JDBC開発者ガイドおよびリファレンス』の第7章「LOBとBFILEの操作」の「BLOBまたはCLOB列の作成と移入」
BFILEのオープンの使用例
次の例では、ディレクトリ・オブジェクトMEDIA_DIRでkeyboard_logo.jpgをオープンします。
例
次のプログラム環境での例を示します。
PL/SQL(DBMS_LOB): ffilopen.sql
OCI: ffilopen.c
Java(JDBC): ffilopen.java
この項では、ISOPENを使用して、BFILEがオープンしているかどうかを確認する方法について説明します。
|
注意: 新規アプリケーション開発には、このファンクション(ISOPEN)をお薦めします。古いFILEISOPENファンクションはお薦めしません。詳細は、「FILEISOPENを使用した、BFILEがオープンしているかどうかの確認」を参照してください。 |
構文
各プログラム環境における構文については、次のマニュアルの項を参照してください。
PL/SQL(DBMS_LOB): 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_LOB」のISOPENに関する項
C(OCI): 『Oracle Call Interfaceプログラマーズ・ガイド』の第7章「LOBとBFILEの操作」の使用上の注意、第16章「LOB関数」の「OCILobFileIsOpen()」
COBOL(Pro*COBOL): 『Pro*COBOLプログラマーズ・ガイド』のLOBの詳細、LOB文の使用上の注意、および「埋込みSQLおよびプリコンパイラ・ディレクティブ」のLOB DESCRIBE ...ISOPENに関する項
C/C++(Pro*C/C++): 『Pro*C/C++プログラマーズ・ガイド』の「ラージ・オブジェクト(LOB)」、「LOB文」、および「埋込みSQL文およびディレクティブ」のLOB DESCRIBE ... ISOPENに関する項
COM(OO4O): 『Oracle Objects for OLE開発者ガイド』
Java(JDBC): 『Oracle Database JDBC開発者ガイドおよびリファレンス』の「LOBとBFILEの操作」の「BLOBまたはCLOB列の作成と移入」
例
次のプログラム環境での例を示します。
PL/SQL(DBMS_LOB): fisopen.sql
OCI: fisopen.c
COM(OO4O): fisopen.bas
Java(JDBC): fisopen.java
この項では、FILEISOPENファンクションを使用して、BFILEがオープンしているかどうかを確認する方法について説明します。
|
注意: 新規アプリケーション開発には、FILEISOPENファンクションをお薦めしません。ISOPENファンクションを使用することをお薦めします。「ISOPENを使用した、BFILEがオープンしているかどうかの確認」を参照してください。 |
使用上の注意
古いFILEISOPEN形式の使用を継続することもできますが、ISOPENは将来の拡張性を備えているため、切り替えることをお薦めします。
構文
各プログラム環境における構文については、次のマニュアルの項を参照してください。
PL/SQL(DBMS_LOB): 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_LOB」の「FILEISOPEN」
C(OCI): 『Oracle Call Interfaceプログラマーズ・ガイド』の第7章「LOBとBFILEの操作」の使用上の注意、第16章「LOB関数」の「OCILobFileIsOpen()」
COBOL(Pro*COBOL): 参照マニュアルはありません。
C/C++(Pro*C/C++): 参照マニュアルはありません。
COM(OO4O): 参照マニュアルはありません。
Java(JDBC): 『Oracle Database JDBC開発者ガイドおよびリファレンス』の「LOBとBFILEの操作」の「BLOBまたはCLOB列の作成と移入」
使用例
次の例では、ad_graphicに対応付けられているBFILEがオープンしているかどうかを問い合せます。
例
次のプログラム環境での例を示します。
PL/SQL(DBMS_LOB): ffisopen.sql
OCI: ffisopen.c
Java(JDBC): ffisopen.java
この項では、BFILEデータを表示する方法について説明します。
構文
各プログラム環境における構文については、次のマニュアルの項を参照してください。
PL/SQL(DBMS_LOB): 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_LOB」の「READ」、第29章「DBMS_OUTPUT」の「PUT_LINE」
C(OCI): 『Oracle Call Interfaceプログラマーズ・ガイド』の第7章「LOBとBFILEの操作」の使用上の注意、第16章「LOB関数」の「OCILobFileOpen()」および「OCILobRead2()」
COBOL(Pro*COBOL): 『Pro*COBOLプログラマーズ・ガイド』のLOBの詳細、LOB文の使用上の注意および「埋込みSQLおよびプリコンパイラ・ディレクティブ」の「LOB READ」および「DISPLAY」
C/C++(Pro*C/C++): 『Pro*C/C++プログラマーズ・ガイド』の「ラージ・オブジェクト(LOB)」および「LOB文」の「READ」
COM(OO4O): 『Oracle Objects for OLE開発者ガイド』
Java(JDBC): 『Oracle Database JDBC開発者ガイドおよびリファレンス』の第7章「LOBとBFILEの操作」の「BLOBまたはCLOB列の作成と移入」
例
次のプログラム環境での例を示します。
PL/SQL(DBMS_LOB): fdisplay.sql
OCI: fdisplay.c
Java(JDBC): fdisplay.java
この項では、BFILEからデータを読み取る方法について説明します。
使用上の注意
この操作を使用する場合は、次のことに注意してください。
OCIでのストリーム読取り
大量のBFILEデータを最も効率よく読み取るには、ストリーム・メカニズムを有効にしたOCILobRead2()でポーリングまたはコールバックを使用します。そのためには、次のようにoffsetパラメータを使用して読取り開始位置を指定します。
ub8 char_amt = 0;
ub8 byte_amt = 0;
ub4 offset = 1000;
OCILobRead2(svchp, errhp, locp, &byte_amt, &char_amt, offset, bufp, bufl,
OCI_ONE_PIECE, 0, 0, 0, 0);
ポーリング・モードを使用した場合は、各OCILobRead2()コール後にbyte_amtパラメータの値を調べて、バッファに何バイト読み取られたかを確認してください。これは、バッファがいっぱいになっていない場合があるためです。
コールバックを使用すると、コールバックへの入力であるlenpパラメータにバッファに格納されたバイト数が示されます。このlenpパラメータを、コールバック処理中に確認してください。バッファいっぱいまでデータが格納されていない場合があります(『Oracle Call Interfaceプログラマーズ・ガイド』を参照)。
DBMS_LOB.READのコール時には、量パラメータをデータのサイズより大きく指定できます。ただし、量パラメータはバッファのサイズ以下に指定する必要があります。PL/SQLでは、バッファ・サイズの上限は32KBです。
BFILEの終わりまで読み取る場合は、OCILobRead2()のコール時にbyte_amtパラメータに値0(ゼロ)を渡すことができます。
構文
各プログラム環境における構文については、次のマニュアルの項を参照してください。
PL/SQL(DBMS_LOB): 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_LOB」の「READ」
C(OCI): 『Oracle Call Interfaceプログラマーズ・ガイド』の第7章「LOBとBFILEの操作」の使用上の注意、第16章「LOB関数」の「OCILobRead2()」
COBOL(Pro*COBOL): 『Pro*COBOLプログラマーズ・ガイド』のLOBの詳細、LOB文の使用上の注意および「埋込みSQLおよびプリコンパイラ・ディレクティブ」の「LOB READ」
C/C++(Pro*C/C++): 『Pro*C/C++プログラマーズ・ガイド』の「ラージ・オブジェクト(LOB)」、「LOB文」および「埋込みSQL文およびディレクティブ」の「LOB READ」
COM(OO4O): 『Oracle Objects for OLE開発者ガイド』
Java(JDBC): 『Oracle Database JDBC開発者ガイドおよびリファレンス』の第7章「LOBとBFILEの操作」の「BLOBまたはCLOB列の作成と移入」
例
次のプログラム環境での例を示します。
PL/SQL(DBMS_LOB): fread.sql
OCI: fread.c
COM(OO4O): fread.bas
Java(JDBC): fread.java
この項では、SUBSTRを使用してBFILEデータの一部を読み取る方法について説明します。
構文
各プログラム環境における構文については、次のマニュアルの項を参照してください。
PL/SQL(DBMS_LOB): 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_LOB」のSUBSTRに関する項
OCI: 参照マニュアルはありません。
COBOL(Pro*COBOL): 『Pro*COBOLプログラマーズ・ガイド』のLOBの詳細、LOB文の使用上の注意および「埋込みSQLおよびプリコンパイラ・ディレクティブ」の「LOB OPEN」および「LOB CLOSE」。『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』のDBMS_LOB.SUBSTRに関する項も参照。
C/C++(Pro*C/C++): 『Pro*C/C++プログラマーズ・ガイド』の「ラージ・オブジェクト(LOB)」、「LOB文」および「埋込みSQL文およびディレクティブ」の「LOB OPEN」。『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』のDBMS_LOB.SUBSTRに関する項も参照。
COM(OO4O): 『Oracle Objects for OLE開発者ガイド』
Java(JDBC): 『Oracle Database JDBC開発者ガイドおよびリファレンス』の第7章「LOBとBFILEの操作」の「BLOBまたはCLOB列の作成と移入」
例
次のプログラム環境での例を示します。
PL/SQL(DBMS_LOB): freadprt.sql
C(OCI): 今回のリリースでは例は提供されません。
COM(OO4O): freadprt.bas
Java(JDBC): freadprt.java
この項では、2つのBFILEの全体または一部を比較する方法について説明します。
構文
各プログラム環境における構文については、次のマニュアルの項を参照してください。
PL/SQL(DBMS_LOB): 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_LOB」のCOMPAREに関する項
C(OCI): 参照マニュアルはありません。
COBOL(Pro*COBOL): 『Pro*COBOLプログラマーズ・ガイド』のLOBの詳細、LOB文の使用上の注意および「埋込みSQLおよびプリコンパイラ・ディレクティブ」の「LOB OPEN」。『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』のDBMS_LOB.COMPAREに関する項も参照。
C/C++(Pro*C/C++): 『Pro*C/C++プログラマーズ・ガイド』の「ラージ・オブジェクト(LOB)」、「LOB文」および「埋込みSQL文およびディレクティブ」の「LOB OPEN」。『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』のDBMS_LOB.COMPAREに関する項も参照。
COM(OO4O): 『Oracle Objects for OLE開発者ガイド』
Java(JDBC): 『Oracle Database JDBC開発者ガイドおよびリファレンス』の第7章「LOBとBFILEの操作」の「BLOBまたはCLOB列の作成と移入」
例
次のプログラム環境での例を示します。
PL/SQL(DBMS_LOB): fcompare.sql
OCI: 今回のリリースでは例は提供されません。
COM(OO4O): fcompare.bas
Java(JDBC): fcompare.java
この項では、INSTRを使用して、BFILEにパターンが存在するかどうかを確認する方法について説明します。
構文
各プログラム環境における構文については、次のマニュアルの項を参照してください。
PL/SQL(DBMS_LOB): 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_LOB」の「INSTR」
C(OCI): 参照マニュアルはありません。
COBOL(Pro*COBOL): 『Pro*COBOLプログラマーズ・ガイド』のLOBの詳細、LOB文の使用上の注意および「埋込みSQLおよびプリコンパイラ・ディレクティブ」の「LOB OPEN」。『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』のDBMS_LOB.INSTRに関する項も参照。
C/C++(Pro*C/C++): 『Pro*C/C++プログラマーズ・ガイド』の「ラージ・オブジェクト(LOB)」、「LOB文」および「埋込みSQL文およびディレクティブ」の「LOB OPEN」。『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』のDBMS_LOB.INSTRに関する項も参照。
COM(OO4O): 参照マニュアルはありません。
Java(JDBC): 『Oracle Database JDBC開発者ガイドおよびリファレンス』の第7章「LOBとBFILEの操作」の「BLOBまたはCLOB列の作成と移入」
例
次のプログラム環境での例を示します。
PL/SQL(DBMS_LOB): fpattern.sql
OCI: 今回のリリースでは例は提供されません。
COM(OO4O): 今回のリリースでは例は提供されません。
Java(JDBC): fpattern.java
このプロシージャでは、BFILEロケータが有効なBFILEインスタンスを指しているかどうかを確認します。
構文
各プログラム環境における構文については、次のマニュアルの項を参照してください。
PL/SQL(DBMS_LOB): 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_LOB」の「FILEEXISTS」
C(OCI): 『Oracle Call Interfaceプログラマーズ・ガイド』の第7章「LOBとBFILEの操作」の使用上の注意、第16章「LOB関数」の「OCILobFileExists()」
COBOL(Pro*COBOL): 『Pro*COBOLプログラマーズ・ガイド』のLOBの詳細、LOB文の使用上の注意、および「埋込みSQLおよびプリコンパイラ・ディレクティブ」のLOB DESCRIBE ...FILEEXISTSに関する説明
C/C++(Pro*C/C++): 『Pro*C/C++プログラマーズ・ガイド』の「ラージ・オブジェクト(LOB)」、「LOB文」および「埋込みSQL文およびディレクティブ」のLOB DESCRIBE ... GET FILEEXISTSに関する説明
COM(OO4O): 『Oracle Objects for OLE開発者ガイド』
Java(JDBC): 『Oracle Database JDBC開発者ガイドおよびリファレンス』の「LOBとBFILEの操作」の「BLOBまたはCLOB列の作成と移入」
例
次のプログラム環境での例を示します。
PL/SQL(DBMS_LOB): fexists.sql
OCI: fexists.c
COM(OO4O): fexists.bas
Java(JDBC): fexists.java
この項では、BFILEの長さを取得する方法について説明します。
構文
各プログラム環境における構文については、次のマニュアルの項を参照してください。
PL/SQL(DBMS_LOB): 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_LOB」の「GETLENGTH」
C(OCI): 『Oracle Call Interfaceプログラマーズ・ガイド』の第7章「LOBとBFILEの操作」、第16章「LOB関数」の「OCILobGetLength2()」
COBOL(Pro*COBOL): 『Pro*COBOLプログラマーズ・ガイド』のLOBの詳細、LOB文の使用上の注意、および「埋込みSQLおよびプリコンパイラ・ディレクティブ」のLOB DESCRIBE ... GET LENGTH INTO ...に関する説明
C/C++(Pro*C/C++): 『Pro*C/C++プログラマーズ・ガイド』の「ラージ・オブジェクト(LOB)」、「LOB文」および「埋込みSQL文およびディレクティブ」のLOB DESCRIBE ... GET LENGTH INTO ...に関する説明
COM(OO4O): 『Oracle Objects for OLE開発者ガイド』
Java(JDBC): 『Oracle Database JDBC開発者ガイドおよびリファレンス』の「LOBとBFILEの操作」の「BLOBまたはCLOB列の作成と移入」
例
次のプログラム環境での例を示します。
PL/SQL(DBMS_LOB): flength.sql
OCI: flength.c
COM(OO4O): flength.bas
Java (JDBC): flength.java
この項では、1つのBFILEロケータを他のBFILEロケータに割り当てる方法について説明します。
構文
各プログラム環境における構文については、次のマニュアルの項を参照してください。
SQL: 『Oracle Database SQL言語リファレンス』の第7章「SQL文」の「CREATE PROCEDURE」
PL/SQL(DBMS_LOB): LOBロケータを他のLOBロケータに割り当てる方法は、第6章「高度な設計時の考慮事項」を参照してください。
C(OCI): 『Oracle Call Interfaceプログラマーズ・ガイド』の第7章「LOBとBFILEの操作」の使用上の注意、第16章「LOB関数」の「OCILobLocatorAssign()」
COBOL(Pro*COBOL): 『Pro*COBOLプログラマーズ・ガイド』のLOBの詳細、LOB文の使用上の注意および「埋込みSQLおよびプリコンパイラ・ディレクティブ」の「LOB ASSIGN」
C/C++(Pro*C/C++): 『Pro*C/C++プログラマーズ・ガイド』の「ラージ・オブジェクト(LOB)」、「LOB文」および「埋込みSQL文およびディレクティブ」の「LOB ASSIGN」
COM(OO4O): 参照マニュアルはありません。
Java(JDBC): 『Oracle Database JDBC開発者ガイドおよびリファレンス』の第7章「LOBとBFILEの操作」の「BLOBまたはCLOB列の作成と移入」
例
次のプログラム環境での例を示します。
PL/SQL(DBMS_LOB): fcopyloc.sql
OCI: fcopyloc.c
COM: 今回のリリースでは例は提供されません。
Java(JDBC): fcopyloc.java
この項では、BFILEのディレクトリ・オブジェクト名とファイル名を取得する方法について説明します。
構文
各プログラム環境における構文については、次のマニュアルの項を参照してください。
PL/SQL(DBMS_LOB): 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_LOB」のFILEGETNAMEに関する項
C(OCI): 『Oracle Call Interfaceプログラマーズ・ガイド』の第7章「LOBとBFILEの操作」の使用上の注意、第16章「LOB関数」の「OCILobFileGetName()」
COBOL(Pro*COBOL): 『Pro*COBOLプログラマーズ・ガイド』のLOBの詳細、LOB文の使用上の注意および「埋込みSQLおよびプリコンパイラ・ディレクティブ」のLOB DESCRIBE ... GET DIRECTORY ...に関する説明
C/C++(Pro*C/C++): 『Pro*C/C++プログラマーズ・ガイド』の「ラージ・オブジェクト(LOB)」、「LOB文」および「埋込みSQL文およびディレクティブ」のLOB DESCRIBE ... GET DIRECTORY ...に関する説明
COM(OO4O): 『Oracle Objects for OLE開発者ガイド』
Java(JDBC): 『Oracle Database JDBC開発者ガイドおよびリファレンス』の「LOBとBFILEの操作」の「BLOBまたはCLOB列の作成と移入」
例
次のプログラム環境での、このプロシージャの例を示します。
PL/SQL(DBMS_LOB): fgetdir.sql
OCI: fgetdir.c
COM(OO4O): fgetdir.bas
Java(JDBC): fgetdir.java
この項では、初期化したBFILEロケータを使用してBFILEを更新する方法について説明します。
構文
各プログラム環境における構文については、次のマニュアルの項を参照してください。
PL/SQL(DBMS_LOB): 『Oracle Database SQL言語リファレンス』の第7章「SQL文」の「UPDATE」
C(OCI): 『Oracle Call Interfaceプログラマーズ・ガイド』の第7章「LOBとBFILEの操作」の使用上の注意、第16章「LOB関数」の「OCILobFileSetName()」
COBOL(Pro*COBOL): 『Pro*COBOLプログラマーズ・ガイド』のLOBの詳細、LOB文の使用上の注意および「埋込みSQLおよびプリコンパイラ・ディレクティブ」の「ALLOCATE」。『Oracle Database SQL言語リファレンス』の第7章「SQL文」のUPDATEに関する項も参照。
C/C++(Pro*C/C++): 『Pro*C/C++プログラマーズ・ガイド』の「ラージ・オブジェクト(LOB)」、「LOB文」、「埋込みSQL文およびディレクティブ」。『Oracle Database SQL言語リファレンス』の第7章「SQL文」のUPDATEに関する項も参照。
COM(OO4O): 『Oracle Objects for OLE開発者ガイド』
「目次」タブから、「OO4Oオートメーション・サーバー・リファレンス」→「OO4Oサーバーのオブジェクト」→「OraBFILE」→「プロパティ」→「DirectoryName」および「FileName」を選択、および「OO4Oオートメーション・サーバー・リファレンス」→「OO4Oサーバーのオブジェクト」→「OraDatabase」→「メソッド」→「ExecuteSQL」を選択。また、「OO4Oオートメーション・サーバー・リファレンス」→「OO4Oサーバーのオブジェクト」→「OraBFILE」→「例」も参照。
Java(JDBC): 『Oracle Database JDBC開発者ガイドおよびリファレンス』の第7章「LOBとBFILEの操作」の「BLOBまたはCLOB列の作成と移入」
例
次のプログラム環境での例を示します。
PL/SQL(DBMS_LOB): fupdate.sql
OCI: fupdate.c
COM(OO4O): fupdate.bas
Java(JDBC): fupdate.java
この項では、FILECLOSEを使用してBFILEをクローズする方法について説明します。
|
注意: 新規開発には、このファンクション(FILECLOSE)をお薦めしません。かわりにCLOSEファンクションを使用してください。詳細は、「CLOSEを使用したBFILEのクローズ」を参照してください。 |
構文
各プログラム環境における構文については、次のマニュアルの項を参照してください。
PL/SQL(DBMS_LOB): 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_LOB」の「FILEOPEN」および「FILECLOSE」
C(OCI): 『Oracle Call Interfaceプログラマーズ・ガイド』の第7章「LOBとBFILEの操作」の使用上の注意、第16章「LOB関数」の「OCILobFileClose()」
COBOL(Pro*COBOL): 参照マニュアルはありません。
C/C++(Pro*C/C++): 参照マニュアルはありません。
COM(OO4O): 参照マニュアルはありません。
Java(JDBC): 『Oracle Database JDBC開発者ガイドおよびリファレンス』の「LOBとBFILEの操作」の「BLOBまたはCLOB列の作成と移入」
例
PL/SQL(DBMS_LOB): fclose_f.sql
OCI: fclose_f.c
COM(OO4O): この操作はCOMではサポートされません。かわりに、「CLOSEを使用したBFILEのクローズ」に説明されている方法を使用してください。
Java(JDBC): fclose_f.java
この項では、CLOSEファンクションを使用してBFILEをクローズする方法について説明します。
|
注意: 新規アプリケーション開発には、このファンクション(CLOSE)をお薦めします。新規開発には、古いFILECLOSEファンクションをお薦めしません。 |
使用上の注意
BFILEのオープンとクローズは必須操作です。インスタンスはセッション中に後でクローズする必要があります。
構文
各プログラム環境における構文については、次のマニュアルの項を参照してください。
PL/SQL(DBMS_LOB): 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_LOB」のCLOSEに関する項
C(OCI): 『Oracle Call Interfaceプログラマーズ・ガイド』の第7章「LOBとBFILEの操作」の使用上の注意、第16章「LOB関数」の「OCILobClose()」
COBOL(Pro*COBOL): 『Pro*COBOLプログラマーズ・ガイド』のLOBの詳細、LOB文の使用上の注意および「埋込みSQLおよびプリコンパイラ・ディレクティブ」の「LOB CLOSE」
C/C++(Pro*C/C++): 『Pro*C/C++プログラマーズ・ガイド』の「ラージ・オブジェクト(LOB)」、「LOB文」および「埋込みSQL文およびディレクティブ」の「LOB CLOSE」
COM(OO4O): 『Oracle Objects for OLE開発者ガイド』
Java(JDBC): 『Oracle Database JDBC開発者ガイドおよびリファレンス』の「LOBとBFILEの操作」の「BLOBまたはCLOB列の作成と移入」
例
PL/SQL(DBMS_LOB): fclose_c.sql
OCI: fclose_c.c
COM(OO4O): fclose.bas
Java(JDBC): fclose_c.java
この項では、オープン中のすべてのBFILEをクローズする方法について説明します。
BFILEインスタンスは、プログラムの終了前にクローズする必要があります。たとえば、オープンしているBFILEインスタンスはすべて、PL/SQLブロックやOCIプログラムの終了する前にクローズする必要があります。
アプリケーションに例外が発生したり異常終了した場合も、オープンしているBFILEインスタンスをクローズする必要があります。このような場合にBFILEインスタンスをクローズしないと、データベースでオープン状態であるとみなされます。このような場合にBFILEインスタンスがオープン状態のままにならないような例外処理方法を使用していることを確認してください。
構文
各プログラム環境における構文については、次のマニュアルの項を参照してください。
PL/SQL(DBMS_LOB): 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_LOB」の「FILECLOSEALL」
C(OCI): 『Oracle Call Interfaceプログラマーズ・ガイド』の第7章「LOBとBFILEの操作」の使用上の注意、第16章「LOB関数」の「OCILobFileCloseAll()」
COBOL(Pro*COBOL): 『Pro*COBOLプログラマーズ・ガイド』のLOBの詳細、LOB文の使用上の注意および「埋込みSQLおよびプリコンパイラ・ディレクティブ」の「LOB FILE CLOSE ALL」
C/C++(Pro*C/C++): 『Pro*C/C++プログラマーズ・ガイド』の「ラージ・オブジェクト(LOB)」、「LOB文」および「埋込みSQL文およびディレクティブ」の「LOB FILE CLOSE ALL」
COM(OO4O): 『Oracle Objects for OLE開発者ガイド』
Java(JDBC): 『Oracle Database JDBC開発者ガイドおよびリファレンス』の第7章「LOBとBFILEの操作」の「BLOBまたはCLOB列の作成と移入」
例
PL/SQL(DBMS_LOB): fclosea.sql
OCI: fclosea.c
COM(OO4O): fclosea.bas
Java(JDBC): fclosea.java
この項では、初期化したBFILEロケータを使用してBFILEを含む行を挿入する方法について説明します。
使用上の注意
INSERT文を発行する前に、BFILEロケータ・バインド変数を、NULLか、またはディレクトリ・オブジェクトおよびファイルの名前に初期化する必要があります。
構文
各プログラム環境における構文については、次のマニュアルの項を参照してください。
SQL: 『Oracle Database SQL言語リファレンス』の第7章「SQL文」のINSERTに関する項
C(OCI): 『Oracle Call Interfaceプログラマーズ・ガイド』の第7章「LOBとBFILEの操作」
COBOL(Pro*COBOL): 『Pro*COBOLプログラマーズ・ガイド』のLOBの詳細、LOB文の使用上の注意および「埋込みSQLおよびプリコンパイラ・ディレクティブ」。『Oracle Database SQL言語リファレンス』のSQL INSERT文の関連情報も参照。
C/C++(Pro*C/C++): 『Pro*C/C++プログラマーズ・ガイド』の「ラージ・オブジェクト(LOB)」、「LOB文」および「埋込みSQL文およびディレクティブ」の「LOB FILE SET」。『Oracle Database SQL言語リファレンス』の第7章「SQL文」の「INSERT」も参照。
COM(OO4O): 『Oracle Objects for OLE開発者ガイド』
Java(JDBC): 『Oracle Database JDBC開発者ガイドおよびリファレンス』の「LOBとBFILEの操作」の「BLOBまたはCLOB列の作成と移入」
例
次のプログラム環境での例を示します。
PL/SQL(DBMS_LOB): finsert.sql
OCI: finsert.c
COM(OO4O): finsert.bas
Java(JDBC): finsert.java