TOP をテンプレートにして作成
ホーム
バックアップ
一覧
検索
最終更新
ヘルプ
ログイン
開始行
[[FrontPage]]へ~
-[[リファレンスガイド]]へ~
--[[Firebird SQLリファレンス]]へ~
&br;
----
*Firebird SQLリファレンス:OPEN, FETCH, CLOSE, DECLARE CUR...
#contents
----
&br;
&aname(open);
*OPEN [#z209f70d]
行を読み込むためのカーソルを宣言します。
SQL,DSQL で使用できます。~
**構文 [#k3460204]
SQL 形式 :
OPEN [TRANSACTION transaction] cursor;
DSQL 形式 :
OPEN [TRANSACTION transaction] cursor [USING SQL DESCRIP...
&br;
BLOB 形式 : [[OPEN(BLOB)>#open_blob]]を参照。
&br;
&br;
|引数|説明|h
|TRANSACTION transaction|指定したトランザクション下で実行...
|cursor|指定した名前でカーソルを開きます。カーソル名は、...
|USING DESCRIPTOR xsqlda|DSQLで使用します。PREPARE系の文...
&br;
**詳細の説明 [#f09f1493]
OPEN により、DECLARE CURSOR 文で指定したカーソルの条件...
ます。その結果選択された行のセットが、カーソルで取り扱え...
カーソルとは、DECLARE CURSOR 文中の SELECT により選別さ...
するための一方向のポインタです。それは行単位でのシーケン...
行うためのポインタであり、また検索順にのみ進行することが...
カーソルの操作は、4つの文の連携により行います。~
|実行順序|文|解説|
|1|DECLARE CURSOR|カーソルの宣言を行います。SELECTにより...
|2|OPEN|DECLARE CURSORで指定された検索を実行します。その...
|3|FETCH|カーソルの有効な行セットから、現在カーソルが示す...
|~|~|・FETCHの実行により、カーソルは進行します。|
|4|CLOSE|カーソルをクローズし、システムリソースを解放しま...
&br;
**用例 [#xca018dc]
埋め込みSQLで、カーソルを開く例です。
EXEC SQL
OPEN C;
&br;
**参照 [#db779dab]
[[CLOSE>#close]] , [[DECLARE CURSOR>#declare_cursor]] ,...
&br;
&br;
&br;
----
&br;
&br;
&aname(open_blob);
*OPEN (BLOB) [#yeecd0cb]
BLOB用カーソルのカーソルを開き、読み込みや挿入のための...
SQLで使用できます。~
**構文 [#y80f5385]
OPEN [TRANSACTION name] cursor {INTO | USING} :blob_id;
&br;
&br;
|引数|説明|h
|TRANSACTION transaction|指定したトランザクション下で実行...
|cursor|BLOBカーソルの名前です。|
|INTO|USING|カーソルのタイプがどちらかを指定します。|
|~|INTO : INSERT BLOB用です。|
|~|USING : READ BLOB用です。|
|blob_id|BLOB列の識別子です。|
&br;
**詳細の説明 [#b0190098]
OPEN により、事前に宣言されたカーソルによる、BLOBデータ...
のための準備を行います。DECLARE CURSOR 文において READ ま...
指定することにより、そのための OPEN で指定する BLOB ID を...
-READ BLOB の場合、blob_id は外のTABLEカーソルから得られ...
-INSERT BLOB の場合、blob_id はシステムから返されます。~
(訳注:INSERTは行の新規追加なので、新たにIDがシステムで割...
READは既存のBLOBをアクセスするためのIDとしてテーブルから...
使うという意味だと思われます。ちなみに、BLOBのデータ本体...
管理方法が異なります。)~
&br;
**用例 [#gf4ae779]
埋め込みSQL用です。BLOBカーソルを宣言した後に開きます。
EXEC SQL
DECLARE BC CURSOR FOR
INSERT BLOB PROJ_DESC INTO PRJOECT;
EXEC SQL
OPEN BC INTO :blob_id;
&br;
**参照 [#l86f8fba]
[[CLOSE (BLOB)>#close_blob]] ,
[[DECLARE CURSOR (BLOB)>#declare_cursor_blob]] ,
[[FETCH (BLOB)>#fetch_blob]] , [[INSERT CURSOR (BLOB)>#in...
&br;
&br;
&br;
----
&br;
&br;
&aname(close);
*CLOSE [#z3409f87]
開いているカーソルを閉じます。
SQLで使用できます。~
**構文 [#a13a4294]
CLOSE cursor;
&br;
&br;
|引数|説明|h
|cursor|クローズしたい、開いているカーソルの名前です。|
&br;
**詳細の説明 [#kbb7f7c6]
CLOSEにより、指定したカーソルの処理を中断し、カーソル中...
その他のシステムリソースを解放します。~
カーソルとは、DECLARE CURSOR 文中の SELECT により選別さ...
するための一方向のポインタです。それは行単位でのシーケン...
行うためのポインタであり、また検索順にのみ進行することが...
カーソルの操作は、4つの文の連携により行います。~
|実行順序|文|解説|
|1|DECLARE CURSOR|カーソルの宣言を行います。SELECTにより...
|2|OPEN|DECLARE CURSORで指定された検索を実行します。その...
|3|FETCH|カーソルの有効な行セットから、現在カーソルが示す...
|~|~|・FETCHの実行により、カーソルは進行します。|
|4|CLOSE|カーソルをクローズし、システムリソースを解放しま...
&br;
FETCH 文を、閉じたカーソルに対して実行することは出来ま...
閉じられた場合、カーソルが再度オープンされるまでデータベ...
検索の再評価は行いません。カーソルを再度開くまでの間に他...
データベースの変更がコミットされた場合、カーソルの有効な...
応じて変わります。~
&br;
※COMMIT や ROLLBACK を行うと、個別にCLOSEを行わなくても開...
のカーソルが閉じられます。~
&br;
**用例 [#y01b64b3]
埋め込みSQLで、カーソルのクローズを行う例です。
EXEC SQL
CLOSE BC;
&br;
**参照 [#m3c770d8]
[[CLOSE (BLOB)>#close_blob]] , [[COMMIT>SET TRANSACTION...
[[DECLARE CURSOR>#declare_cursor]] , [[FETCH>#fetch]] , [...
[[ROLLBACK>SET TRANSACTION#rollback]]~
&br;
&br;
----
&br;
&br;
&aname(close_blob);
*CLOSE (BLOB) [#l0ae82db]
開いているBLOBカーソルを閉じ、システムリソースを解放し...
SQLで使用できます。~
**構文 [#l4fae775]
CLOSE blob_cursor;
&br;
&br;
|引数|説明|h
|cursor|クローズしたい、開いているBLOBカーソルの名前です。|
&br;
**詳細の説明 [#v0bdca08]
CLOSEにより、現在開いている読み込み・挿入用のBLOBカーソ...
&br;
一般的には、以下に示すように、カーソルに対するすべてのB...
終了し、あとは閉じれば良いという状態であることが望ましい...
-BLOB READ の場合、そのBLOBセグメントのすべてを読み込んだ...
-BLOB INSERT の場合、そのBLOBセグメントに対する挿入がすべ...
&br;
**用例 [#reea003c]
埋め込みSQLで、BLOBカーソルを閉じる例です。
EXEC SQL
CLOSE BC;
&br;
**参照 [#f3d8e0d6]
[[DECLARE CURSOR (BLOB)>#declare_cursor_blob]] ,
[[FETCH (BLOB)>#fetch_blob]] ,
[[INSERT CURSOR (BLOB)>#insert_cursor_blob]] , [[OPEN (BL...
&br;
&br;
&br;
----
&br;
&br;
&aname(fetch);
*FETCH [#z890b1d5]
開いたカーソルの有効な行セットから検索結果を取得し、ポ...
進めます。
SQL,DSQLで使用できます。~
**構文 [#b02644a2]
SQL 形式 :
FETCH cursor
[INTO :hostvar [[INDICATOR] :indvar]
[, :hostvar [[INDICATOR] :indvar] …]];
DSQL 形式 :
FETCH cursor {INTO | USING} SQL DESCRIPTOR xsqlda
BLOB 形式 : [[FETCH (BLOB)>#fetch_blob]]を参照。
&br;
&br;
|引数|説明|h
|cursor|行を取得したい開いているカーソルの名前です。|
|:hostvar|FETCHによる検索の値を保持するホスト言語変数です。|
|~|・DELETEやUPDATEを行うFETCHによる行取得の場合にはオプ...
|~|・DELETEやUPDATEで変更前の列を表示したい場合には指定が...
|:indvar|列が不明またはNULL値であることを示すインジケータ...
|[INTO|USING] SQL DESCRIPTOR|XSQLDAを指定するために使用...
|xsqlda|XSQLDAが格納されたホスト言語変数です。|
&br;
**詳細の説明 [#z244cfc1]
FETCHにより、プログラムはカーソルの有効な行セットより1...
出します。最初の FETCH では、検索結果の最初の行が取得され...
FETCHを実行することにより取り出しますが、取得する行がなく...
100 がセットされます。~
&br;
カーソルとは、DECLARE CURSOR 文中の SELECT により選別さ...
するための一方向のポインタです。それは行単位でのシーケン...
行うためのポインタであり、また検索順にのみ進行することが...
カーソルの操作は、4つの文の連携により行います。~
|実行順序|文|解説|
|1|DECLARE CURSOR|カーソルの宣言を行います。SELECTにより...
|2|OPEN|DECLARE CURSORで指定された検索を実行します。その...
|3|FETCH|カーソルの有効な行セットから、現在カーソルが示す...
|~|~|・FETCHの実行により、カーソルは進行します。|
|4|CLOSE|カーソルをクローズし、システムリソースを解放しま...
&br;
FETCH で指定する変数の数、サイズ、データタイプ、列の指...
対応する DECLARE CURSOR のクエリ式における指定と適合して...
もしも適合していない場合は、間違った変数に値が設定されま...
&br;
**用例 [#o0057596]
埋め込みSQLで、カーソルの有効な行セットから列値を取り出...
EXEC SQL
FETCH PROJ_CNT INTO :department, :hcnt;
&br;
**参照 [#xd5646ed]
[[CLOSE>#close]] , [[DECLARE CURSOR>#declare_cursor]] ,
[[DELETE>INSERT#delete]] , [[FETCH (BLOB)>#fetch_blob]] ,...
&br;
これ以上の情報が欲しい場合、Embedded SQL Guide の curso...
を参照して下さい。~
&br;
&br;
----
&br;
&br;
&aname(fetch_blob);
*FETCH (BLOB) [#i8d7f088]
BLOB列の次の有効なセグメントを検索して、指定したバッフ...
SQLで使用できます。~
**構文 [#y88e5186]
FETCH cursor INTO [:<buffer> [[INDICATOR] :segment_length];
&br;
&br;
|引数|説明|h
|cursor|セグメントを取り出す、開いているBLOBカーソルの名...
|:buffer|BLOB列のセグメントを保管するためのホスト言語変数...
|INDICATOR|オプションです。今回のFETCHで取り出されたバイ...
|:segment_length|FETCHで取り出されたバイト数を格納するホ...
&br;
**詳細の説明 [#qa2a4a9e]
FETCHにより、BLOB列の次の有効なセグメントを検索して、指...
読み込みます。~
&br;
ホスト言語変数 segment_length を指定すると、バッファに...
を取得することが出来ます。これは、バッファとして確保した...
読み込んだデータサイズが小さい場合に有用です。例えば、BLO...
を読み込む場合などです。~
&br;
FETCH は、SQLCODE に二種類の値を返します。
-SQLCODE = 100 : 取り出すべきBLOBセグメントが以降存在しな...
-SQLCODE = 101 : BLOBセグメントの一部が、バッファに設定さ...
示します。
&br;
※確保したホスト言語変数によるバッファのサイズが、FETCH で...
セグメントサイズよりも大きいことを保証するために、BASED O...
オプションを使用してください。~
&br;
**用例 [#z3841c94]
埋め込みSQLで、BLOB に対する FETCH を行う例です。
while (SQLCODE != 100)
{
EXEC SQL
OPEN BLOB_CUR USING :blob_id;
EXEC SQL
FETCH BLOB_CUR INTO :blob_segment :blob_seg_len;
while (SQLCODE !=100 || SQLCODE == 101)
{
blob_segment{blob_seg_len + 1] = '0';
printf("%*.*s",blob_seg_len,blob_seg_len,blob_se...
blob_segment{blob_seg_len + 1] = ‘ ’;
EXEC SQL
FETCH BLOB_CUR INTO :blob_segment :blob_seg_len;
}
/* その他の処理 */
}
&br;
**参照 [#s99e0cf2]
[[BASED ON>#based_on]] , [[CLOSE (BLOB)>#close_blob]] ,
[[DECLARE CURSOR (BLOB)>#declare_cursor_blob]] ,
[[INSERT CURSOR (BLOB)>#insert_cursor_blob]] , [[OPEN (BL...
&br;
&br;
----
&br;
&br;
&aname(declare_cursor);
*DECLARE CURSOR [#s8f22ee5]
テーブルに対するカーソルを宣言します。カーソルの名前と...
指定される行セットを関連付けます。
SQL,DQLで使用できます。~
**構文 [#hdbb28dd]
SQL 形式 :
DECLARE cursor CURSOR FOR <select> [FOR UPDATE OF <col> ...
&br;
DSQL 形式 :
DECLARE cursor CURSOR FOR <statement_id>
&br;
BLOB 形式 : [[DECLARE CURSOR (BLOB)>#declare_cursor_blob]...
&br;
&br;
|引数|説明|h
|cursor|カーソルの名前です。|
|select|カーソルの行セットとして選択する行を決定する SELE...
|FOR UPDATE OF col [, col …]|検索行の指定した列に対する U...
|statement_id|事前に(PREPARE)により準備された SQL 文の名...
&br;
**詳細の説明 [#fa53a1b5]
DECLARE CURSOR により、カーソルと名前を宣言し、それによ...
を定義します。それは、シーケンシャルに使用しなければなら...
ステートメントグループの最初のメンバーです。~
&br;
selectで指定した SELECT 文で検索される行が行セットに設...
そのSELECT文には、INTO や ORDER BY句を含むことは出来ませ...
&br;
FOR UPDATE OF 句は、更新や削除を行うために WHERE CURREN...
を併用する場合に、指定を行う必要があります。~
&br;
カーソルとは、DECLARE CURSOR 文中の SELECT により選別さ...
するための一方向のポインタです。それは行単位でのシーケン...
行うためのポインタであり、また検索順にのみ進行することが...
カーソルの操作は、4つの文の連携により行います。~
|実行順序|文|解説|
|1|DECLARE CURSOR|カーソルの宣言を行います。SELECTにより...
|2|OPEN|DECLARE CURSORで指定された検索を実行します。その...
|3|FETCH|カーソルの有効な行セットから、現在カーソルが示す...
|~|~|・FETCHの実行により、カーソルは進行します。|
|4|CLOSE|カーソルをクローズし、システムリソースを解放しま...
&br;
**用例 [#m460166f]
-埋め込みSQLでの例です。検索条件を指定してカーソルを宣言...
EXEC SQL
DECLARE C CURSOR FOR
SELECT CUST_NO, ORDER_STATUS
FROM SALES
WHERE ORDER_STATUS IN ('open', 'shipping');
&br;
-DSQLで、QUERY1という名前の事前に準備された文をもとにして...
します。
DECLARE Q CURSOR FOR QUERY1
&br;
**参照 [#x54ea0d7]
[[CLOSE>#close]] , [[DECLARE CURSOR (BLOB)>#declare_cur...
[[FETCH>#fetch]] , [[OPEN>#open]] , PREPARE , [[SELECT>SE...
&br;
&br;
&br;
----
&br;
&br;
&aname(declare_cursor_blob);
*DECLARE CURSOR (BLOB) [#b5ac0fd1]
読み込みや挿入用BLOBカーソルを宣言します。
SQLで使用できます。~
**構文 [#j16aa8d2]
DECLARE cursor CURSOR FOR
{READ BLOB column FROM table | INSERT BLOB column INTO...
[FILTER [FROM subtype] TO subtype]
[MAXIMUM_SEGMENT length];
&br;
&br;
|引数|説明|h
|cursor|BLOBカーソルの名前です。|
|column|BLOBカーソルと関連付けるBLOB列の名前です。|
|table|テーブルの名前です。|
|READ BLOB|BLOBの読込みに使用するカーソルであることを宣言...
|INSERT BLOB|BLOBの書込みに使用するカーソルであることを宣...
|[FILTER [FROM subtype] TO subtype]|オプション指定です。B...
|MAXIMUM_SEGMENT length|FETCH実行時にBLOBのデータを受取る...
&br;
**詳細の説明 [#o20f97af]
DECLARE CURSOR により、BLOBデータの読込みや挿入を行うた...
宣言します。BLOBカーソルは、BLOB列以外と関連付けることは...
&br;
読込みに使用するホスト言語変数のサイズが BLOB セグメン...
小さい場合には、MAXIMUM_SEGMENT 句を指定して宣言を行って...
その長さが、BLOBセグメントのサイズよりも小さい場合、FETCH...
を返します。未指定デフォルトの場合やセグメントのサイズよ...
すべてのセグメントを読込みます。~
&br;
**用例 [#x10cca4f]
-埋め込みSQLの例です。MAXIMUM_SEGMENT オプションの指定と...
カーソルを宣言します。
EXEC SQL
DECLARE BC CURSOR FOR
READ BLOB JOB_REQUIREMENT FROM JOB MAXIMUM_SEGMENT 40;
&br;
-埋め込みSQLの例です。INSERT BLOB カーソルを宣言します。
EXEC SQL
DECLARE BC CURSOR FOR
INSERT BLOB JOB_REQUIREMENt INTO JOB;
&br;
**参照 [#v4effcea]
[[CLOSE (BLOB)>#close_blob]] , [[FETCH (BLOB)>#fetch_bl...
[[INSERT CURSOR (BLOB)>#insert_cursor_blob]] , [[OPEN (BL...
&br;
&br;
&br;
----
&br;
&br;
&aname(insert_cursor_blob);
*INSERT CURSOR (BLOB) [#t8bab311]
BLOBセグメント単位もしくはそれ以下のサイズのデータを、B...
挿入します。
SQLで使用できます。~
**構文 [#md5d1157]
INSERT CURSOR cursor VALUES (:buffer [INDICATOR] :buffer...
&br;
&br;
|引数|説明|h
|cursor|BLOBカーソルの名前です。|
|VALUES|挿入するバッファ変数とその長さを指定します。|
|:buffer|挿入するデータのバッファとなるホスト変数です。|
|INDICATOR|バッファのデータ長が続いて指定されることを示し...
|:bufferlen|挿入するバッファのデータ長です。バイト数指定...
&br;
**詳細の説明 [#p042017e]
INSERT CURSOR により、BLOBデータを列に書き込みます。一...
BLOBセグメントサイズまたそれ以下のデータを書き込めます。~
BLOBカーソルにデータを挿入する前に、
-ローカル変数とバッファを宣言し、そこに挿入するデータを設...
-バッファのサイズを格納する変数を宣言してください。
-BLOBカーソルを INSERT としてオープンしてください。
&br;
一回のBLOB列へのINSERTで、その時に指定したバッファの内...
文と文の間でバッファに新しいデータを設定してください。そ...
バッファのBLOBへの書き込みが終わるまで、それを繰り返しま...
&br;
''重要'' INSERT CURSOR を実行するには、テーブルの対する I...
です。特権は、GRANT や REVOKE 文により制御されます。~
&br;
**用例 [#a18a7ab3]
埋め込みSQLでの例です。BLOBカーソルによる挿入を行います。
EXEC SQL
INSERT CURSOR BC VALUES (:line INDICATOR :len);
&br;
**参照 [#td28cbd2]
[[CLOSE (BLOB)>#close_blob]] ,
[[DECLARE CURSOR (BLOB)>#declare_cursor_blob]] ,
[[FETCH (BLOB)>#fetch_blob]] , [[OPEN (BLOB)>#open_blob]]~
&br;
&br;
&br;
----
&br;
&br;
&aname(based_on);
*BASED ON [#dbf7c4a2]
列の仕様に基づいたアクセス用ホスト言語変数を宣言します。
SQLで使用できます。~
**構文 [#z3a14e66]
BASED [ON] [dbhandle.]table.col[.SEGMENT] variable;
&br;
&br;
|引数|説明|h
|dbhandle|マルチデータベースプログラムにおいて、データベ...
|table.col|変数のベースとなる、テーブル名とその列名です。|
|.SEGMENT|ローカル変数のサイズを、BLOB FETCH 操作のために...
|variable|指定したデータベース列の仕様を継承するホスト言...
&br;
**詳細の説明 [#pc06011b]
BASED ON はプリプロセッサ用のディレクティブであり、列定...
言語変数を作成します。そのホスト言語変数は、列定義のため...
変数型を、プログラム中で扱えるようにします。例えば、C言語...
変数を作成する場合、NULLターミネータを設定するためにサイ...
&br;
BASED ON は、プログラムの変数宣言を行うセクションで使用...
&br;
※ BASED ONは、キーワード EXEC SQL を必要としません。~
&br;
BLOB用のホスト言語変数を作成する場合、FETCH操作でのBLOB...
よりも大きなサイズの変数を確保するために、SEGMENTオプショ...
指定して下さい。これにより、変数のサイズはBLOB列のセグメ...
ます。このため、データベースのBLOBセグメントサイズが変更...
プログラムの再コンパイルを行い、BASED ON によるホスト言語...
再調整する必要があります。~
&br;
**用例 [#yecd8d79]
埋め込みSQLの例です。列に基づいたホスト変数を宣言してい...
EXEC SQL
BEGIN DECLARE SECTION;
BASED_ON EMPLOYEE.SALARY salary;
EXEC SQL
END DECLARE SECTION;
&br;
**参照 [#rfe3f175]
[[BEGIN DECLARE SECTION>#begin_declare_section]] ,
[[CREATE TABLE>CREATE TABLE#create_table]] ,
[[END DECLARE SECTION>#end_declare_section]]~
&br;
&br;
&br;
----
&br;
&br;
&aname(begin_declare_section);
*BEGIN DECLARE SECTION [#o4b01ff7]
ホスト言語変数宣言セクションの開始を示します。
SQLで使用できます。~
**構文 [#gb2cc84c]
BEGIN DECLARE SECTION;
**詳細の説明 [#j829d126]
BEGIN DECLARE SECTION により、埋め込みSQLアプリケーショ...
SQL文で使用できるホスト言語変数宣言の開始を示します。
BEGIN DECLARE SECTION はプリプロセッサのディレクティブで...
より、gpre は SQLCODE をアプリケーションプログラマが使用...
に宣言します。~
&br;
''重要'' BEGIN DECLARE SECTION は、常にモジュールのグロ...
セクションで使用される必要があります。~
&br;
**用例 [#u5130f9e]
埋め込みSQLで、ホスト言語変数を宣言する例です。
EXEC SQL
BEGIN DECLARE SECTION;
BASED ON EMPLOYEE.SALARY salary;
EXEC SQL
END DECLARE SECTION;
&br;
**参照 [#q468f518]
[[BASED ON>#based_on]] , [[END DECLARE SECTION>#end_dec...
&br;
&br;
&br;
----
&br;
&br;
&aname(end_declare_section);
*END DECLARE SECTION [#h760dba1]
ホスト言語変数宣言セクションの終了を示します。
SQLで使用できます。~
**構文 [#w9870a63]
END DECLARE SECTION;
**詳細の説明 [#rd9d9d80]
END DECLARE SECTION により、埋め込みSQLアプリケーション...
SQL文で使用できるホスト言語変数宣言セクションの終了を示し...
&br;
**用例 [#u8f5475b]
埋め込みSQLで、宣言セクションにおいて1つのホスト言語変...
EXEC SQL
BEGIN DECLARE SECTION;
BASED_ON EMPLOYEE.SALARY salary;
EXEC SQL
END DECLARE SECTION;
&br;
**参照 [#qe5e7b8d]
[[BASED ON>#based_on]] , [[BEGIN DECLARE SECTION>#begin...
&br;
最終行:
[[FrontPage]]へ~
-[[リファレンスガイド]]へ~
--[[Firebird SQLリファレンス]]へ~
&br;
----
*Firebird SQLリファレンス:OPEN, FETCH, CLOSE, DECLARE CUR...
#contents
----
&br;
&aname(open);
*OPEN [#z209f70d]
行を読み込むためのカーソルを宣言します。
SQL,DSQL で使用できます。~
**構文 [#k3460204]
SQL 形式 :
OPEN [TRANSACTION transaction] cursor;
DSQL 形式 :
OPEN [TRANSACTION transaction] cursor [USING SQL DESCRIP...
&br;
BLOB 形式 : [[OPEN(BLOB)>#open_blob]]を参照。
&br;
&br;
|引数|説明|h
|TRANSACTION transaction|指定したトランザクション下で実行...
|cursor|指定した名前でカーソルを開きます。カーソル名は、...
|USING DESCRIPTOR xsqlda|DSQLで使用します。PREPARE系の文...
&br;
**詳細の説明 [#f09f1493]
OPEN により、DECLARE CURSOR 文で指定したカーソルの条件...
ます。その結果選択された行のセットが、カーソルで取り扱え...
カーソルとは、DECLARE CURSOR 文中の SELECT により選別さ...
するための一方向のポインタです。それは行単位でのシーケン...
行うためのポインタであり、また検索順にのみ進行することが...
カーソルの操作は、4つの文の連携により行います。~
|実行順序|文|解説|
|1|DECLARE CURSOR|カーソルの宣言を行います。SELECTにより...
|2|OPEN|DECLARE CURSORで指定された検索を実行します。その...
|3|FETCH|カーソルの有効な行セットから、現在カーソルが示す...
|~|~|・FETCHの実行により、カーソルは進行します。|
|4|CLOSE|カーソルをクローズし、システムリソースを解放しま...
&br;
**用例 [#xca018dc]
埋め込みSQLで、カーソルを開く例です。
EXEC SQL
OPEN C;
&br;
**参照 [#db779dab]
[[CLOSE>#close]] , [[DECLARE CURSOR>#declare_cursor]] ,...
&br;
&br;
&br;
----
&br;
&br;
&aname(open_blob);
*OPEN (BLOB) [#yeecd0cb]
BLOB用カーソルのカーソルを開き、読み込みや挿入のための...
SQLで使用できます。~
**構文 [#y80f5385]
OPEN [TRANSACTION name] cursor {INTO | USING} :blob_id;
&br;
&br;
|引数|説明|h
|TRANSACTION transaction|指定したトランザクション下で実行...
|cursor|BLOBカーソルの名前です。|
|INTO|USING|カーソルのタイプがどちらかを指定します。|
|~|INTO : INSERT BLOB用です。|
|~|USING : READ BLOB用です。|
|blob_id|BLOB列の識別子です。|
&br;
**詳細の説明 [#b0190098]
OPEN により、事前に宣言されたカーソルによる、BLOBデータ...
のための準備を行います。DECLARE CURSOR 文において READ ま...
指定することにより、そのための OPEN で指定する BLOB ID を...
-READ BLOB の場合、blob_id は外のTABLEカーソルから得られ...
-INSERT BLOB の場合、blob_id はシステムから返されます。~
(訳注:INSERTは行の新規追加なので、新たにIDがシステムで割...
READは既存のBLOBをアクセスするためのIDとしてテーブルから...
使うという意味だと思われます。ちなみに、BLOBのデータ本体...
管理方法が異なります。)~
&br;
**用例 [#gf4ae779]
埋め込みSQL用です。BLOBカーソルを宣言した後に開きます。
EXEC SQL
DECLARE BC CURSOR FOR
INSERT BLOB PROJ_DESC INTO PRJOECT;
EXEC SQL
OPEN BC INTO :blob_id;
&br;
**参照 [#l86f8fba]
[[CLOSE (BLOB)>#close_blob]] ,
[[DECLARE CURSOR (BLOB)>#declare_cursor_blob]] ,
[[FETCH (BLOB)>#fetch_blob]] , [[INSERT CURSOR (BLOB)>#in...
&br;
&br;
&br;
----
&br;
&br;
&aname(close);
*CLOSE [#z3409f87]
開いているカーソルを閉じます。
SQLで使用できます。~
**構文 [#a13a4294]
CLOSE cursor;
&br;
&br;
|引数|説明|h
|cursor|クローズしたい、開いているカーソルの名前です。|
&br;
**詳細の説明 [#kbb7f7c6]
CLOSEにより、指定したカーソルの処理を中断し、カーソル中...
その他のシステムリソースを解放します。~
カーソルとは、DECLARE CURSOR 文中の SELECT により選別さ...
するための一方向のポインタです。それは行単位でのシーケン...
行うためのポインタであり、また検索順にのみ進行することが...
カーソルの操作は、4つの文の連携により行います。~
|実行順序|文|解説|
|1|DECLARE CURSOR|カーソルの宣言を行います。SELECTにより...
|2|OPEN|DECLARE CURSORで指定された検索を実行します。その...
|3|FETCH|カーソルの有効な行セットから、現在カーソルが示す...
|~|~|・FETCHの実行により、カーソルは進行します。|
|4|CLOSE|カーソルをクローズし、システムリソースを解放しま...
&br;
FETCH 文を、閉じたカーソルに対して実行することは出来ま...
閉じられた場合、カーソルが再度オープンされるまでデータベ...
検索の再評価は行いません。カーソルを再度開くまでの間に他...
データベースの変更がコミットされた場合、カーソルの有効な...
応じて変わります。~
&br;
※COMMIT や ROLLBACK を行うと、個別にCLOSEを行わなくても開...
のカーソルが閉じられます。~
&br;
**用例 [#y01b64b3]
埋め込みSQLで、カーソルのクローズを行う例です。
EXEC SQL
CLOSE BC;
&br;
**参照 [#m3c770d8]
[[CLOSE (BLOB)>#close_blob]] , [[COMMIT>SET TRANSACTION...
[[DECLARE CURSOR>#declare_cursor]] , [[FETCH>#fetch]] , [...
[[ROLLBACK>SET TRANSACTION#rollback]]~
&br;
&br;
----
&br;
&br;
&aname(close_blob);
*CLOSE (BLOB) [#l0ae82db]
開いているBLOBカーソルを閉じ、システムリソースを解放し...
SQLで使用できます。~
**構文 [#l4fae775]
CLOSE blob_cursor;
&br;
&br;
|引数|説明|h
|cursor|クローズしたい、開いているBLOBカーソルの名前です。|
&br;
**詳細の説明 [#v0bdca08]
CLOSEにより、現在開いている読み込み・挿入用のBLOBカーソ...
&br;
一般的には、以下に示すように、カーソルに対するすべてのB...
終了し、あとは閉じれば良いという状態であることが望ましい...
-BLOB READ の場合、そのBLOBセグメントのすべてを読み込んだ...
-BLOB INSERT の場合、そのBLOBセグメントに対する挿入がすべ...
&br;
**用例 [#reea003c]
埋め込みSQLで、BLOBカーソルを閉じる例です。
EXEC SQL
CLOSE BC;
&br;
**参照 [#f3d8e0d6]
[[DECLARE CURSOR (BLOB)>#declare_cursor_blob]] ,
[[FETCH (BLOB)>#fetch_blob]] ,
[[INSERT CURSOR (BLOB)>#insert_cursor_blob]] , [[OPEN (BL...
&br;
&br;
&br;
----
&br;
&br;
&aname(fetch);
*FETCH [#z890b1d5]
開いたカーソルの有効な行セットから検索結果を取得し、ポ...
進めます。
SQL,DSQLで使用できます。~
**構文 [#b02644a2]
SQL 形式 :
FETCH cursor
[INTO :hostvar [[INDICATOR] :indvar]
[, :hostvar [[INDICATOR] :indvar] …]];
DSQL 形式 :
FETCH cursor {INTO | USING} SQL DESCRIPTOR xsqlda
BLOB 形式 : [[FETCH (BLOB)>#fetch_blob]]を参照。
&br;
&br;
|引数|説明|h
|cursor|行を取得したい開いているカーソルの名前です。|
|:hostvar|FETCHによる検索の値を保持するホスト言語変数です。|
|~|・DELETEやUPDATEを行うFETCHによる行取得の場合にはオプ...
|~|・DELETEやUPDATEで変更前の列を表示したい場合には指定が...
|:indvar|列が不明またはNULL値であることを示すインジケータ...
|[INTO|USING] SQL DESCRIPTOR|XSQLDAを指定するために使用...
|xsqlda|XSQLDAが格納されたホスト言語変数です。|
&br;
**詳細の説明 [#z244cfc1]
FETCHにより、プログラムはカーソルの有効な行セットより1...
出します。最初の FETCH では、検索結果の最初の行が取得され...
FETCHを実行することにより取り出しますが、取得する行がなく...
100 がセットされます。~
&br;
カーソルとは、DECLARE CURSOR 文中の SELECT により選別さ...
するための一方向のポインタです。それは行単位でのシーケン...
行うためのポインタであり、また検索順にのみ進行することが...
カーソルの操作は、4つの文の連携により行います。~
|実行順序|文|解説|
|1|DECLARE CURSOR|カーソルの宣言を行います。SELECTにより...
|2|OPEN|DECLARE CURSORで指定された検索を実行します。その...
|3|FETCH|カーソルの有効な行セットから、現在カーソルが示す...
|~|~|・FETCHの実行により、カーソルは進行します。|
|4|CLOSE|カーソルをクローズし、システムリソースを解放しま...
&br;
FETCH で指定する変数の数、サイズ、データタイプ、列の指...
対応する DECLARE CURSOR のクエリ式における指定と適合して...
もしも適合していない場合は、間違った変数に値が設定されま...
&br;
**用例 [#o0057596]
埋め込みSQLで、カーソルの有効な行セットから列値を取り出...
EXEC SQL
FETCH PROJ_CNT INTO :department, :hcnt;
&br;
**参照 [#xd5646ed]
[[CLOSE>#close]] , [[DECLARE CURSOR>#declare_cursor]] ,
[[DELETE>INSERT#delete]] , [[FETCH (BLOB)>#fetch_blob]] ,...
&br;
これ以上の情報が欲しい場合、Embedded SQL Guide の curso...
を参照して下さい。~
&br;
&br;
----
&br;
&br;
&aname(fetch_blob);
*FETCH (BLOB) [#i8d7f088]
BLOB列の次の有効なセグメントを検索して、指定したバッフ...
SQLで使用できます。~
**構文 [#y88e5186]
FETCH cursor INTO [:<buffer> [[INDICATOR] :segment_length];
&br;
&br;
|引数|説明|h
|cursor|セグメントを取り出す、開いているBLOBカーソルの名...
|:buffer|BLOB列のセグメントを保管するためのホスト言語変数...
|INDICATOR|オプションです。今回のFETCHで取り出されたバイ...
|:segment_length|FETCHで取り出されたバイト数を格納するホ...
&br;
**詳細の説明 [#qa2a4a9e]
FETCHにより、BLOB列の次の有効なセグメントを検索して、指...
読み込みます。~
&br;
ホスト言語変数 segment_length を指定すると、バッファに...
を取得することが出来ます。これは、バッファとして確保した...
読み込んだデータサイズが小さい場合に有用です。例えば、BLO...
を読み込む場合などです。~
&br;
FETCH は、SQLCODE に二種類の値を返します。
-SQLCODE = 100 : 取り出すべきBLOBセグメントが以降存在しな...
-SQLCODE = 101 : BLOBセグメントの一部が、バッファに設定さ...
示します。
&br;
※確保したホスト言語変数によるバッファのサイズが、FETCH で...
セグメントサイズよりも大きいことを保証するために、BASED O...
オプションを使用してください。~
&br;
**用例 [#z3841c94]
埋め込みSQLで、BLOB に対する FETCH を行う例です。
while (SQLCODE != 100)
{
EXEC SQL
OPEN BLOB_CUR USING :blob_id;
EXEC SQL
FETCH BLOB_CUR INTO :blob_segment :blob_seg_len;
while (SQLCODE !=100 || SQLCODE == 101)
{
blob_segment{blob_seg_len + 1] = '0';
printf("%*.*s",blob_seg_len,blob_seg_len,blob_se...
blob_segment{blob_seg_len + 1] = ‘ ’;
EXEC SQL
FETCH BLOB_CUR INTO :blob_segment :blob_seg_len;
}
/* その他の処理 */
}
&br;
**参照 [#s99e0cf2]
[[BASED ON>#based_on]] , [[CLOSE (BLOB)>#close_blob]] ,
[[DECLARE CURSOR (BLOB)>#declare_cursor_blob]] ,
[[INSERT CURSOR (BLOB)>#insert_cursor_blob]] , [[OPEN (BL...
&br;
&br;
----
&br;
&br;
&aname(declare_cursor);
*DECLARE CURSOR [#s8f22ee5]
テーブルに対するカーソルを宣言します。カーソルの名前と...
指定される行セットを関連付けます。
SQL,DQLで使用できます。~
**構文 [#hdbb28dd]
SQL 形式 :
DECLARE cursor CURSOR FOR <select> [FOR UPDATE OF <col> ...
&br;
DSQL 形式 :
DECLARE cursor CURSOR FOR <statement_id>
&br;
BLOB 形式 : [[DECLARE CURSOR (BLOB)>#declare_cursor_blob]...
&br;
&br;
|引数|説明|h
|cursor|カーソルの名前です。|
|select|カーソルの行セットとして選択する行を決定する SELE...
|FOR UPDATE OF col [, col …]|検索行の指定した列に対する U...
|statement_id|事前に(PREPARE)により準備された SQL 文の名...
&br;
**詳細の説明 [#fa53a1b5]
DECLARE CURSOR により、カーソルと名前を宣言し、それによ...
を定義します。それは、シーケンシャルに使用しなければなら...
ステートメントグループの最初のメンバーです。~
&br;
selectで指定した SELECT 文で検索される行が行セットに設...
そのSELECT文には、INTO や ORDER BY句を含むことは出来ませ...
&br;
FOR UPDATE OF 句は、更新や削除を行うために WHERE CURREN...
を併用する場合に、指定を行う必要があります。~
&br;
カーソルとは、DECLARE CURSOR 文中の SELECT により選別さ...
するための一方向のポインタです。それは行単位でのシーケン...
行うためのポインタであり、また検索順にのみ進行することが...
カーソルの操作は、4つの文の連携により行います。~
|実行順序|文|解説|
|1|DECLARE CURSOR|カーソルの宣言を行います。SELECTにより...
|2|OPEN|DECLARE CURSORで指定された検索を実行します。その...
|3|FETCH|カーソルの有効な行セットから、現在カーソルが示す...
|~|~|・FETCHの実行により、カーソルは進行します。|
|4|CLOSE|カーソルをクローズし、システムリソースを解放しま...
&br;
**用例 [#m460166f]
-埋め込みSQLでの例です。検索条件を指定してカーソルを宣言...
EXEC SQL
DECLARE C CURSOR FOR
SELECT CUST_NO, ORDER_STATUS
FROM SALES
WHERE ORDER_STATUS IN ('open', 'shipping');
&br;
-DSQLで、QUERY1という名前の事前に準備された文をもとにして...
します。
DECLARE Q CURSOR FOR QUERY1
&br;
**参照 [#x54ea0d7]
[[CLOSE>#close]] , [[DECLARE CURSOR (BLOB)>#declare_cur...
[[FETCH>#fetch]] , [[OPEN>#open]] , PREPARE , [[SELECT>SE...
&br;
&br;
&br;
----
&br;
&br;
&aname(declare_cursor_blob);
*DECLARE CURSOR (BLOB) [#b5ac0fd1]
読み込みや挿入用BLOBカーソルを宣言します。
SQLで使用できます。~
**構文 [#j16aa8d2]
DECLARE cursor CURSOR FOR
{READ BLOB column FROM table | INSERT BLOB column INTO...
[FILTER [FROM subtype] TO subtype]
[MAXIMUM_SEGMENT length];
&br;
&br;
|引数|説明|h
|cursor|BLOBカーソルの名前です。|
|column|BLOBカーソルと関連付けるBLOB列の名前です。|
|table|テーブルの名前です。|
|READ BLOB|BLOBの読込みに使用するカーソルであることを宣言...
|INSERT BLOB|BLOBの書込みに使用するカーソルであることを宣...
|[FILTER [FROM subtype] TO subtype]|オプション指定です。B...
|MAXIMUM_SEGMENT length|FETCH実行時にBLOBのデータを受取る...
&br;
**詳細の説明 [#o20f97af]
DECLARE CURSOR により、BLOBデータの読込みや挿入を行うた...
宣言します。BLOBカーソルは、BLOB列以外と関連付けることは...
&br;
読込みに使用するホスト言語変数のサイズが BLOB セグメン...
小さい場合には、MAXIMUM_SEGMENT 句を指定して宣言を行って...
その長さが、BLOBセグメントのサイズよりも小さい場合、FETCH...
を返します。未指定デフォルトの場合やセグメントのサイズよ...
すべてのセグメントを読込みます。~
&br;
**用例 [#x10cca4f]
-埋め込みSQLの例です。MAXIMUM_SEGMENT オプションの指定と...
カーソルを宣言します。
EXEC SQL
DECLARE BC CURSOR FOR
READ BLOB JOB_REQUIREMENT FROM JOB MAXIMUM_SEGMENT 40;
&br;
-埋め込みSQLの例です。INSERT BLOB カーソルを宣言します。
EXEC SQL
DECLARE BC CURSOR FOR
INSERT BLOB JOB_REQUIREMENt INTO JOB;
&br;
**参照 [#v4effcea]
[[CLOSE (BLOB)>#close_blob]] , [[FETCH (BLOB)>#fetch_bl...
[[INSERT CURSOR (BLOB)>#insert_cursor_blob]] , [[OPEN (BL...
&br;
&br;
&br;
----
&br;
&br;
&aname(insert_cursor_blob);
*INSERT CURSOR (BLOB) [#t8bab311]
BLOBセグメント単位もしくはそれ以下のサイズのデータを、B...
挿入します。
SQLで使用できます。~
**構文 [#md5d1157]
INSERT CURSOR cursor VALUES (:buffer [INDICATOR] :buffer...
&br;
&br;
|引数|説明|h
|cursor|BLOBカーソルの名前です。|
|VALUES|挿入するバッファ変数とその長さを指定します。|
|:buffer|挿入するデータのバッファとなるホスト変数です。|
|INDICATOR|バッファのデータ長が続いて指定されることを示し...
|:bufferlen|挿入するバッファのデータ長です。バイト数指定...
&br;
**詳細の説明 [#p042017e]
INSERT CURSOR により、BLOBデータを列に書き込みます。一...
BLOBセグメントサイズまたそれ以下のデータを書き込めます。~
BLOBカーソルにデータを挿入する前に、
-ローカル変数とバッファを宣言し、そこに挿入するデータを設...
-バッファのサイズを格納する変数を宣言してください。
-BLOBカーソルを INSERT としてオープンしてください。
&br;
一回のBLOB列へのINSERTで、その時に指定したバッファの内...
文と文の間でバッファに新しいデータを設定してください。そ...
バッファのBLOBへの書き込みが終わるまで、それを繰り返しま...
&br;
''重要'' INSERT CURSOR を実行するには、テーブルの対する I...
です。特権は、GRANT や REVOKE 文により制御されます。~
&br;
**用例 [#a18a7ab3]
埋め込みSQLでの例です。BLOBカーソルによる挿入を行います。
EXEC SQL
INSERT CURSOR BC VALUES (:line INDICATOR :len);
&br;
**参照 [#td28cbd2]
[[CLOSE (BLOB)>#close_blob]] ,
[[DECLARE CURSOR (BLOB)>#declare_cursor_blob]] ,
[[FETCH (BLOB)>#fetch_blob]] , [[OPEN (BLOB)>#open_blob]]~
&br;
&br;
&br;
----
&br;
&br;
&aname(based_on);
*BASED ON [#dbf7c4a2]
列の仕様に基づいたアクセス用ホスト言語変数を宣言します。
SQLで使用できます。~
**構文 [#z3a14e66]
BASED [ON] [dbhandle.]table.col[.SEGMENT] variable;
&br;
&br;
|引数|説明|h
|dbhandle|マルチデータベースプログラムにおいて、データベ...
|table.col|変数のベースとなる、テーブル名とその列名です。|
|.SEGMENT|ローカル変数のサイズを、BLOB FETCH 操作のために...
|variable|指定したデータベース列の仕様を継承するホスト言...
&br;
**詳細の説明 [#pc06011b]
BASED ON はプリプロセッサ用のディレクティブであり、列定...
言語変数を作成します。そのホスト言語変数は、列定義のため...
変数型を、プログラム中で扱えるようにします。例えば、C言語...
変数を作成する場合、NULLターミネータを設定するためにサイ...
&br;
BASED ON は、プログラムの変数宣言を行うセクションで使用...
&br;
※ BASED ONは、キーワード EXEC SQL を必要としません。~
&br;
BLOB用のホスト言語変数を作成する場合、FETCH操作でのBLOB...
よりも大きなサイズの変数を確保するために、SEGMENTオプショ...
指定して下さい。これにより、変数のサイズはBLOB列のセグメ...
ます。このため、データベースのBLOBセグメントサイズが変更...
プログラムの再コンパイルを行い、BASED ON によるホスト言語...
再調整する必要があります。~
&br;
**用例 [#yecd8d79]
埋め込みSQLの例です。列に基づいたホスト変数を宣言してい...
EXEC SQL
BEGIN DECLARE SECTION;
BASED_ON EMPLOYEE.SALARY salary;
EXEC SQL
END DECLARE SECTION;
&br;
**参照 [#rfe3f175]
[[BEGIN DECLARE SECTION>#begin_declare_section]] ,
[[CREATE TABLE>CREATE TABLE#create_table]] ,
[[END DECLARE SECTION>#end_declare_section]]~
&br;
&br;
&br;
----
&br;
&br;
&aname(begin_declare_section);
*BEGIN DECLARE SECTION [#o4b01ff7]
ホスト言語変数宣言セクションの開始を示します。
SQLで使用できます。~
**構文 [#gb2cc84c]
BEGIN DECLARE SECTION;
**詳細の説明 [#j829d126]
BEGIN DECLARE SECTION により、埋め込みSQLアプリケーショ...
SQL文で使用できるホスト言語変数宣言の開始を示します。
BEGIN DECLARE SECTION はプリプロセッサのディレクティブで...
より、gpre は SQLCODE をアプリケーションプログラマが使用...
に宣言します。~
&br;
''重要'' BEGIN DECLARE SECTION は、常にモジュールのグロ...
セクションで使用される必要があります。~
&br;
**用例 [#u5130f9e]
埋め込みSQLで、ホスト言語変数を宣言する例です。
EXEC SQL
BEGIN DECLARE SECTION;
BASED ON EMPLOYEE.SALARY salary;
EXEC SQL
END DECLARE SECTION;
&br;
**参照 [#q468f518]
[[BASED ON>#based_on]] , [[END DECLARE SECTION>#end_dec...
&br;
&br;
&br;
----
&br;
&br;
&aname(end_declare_section);
*END DECLARE SECTION [#h760dba1]
ホスト言語変数宣言セクションの終了を示します。
SQLで使用できます。~
**構文 [#w9870a63]
END DECLARE SECTION;
**詳細の説明 [#rd9d9d80]
END DECLARE SECTION により、埋め込みSQLアプリケーション...
SQL文で使用できるホスト言語変数宣言セクションの終了を示し...
&br;
**用例 [#u8f5475b]
埋め込みSQLで、宣言セクションにおいて1つのホスト言語変...
EXEC SQL
BEGIN DECLARE SECTION;
BASED_ON EMPLOYEE.SALARY salary;
EXEC SQL
END DECLARE SECTION;
&br;
**参照 [#qe5e7b8d]
[[BASED ON>#based_on]] , [[BEGIN DECLARE SECTION>#begin...
&br;
ページ名:
新規
名前変更
ホーム
一覧
検索
最終更新
バックアップ
ヘルプ
最終更新のRSS