X 3005-10
:2003 (ISO/IEC 9075-10:2000)
(1)
まえがき
この規格は,工業標準化法に基づいて,日本工業標準調査会の審議を経て,経済産業大臣が制定した日
本工業規格である。
制定に当たっては,日本工業規格と国際規格との対比,国際規格に一致した日本工業規格の作成及び日
本工業規格を基礎にした国際規格原案の提案を容易にするために,ISO/IEC 9075-10:2000,Information
technology ―Database languages ―SQL ―Part 10: Object Language Bindings(SQL/OLB)を基礎として用いた。
この規格の一部が,技術的性質をもつ特許権,出願公開後の特許出願,実用新案権,又は出願公開後の
実用新案登録出願に抵触する可能性があることに注意を喚起する。主務大臣及び日本工業標準調査会は,
このような技術的性質をもつ特許権,出願公開後の特許出願,実用新案権,又は出願公開後の実用新案登
録出願にかかわる確認について,責任はもたない。
JIS X 3005-10
には,次に示す附属書がある。
附属書 1(参考)ISO/IEC 9075-10:2000,Information technology ―Database languages ―SQL ― Part 10:
Object Language Bindings(SQL/OLB)
JIS X 3005
の規格群には,次に示す部編成がある。
JIS X 3005-1
データベース言語 SQL 第 1 部: 枠組(SQL/Framework)
JIS X 3005-2
データベース言語 SQL 第 2 部: 基本機能(SQL/Foundation)
JIS X 3005-3
データベース言語 SQL 第 3 部: 呼出しレベルインタフェース(SQL/CLI)
JIS X 3005-4
データベース言語 SQL 第 4 部: 永続格納モジュール(SQL/PSM)
JIS X 3005-9
データベース言語 SQL 第 9 部: 外部データ管理(SQL/OLB)
JIS X 3005-10
データベース言語 SQL 第 10 部: オブジェクト言語結合(SQL/OLB)
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
(2)
目 次
ページ
序文
1
1.
適用範囲
1
2.
引用規格
1
2.1
標準規格
1
2.2
公的に利用可能な規定
2
3.
定義,表記法及び規約
3
3.1
定義
3
3.1.1
第 10 部で規定する定義
3
3.2
表記法
4
3.3
規約
4
3.3.1
用語の使用
4
3.3.1.1
その他の用語
4
3.3.2
JIS X 3005(ISO/IEC 9075)の他の部との関係
5
3.3.2.1
箇条及び表の関係
5
3.4
データベース言語 SQL のオブジェクト識別子
21
4.
概念
21
4.1
はじめに
21
4.2
埋込み構文
21
4.3
SQL 構成要素
22
4.4
文字列
22
4.4.1
UNICODE 支援
22
4.4.2
名前付き文字集合
23
4.5
ホスト変数
23
4.6
ホスト式
23
4.7
SQLJ 句
23
4.8
データベースコネクション文脈
24
4.9
既定コネクション文脈
24
4.10
例示スキーマを用いたスキーマ検査
25
4.11
複数の SQLJ 文脈及びコネクションの利用
26
4.12
動的 SQL 及び JDBC/SQLJ コネクション Connection の相互運用性
26
4.12.1
JDBC コネクションからの SQLJ コネクション文脈 ConnectionContext の作成
26
4.12.2
SQLJ コネクション文脈 ConnectionContext からの JDBC コネクションの取得
26
4.12.3
コネクション共有
26
4.12.4
コネクション資源管理
26
4.13
SQL 実行制御及び状態
27
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
(3)
4.14
反復子
28
4.15
入力及び出力の代入可能性
29
4.16
格納手続及び格納関数の呼出し
35
4.17
格納手続呼出しからの複数の JDBC 結果集合 ResultSet オブジェクト
35
4.17.1
複数の結果に関する資源管理
36
4.18
JDBC/SQLJ 結果集合 ResultSet 相互運用性
36
4.18.1
JDBC 結果集合 ResultSet オブジェクトからの SQLJ 反復子の作成
36
4.18.2
SQLJ 反復子オブジェクトからの JDBC 結果集合 ResultSet の取得
36
4.18.3
型付けされていない反復子オブジェクトからの JDBC 結果集合 ResultSet オブジェクトの取得·
36
4.18.4
反復子及び JDBC 結果集合 ResultSet 資源管理
37
4.19
多重スレッドの考慮点
37
4.20
利用者定義データ型
38
4.21
一括更新
38
4.21.1
一括可能な文及び一括互換性
39
4.21.2
文一括化 API
39
4.21.3
実行状態及び更新行数
40
4.21.4
プログラムの意味及び例外
40
4.21.5
一括取消し及び無効化
41
4.21.6
一括化限界の仕様
41
4.22
SQLJ 言語要素
42
4.22.1
<カーソル名>
43
4.22.2
SQL スキーマ,データ及びトランザクション文
43
4.22.3
<動的 SQL 文>
43
4.22.4
<SQL コネクション文>
43
4.22.5
<ホスト変数定義>
43
4.22.6
<埋込み例外宣言>
44
4.22.7
<SQL 診断文>
44
4.22.8
カーソル宣言
44
4.22.9
SQL 文への入力パラメタ
44
4.22.10
SQLJ 反復子からの列値の抽出
45
4.22.11
<OPEN 文> 及びカーソル
45
5.
語い要素
45
6.
スカラ式
45
7.
その他の共通要素
45
8.
埋込み SQL
45
9.
2 進可搬性
45
10.
SQLJ 文法構成要素
45
11.
<SQLJ 特有句>及び内容
45
12.
その他の機能
45
13.
パッケージ sqlj.runtime
45
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
(4)
14.
パッケージ sqlj.runtime.profile
45
15.
sqlj.runtime.profile.util.ProfileCustomizer
45
16.
動的 SQL
46
17.
呼出しレベルインタフェース規定
46
18.
定義スキーマ
46
19.
状態コード
46
20.
適合性
46
附属書 A(参考) SQL 適合性の要約
46
附属書 B(参考) 処理系定義要素
46
附属書 C(参考) 処理系依存要素
46
附属書 D(参考) 削除予定機能
46
附属書 E(参考) 代表的なヘッダファイル
46
附属書 F(参考) SQL の機能の分類
46
附属書 G(参考) SQLJ 入門
46
附属書 1(参考) ISO/IEC 9075-10:2000,Information technology ―Database languages ―SQL ― Part 10:
Object Language Bindings(SQL/OLB)
47
日本工業規格
JIS
X
3005-10
:2003
(ISO/IEC 9075-10
:2000
)
データベース言語 SQL 第 10 部:オブジェクト言語結
合(SQL/OLB)
Information technology
Database languages
SQL
Part 10: Object
Language Bindings(SQL/OLB)
序文 この規格は,2000 に第 1 版として発行された ISO/IEC 9075-10:2000,Information technology -
Database languages - SQL - Part 10: Object Language Bindings(SQL/OLB)を要約し,技術的内容を変更する
ことなく作成した日本工業規格である。1.∼4.については,原国際規格の同項目を全文翻訳し,5.以降につ
いては,それぞれ原国際規格の同項目の内容を引用するものとした。
1.
適用範囲
この規格は,Java
TM
プログラミング言語(Java は,サン・マイクロシステムズ社の登録商標である)で記
述されたプログラム内に SQL 文を埋め込むことを支援するためのデータベース言語 SQL の拡張を定義す
る。Java 内に SQL を埋め込むことは,
“SQLJ”として広く知られている。この規格は,SQLJ の構文及び
意味だけではなく,その結果得られる SQLJ 適用業務プログラムの2進可搬性(binary portability)を保証する
ための機構を規定する。さらに,多くの Java パッケージ及びそれらに含まれるクラス(メソッドを含む)
も,規定する。
この規格では,用語“SQLJ”及び“SQL/OLB”は,同義語的に用いる。
備考 この規格の対応国際規格を,次に示す。
なお,対応の程度を表す記号は,ISO/IEC Guide21 に基づき,IDT(一致している)
,MOD(修
正している)
,NEQ(同等でない)とする。
ISO/IEC 9075-10:2000
,Information technology - Database languages - SQL - Part 10: Object
Language Bindings(SQL/OLB) (IDT)
参考 1 この規格の枠組は,データ管理参照モデル(the Reference Model of Data Management)(ISO/IEC
10032:1995)
によって記述されている。
2.
引用規格
次に掲げる規格は,この規格に引用されることによって,この規格の規定の一部を構成する。これらの
引用規格のうちで,発効年(又は発行年)を付記してあるものは,記載の年の版だけがこの規格の規定を
構成するものであって,その後の改正版・追補には適用しない。発効年(又は発行年)を付記していない
引用規格は,その最新版(追補を含む。
)を適用する。
2.1
標準規格
[SQL]
JIS X 3005-1:2002
データベース言語 SQL 第 1 部: 枠組(SQL/Framework)
2
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
備考 ISO/IEC 9075-1:1999 Information technology ― Database languages ― SQL ― Part
1:Framework(SQL/Framework) が,この規格と一致している。
JIS X 3005-2:2002
データベース言語 SQL 第 2 部: 基本機能(SQL/Foundation)
備考 ISO/IEC 9075-2:1999 Information technology ― Database languages ― SQL ― Part
2:Foundation(SQL/Foundation) が,この規格と一致している。
JIS X 3005-3:2002
データベース言語 SQL 第 3 部: 呼出しレベルインタフェース(SQL/CLI)
備考 ISO/IEC 9075-3:1999 Information technology ― Database languages ― SQL ― Part
3:Call-Level Interface(SQL/CLI) が,この規格と一致している。
JIS X 3005-4:2002
データベース言語 SQL 第 4 部: 永続格納モジュール(SQL/PSM)
備考 ISO/IEC 9075-4:1999 Information technology ― Database languages ― SQL ― Part
4:Persistent Stored Modules(SQL/PSM) が,この規格と一致している。
ISO/IEC 9075-5:1999
nformation technology ― Database languages ― SQL ― Part 5:Host Language
Bindings(SQL/Bindings)
[SQL]という参照は,JIS X 3005-1,JIS X 3005-2,JIS X 3005-3,JIS X 3005-4 及び ISO/IEC 9075-5 を参
照する。
ISO/IEC 10032:1995
Information technology ― Reference Model of Data Management
[UCS]
JIS X 0221:1995
国際符号化文字集合(UCS)−第1部 体系及び基本多言語面
備考 ISO/IEC 10646-1:1993 Information technology — Universal Multi-Octet Coded Character
Set(UCS) — Part 1: Architecture and Basic Multilingual Plane が,この規格と一致している。
2.2
公的に利用可能な規定
[UNICODE]
The Unicode Consortium, The Unicode Standard, Version 2.0, 1996. ISBN 0-201-48345-9
[Java]
The Java Language Specification, James Gosling, Bill Joy, and Guy Steele, Addison-Wesley, 1996, ISBN
0-201-63451-1
Changes for Java 1.1, http://java.sun.com/docs/books/jls/first_edition/html/1.1Update.html
Clarifications and Amendments, http://java.sun.com/docs/books/jls/clarify.html
[Java]という参照は,Changes for Java 1.1 によって修正され,更に Clarifications and Amendments によ
って修正された The Java Language Specification (Java 言語仕様)を参照する。
JDBC: A Java SQL API, Version 1.20, Graham Hamilton & Rick Cattell, JavaSoft, 10 January 1997
[JDBC2.0]
JDBC™ 2.0 API, Version 1.0, Seth White & Mark Hapner, Sun Microsystems, Inc., 30 May, 1999
JDBC 2.0 Standard Extension API, Version 1.0, Seth White & Mark Hapner, Sun Microsystems, Inc., 7
December, 1998
[JDBC2.0]という参照は,JDBC 2.0 Standard Extension API, Version 1.0 によって修正された JDBC™ 2.0
API, Version 1.0
を参照する。
RFC 1738, Uniform Resource Locators(URL), T. Berners-Lee, L. Maxinter, M. McCahill, December, 1994
RFC 1808, Relative Uniform Resource Locators, R. Fielding, June, 1995
RFC 2368, The mailto URL scheme, P. Hoffman, L. Masinter, J. Zawinski, July, 1998
3
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
[JDBCtutorial]
JDBC API Tutorial and Reference, Second Edition: Universal Data Access for the Java 2 Platform,
Seth White, Maydene Fisher, Rick Cattell, Graham Hamilton, Mark Hapner, Addison Wesley, Reading,
Massachusetts, 1999, ISBN: 0-201-43328-1
3.
定義,表記法及び規約
3.1
定義
3.1.1
第 10 部で規定する定義
この規格では,JIS X 3005-1 及び JIS X 3005-2 中の定義,並びに次の定義を適用する。
a)
列取出しメソッド(accessor method) それが呼び出されたとき,結果集合反復子オブジェクトによっ
て戻される列データをアクセスするメソッド。
列取出しメソッド
は,
名前付き列取出しメソッド
(named accessor method)
又は
位置付け列取出しメソッド
(positioned accessor method)
のいずれかとす
る。名前付き列取出しメソッドは,<名前付き反復子>の<反復子指定宣言>を含む<反復子宣言句>の結
果として宣言される。名前付き列取出しメソッドは,それを定義している<名前付き反復子>句からそ
の名前とその結果データ型との両方を導出する。位置付け列取出しメソッドは,<位置付け反復子>の
<反復子指定宣言>を含む<反復子宣言句>の結果として宣言される。位置付け列取出しメソッドは,そ
れを定義している<位置付け反復子>句からその名前とその結果データ型との両方を導出する。
b)
仕立て処理(customization) SQLJ 適用業務プログラムの埋込み SQL を相手の SQL 処理系に対して実
行させるために仕立てる処理系固有の処理。
c)
生成コネクションクラス(generated connection class) そのクラスのメソッドが呼び出されたとき,名
前付きデータベースコネクションを維持するクラス。このクラスの署名は,Java 適用業務プログラム
中の<コネクション宣言句>に直接含まれる副作用として生成される。
d)
生成反復子クラス(generated iterator class) そのクラスのメソッドが呼び出されたとき,結果集合反
復子に関連付けられる SQL 問合せの行及び列の取出しを提供するクラス。
生成反復子クラス
(generated iterator class)
は,
生成名前付き反復子クラス
(generated named iterator class)
又は
生成位置
付け反復子クラス
(generated positioned iterator class)
のいずれかとする。生成名前付き反復子クラス
の署名は,<名前付き反復子>の<反復子指定宣言>を含む<反復子宣言句>に含まれる副作用として生成
され,名前付き列取出しメソッドを指定する。生成位置付け反復子クラスの署名は,<位置付け反復
子>の<反復子指定宣言>を含む<反復子宣言句>に含まれる副作用として生成され,位置付け列取出し
メソッドを指定する。
e)
取得メソッド(getter method) RTStatement クラス若しくは RTResultSet クラス,又はそのようなクラ
スのサブクラスのオブジェクトに定義されるメソッドで,呼び出されたときに,ホスト変数が束縛変
数として現れると,与えられたデータ型のそれらのホスト変数に値を設定するメソッド。
f)
処理系固有(implementation-specific) SQL 処理系間でおそらく異なるが,各特定の SQL 処理系の一部
として与えられる。
g) (SQLJ
適用業務プログラムの)組込み[installation (of SQLJ application)] 相手の SQL 処理系に対して
SQLJ 適用業務プログラムを実行することを可能にするために先立って行う必要がある,SQLJ
翻訳
(SQLJ translation)
及び
仕立て処理
(customization)
以外の何かを含む処理系定義のフェーズで,空か
もしれないフェーズ。
h) Java
基本データ型(Java primitive datatype) 次の Java 型のうちの一つ。boolean,byte,short,int,long,
4
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
float 又は double。
参考 2 JDBC との相互互換性のために,Java 基本データ型の char は,意図的にこのリストから省か
れている。
i)
左辺値式(l-valued expression) Java 言語仕様(The Java Language Specification)で定義されているとおり,
Java
代入
(assignment)
の
左辺側
(LeftHandSide)
に現れることが許される Java 式。例えば,左辺値式
は,局所変数又は現行オブジェクト若しくはクラスのフィールドのような名前付き変数であってもよ
いし,フィールドアクセス又は配列アクセスからの結果となり得る計算された変数であってもよい。
j)
プロファイル(profile) 個々の SQL 文によって要求される入力及び生成される出力に関する情報だけ
でなくそれらの文のテキストを含むオブジェクトで,SQLJ 翻訳プログラムによって生成された Java
直列化オブジェクト。直列化オブジェクトは,その後,その他の処理のために仕立て処理又は SQLJ
実行系によってアクセスされ得る。
k)
プロファイルファイル(profile file) SQLJ 翻訳の結果として生成された一つ以上のプロファイルを含
むファイル。
l)
設定メソッド(setter method) RTStatement クラス又は RTStatement のサブクラスのオブジェクトに定
義されるメソッドで,呼び出されたときに,与えられたデータ型の束縛変数をそのデータベースへの
入力パラメタとして引き渡すメソッド。
m) SQLJ
翻訳(SQLJ translation) 埋込み SQL を含む Java 適用業務プログラムを二つ以上の異なるファイ
ルに変換する処理で,
最初のファイルは,
埋込み SQL の利用部分が SQLJ の実行時 API を呼び出す Java
コードで置き換えられることを除いて,元の Java 適用業務プログラムと同一になり,2番目(及びそ
れ以降)のファイルは,プロファイルファイルになる。
3.2
表記法
【この段落を挿入する】JIS X 3005-10 で用いる表記法は,拡張を行った BNF("バッカス正規形")とする。
この拡張を行った BNF は,JIS X 3005-1 の“7.1 表記法”中に完全に記述している。
3.3
規約
【この段落を挿入する】JIS X 3005-10 で用いる規約は,JIS X 3005-1 及び JIS X 3005-2 中で定義されて
いる。
【この段落を挿入する】さらに,JIS X 3005-10 中で用語が最初に導入されるとき,太字を用いる。
3.3.1
用語の使用
3.3.1.1
その他の用語
【この段落を挿入する】JIS X 3005-10 では,
“オブジェクト(object)”という用語は,
“Java
型
(java type)
のオブジェクト”という形式の句で用いるが,ここで,Java
型
は,Java クラス又は Java インタフェース
とする。Java
型
が Java クラスの名前ならば,この句は,クラス Java
型
の構成子の呼出しによって作成
されたことを意味するクラス Java
型
のインスタンス,又はクラス Java
型
のサブクラスのうちの一つサ
ブクラスのインスタンスのいずれかの Java オブジェクトを指すことを意味する。
Java
型
が Java インタフェースの名前ならば,この句は,次のうちの一つのオブジェクトを指す。
―
インタフェース
Java
型
を実装するクラスのインスタンス
―
インタフェース
Java
型
を拡張するインタフェース実装するクラスのインスタンス
―
そのようなクラスのサブクラス
のインスタンス
次の意味も,JIS X 3005-10 中で保持される。
―
コネクション文脈オブジェクト
(connection context object)
は,<コネクション宣言句>の処理の結
5
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
果として SQLJ 翻訳によって生成されるクラスのインスタンスとする。生成されるクラスは,イ
ンタフェース sqlj.runtime.ConnectionContext
を実装する。
―
実行文脈オブジェクト
(execution context object)
は,クラス sqlj.runtime.ExecutionContext
のイン
スタンスとする。
―
名前付き反復子
(named iterator)
は,<名前付き反復子>を含む<反復子宣言句>の処理の結果とし
て SQLJ 翻訳によって生成されるクラスのインスタンスとする。生成されるクラスは,
インタフ
ェース sqlj.runtime.NamedIterator を実装する。
―
位置付け反復子
(positioned iterator)
は,<位置付け反復子>を含む<反復子宣言句>の処理の結果と
して SQLJ 翻訳によって生成されるクラスのインスタンスとする。生成されるクラスは,
インタ
フェース sqlj.runtime.PositionedIterator を実装する。
―
反復子
(iterator)
は,名前付き反復子又は位置付け反復子のいずれかとする。
3.3.2
JIS X 3005(ISO/IEC 9075)
の他の部との関係
3.3.2.1
箇条及び表の関係
表 1 箇条及び表の関係
JIS X 3005-10
の箇条又は表
他の部の対応する箇条又は表
対応を含む部
“1. 適用範囲”
“1. 適用範囲”
JIS X 3005-2
“2. 引用規格”
“2. 引用規格”
JIS X 3005-2
“2.1 標準規格”
(なし) (なし)
“2.2 公式に入手可能な規定”
(なし) (なし)
“3. 定義,表記法及び規約”
“3. 定義,表記法及び規約”
JIS X 3005-2
“3.1 定義”
“3.1 定義”
JIS X 3005-2
“3.1.1 第 10 部で規定する定義”
(なし) (なし)
“3.2 表記法”
“3.2 表記法”
JIS X 3005-2
“3.3 規約”
“3.3 規約”
JIS X 3005-2
“3.3.1 用語の使用”
“3.3.1 用語の使用”
JIS X 3005-2
“3.3.1.1 その他の用語”
“6.2.3.7 その他の用語”
JIS X 3005-1
“3.3.2 JIS X 3005(ISO/IEC 9075)の他の部との関
係”
(なし) (なし)
“3.3.2.1 箇条及び表の関係”
(なし) (なし)
“3.4 データベース言語 SQL のオブジェクト識別
子”
“6.3 データベース言語 SQL のオブジェク
ト識別子”
JIS X 3005-1
“4. 概念”
“4. 概念”
JIS X 3005-2
“4.1 はじめに”
(なし) (なし)
“4.2 埋込み構文”
“4.8 埋込み構文”
ISO/IEC 9075-5
“4.3 SQL 構成要素”
(なし) (なし)
“4.4 文字列”
“4.2 文字列”
JIS X 3005-2
“4.4.1 UNICODE 支援”
(なし) (なし)
“4.4.2 名前付き文字集合”
“4.2.4 名前付き文字集合”
JIS X 3005-2
“4.5 ホスト変数”
(なし) (なし)
“4.6 ホスト式”
(なし) (なし)
“4.7 SQLJ 句”
(なし) (なし)
“4.8 データベースコネクション文脈”
(なし) (なし)
“4.9 既定コネクション文脈”
(なし) (なし)
“4.10 例示スキーマを用いたスキーマ検査”
(なし) (なし)
“4.11 複数の SQLJ 文脈及びコネクションの利用” (なし) (なし)
6
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
表 1 箇条及び表の関係(続き)
JIS X 3005-10
の箇条又は表
他の部の対応する箇条又は表
対応を含む部
“4.12 動的 SQL 及び JDBC/SQLJ コネクション
Connection の相互運用性”
(なし) (なし)
“4.12.1 JDBC コネクションからの SQLJ コネクシ
ョン文脈 ConnectionContext の作成”
(なし) (なし)
“4.12.2 SQLJ コネクション文脈 ConnectionContext
からの JDBC コネクションの取得”
(なし) (なし)
“4.12.3 コネクション共有”
(なし) (なし)
“4.12.4 コネクション資源管理”
(なし) (なし)
“4.13 SQL 実行制御及び状態”
(なし) (なし)
“4.14 反復子”
(なし) (なし)
“4.15 入力及び出力の代入可能性”
(なし) (なし)
“4.16 格納手続及び格納関数の呼出し”
(なし) (なし)
“4.17 格納手続呼出しからの複数の JDBC 結果集
合 ResultSet オブジェクト”
(なし) (なし)
“4.17.1 複数の結果に関する資源管理”
(なし) (なし)
“4.18 JDBC/SQLJ 結果集合 ResultSet の相互運用
性”
(なし) (なし)
“4.18.1 JDBC 結果集合 ResultSet オブジェクトから
の SQLJ 反復子の作成”
(なし) (なし)
“4.18.2 SQLJ 反復子オブジェクトからの JDBC 結
果集合 ResultSet オブジェクトの取得”
(なし) (なし)
“4.18.3 型付けされていない反復子オブジェクト
からの JDBC 結果集合 ResultSet オブジェクトの取
得”
(なし) (なし)
“4.18.4 反復子及び JDBC 結果集合 ResultSet の資
源管理”
(なし) (なし)
“4.19 多重スレッドの考慮点”
(なし) (なし)
“4.20 利用者定義データ型”
(なし) (なし)
“4.21 一括更新”
(なし) (なし)
“4.21.1 一括可能な文及び一括互換性”
(なし) (なし)
“4.21.2 文一括化 API”
(なし) (なし)
“4.21.3 実行状態及び更新行数”
(なし) (なし)
“4.21.4 プログラム意味及び例外”
(なし) (なし)
“4.21.5 一括取消し及び無効化”
(なし) (なし)
“4.21.6 一括化限界の仕様”
(なし) (なし)
“4.22 SQLJ 言語要素”
(なし) (なし)
“4.22.1 <カーソル名>”
(なし) (なし)
“4.22.2 SQL スキーマ,データ及びトランザクショ
ン文”
(なし) (なし)
“4.22.3 <SQL 動的文>”
(なし) (なし)
“4.22.4 <SQL コネクション文>”
(なし) (なし)
“4.22.5 <ホスト変数定義>”
(なし) (なし)
“4.22.6 <埋込み例外宣言>”
(なし) (なし)
“4.22.7 <SQL 診断文>”
(なし) (なし)
“4.22.8 カーソル宣言”
(なし) (なし)
“4.22.9 SQL 文への入力パラメタ”
(なし) (なし)
“4.22.10 SQLJ 反復子からの列値の抽出”
(なし) (なし)
“4.22.11 <OPEN 文>及びカーソル”
(なし) (なし)
7
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
表 1 箇条及び表の関係(続き)
JIS X 3005-10
の箇条又は表
他の部の対応する箇条又は表
対応を含む部
“5. 語い要素”
“5. 語い要素”
JIS X 3005-2
“5.1 <SQL 終端文字>”
“5.1 <SQL 終端文字>”
JIS X 3005-2
“6. スカラ式”
“6. スカラ式”
JIS X 3005-2
“6.1 <値指定>及び<相手指定>”
“6.3 <値指定>及び<相手指定>”
JIS X 3005-2
“7. その他の共通要素”
“8. その他の共通要素”
ISO/IEC 9075-5
“7.1 <ルーチン呼出し>”
“8.1 <ルーチン呼出し>”
ISO/IEC 9075-5
“8. 埋込み SQL”
“16. 埋込み SQL”
ISO/IEC 9075-5
“8.1 <SQL 埋込みホストプログラム>”
“16.1 <SQL 埋込みホストプログラム>”
ISO/IEC 9075-5
“8.2 <SQL 埋込み Java プログラム>”
(なし) (なし)
“9. 2 進可搬性”
(なし) (なし)
“9.1 2 進可搬適用業務プログラムの構成要素”
(なし) (なし)
“9.2 実行時構成要素の名前付け”
(なし) (なし)
“9.3 2 進可搬性の要件”
(なし) (なし)
“9.4 プロファイルの概要”
(なし) (なし)
“9.5 プロファイルの生成及び名前付け”
(なし) (なし)
“9.5.1 例”
(なし) (なし)
“9.6 SQLJ 適用業務プログラムのパッケージ化”
(なし) (なし)
“9.6.1 例”
(なし) (なし)
“9.7 プロファイル仕立て処理の概要”
(なし) (なし)
“9.7.1 プロファイル仕立て処理の処理過程”
(なし) (なし)
“9.7.2 プロファイル仕立て処理ユティリティ”
(なし) (なし)
“9.7.3 プロファイル仕立て処理のインタフェー
ス”
(なし) (なし)
“9.8 仕立て処理のインタフェース”
(なし) (なし)
“9.8.1 仕立て処理の利用法”
(なし) (なし)
“9.8.2 仕立て処理の登録”
(なし) (なし)
“9.9 項目情報 EntyInfo の概要”
(なし) (なし)
“9.10 型情報 TypeInfo の概要”
(なし) (なし)
“9.11 SQLJ データ型特性”
(なし) (なし)
“10. SQLJ 文法構成要素”
(なし) (なし)
“10.1 文法表記法”
(なし) (なし)
“10.2 キーワード及び SQL<トークン>の大文字
小文字区別規則”
(なし) (なし)
“10.3 注釈規則”
(なし) (なし)
“10.4 SQLJ 予約名”
(なし) (なし)
“10.4.1 一時変数名”
(なし) (なし)
“10.4.2 クラス及び資源ファイル名”
(なし) (なし)
“10.4.2.1 内部クラス”
(なし) (なし)
“10.4.2.2 資源ファイル及びプロファイル”
(なし) (なし)
“10.5 句構造”
(なし) (なし)
“10.6 共通副要素”
(なし) (なし)
“10.6.1 <修正子>”
(なし) (なし)
“10.6.2 <Java クラス名>”
(なし) (なし)
“10.6.3 <Java 識別子>”
(なし) (なし)
“10.6.4 <Java データ型>”
(なし) (なし)
“10.6.5 <Java 定数式>”
(なし) (なし)
“10.6.6 <埋込み Java 式>”
(なし) (なし)
8
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
表 1 箇条及び表の関係(続き)
JIS X 3005-10
の箇条又は表
他の部の対応する箇条又は表
対応を含む部
“10.6.7 <implements 句>”
(なし) (なし)
“10.6.8 <宣言 with 句>”
(なし) (なし)
“11. <SQLJ 特有句>及び内容”
(なし) (なし)
“11.1 <SQLJ 特有句>”
(なし) (なし)
“11.2 <コネクション宣言句>”
(なし) (なし)
“11.3 生成コネクションクラス”
(なし) (なし)
“11.4 <反復子宣言句>”
(なし) (なし)
“11.5 <位置付け反復子>”
(なし) (なし)
“11.6 生成位置付け反復子クラス”
(なし) (なし)
“11.7 <名前付き反復子>”
(なし) (なし)
“11.8 生成名前付き反復子クラス”
(なし) (なし)
“11.9 <実行可能句>”
(なし) (なし)
“11.10 <文脈句>”
(なし) (なし)
“11.11 <文句>”
(なし) (なし)
“11.12 <DELETE 文:位置付け>”
“14.6 <DELETE 文:位置付け>”
JIS X 3005-2
“11.13 <UPDATE 文:位置付け>”
“14.9 <UPDATE 文:位置付け>”
JIS X 3005-2
“11.14 <SELECT 文:単一行>”
“14.5 <SELECT 文:単一行>”
JIS X 3005-2
“11.15 <FETCH 文>”
“14.3 <FETCH 文>”
JIS X 3005-2
“11.16 <代入文>”
“13.5 <代入文>”
JIS X 3005-4
“11.17 <COMMIT 文>”
“16.6 <COMMIT 文>”
JIS X 3005-2
“11.18 <ROLLBACK 文>”
“16.7 <ROLLBACK 文>”
JIS X 3005-2
“11.19 <SET TRANSACTION 文>”
“16.2 <SET TRANSACTION 文>”
JIS X 3005-2
“11.20 <CALL 文>”
“15.1 <CALL 文>”
JIS X 3005-2
“11.21 <代入句>”
(なし) (なし)
“11.22 <問合せ句>”
(なし) (なし)
“11.23 <関数句>”
(なし) (なし)
“11.24 <反復子変換句>”
(なし) (なし)
“12. その他の機能”
(なし) (なし)
“12.1 SQL ブロック”
(なし) (なし)
“12.2 sqlj.runtime.ExecutionContext”
(なし) (なし)
“13. パッケージ sqlj.runtime”
(なし) (なし)
“13.1 SQLJ 実行時インタフェース”
(なし) (なし)
“13.1.1 sqlj.runtime.ConnectionContext”
(なし) (なし)
“13.1.1.1 変数”
(なし) (なし)
“13.1.1.1.1 CLOSE_CONNECTION”
(なし) (なし)
“13.1.1.1.2 KEEP_CONNECTION”
(なし) (なし)
“13.1.1.2 メソッド”
(なし) (なし)
“13.1.1.2.1 閉じる close( )”
(なし) (なし)
“13.1.1.2.2 閉じる close(boolean)”
(なし) (なし)
“13.1.1.2.3 被接続プロファイル取得
getConnectedProfile(Object)”
(なし) (なし)
“13.1.1.2.4 コネクション取得 getConnection( )”
(なし) (なし)
“13.1.1.2.5 実行文脈取得 getExecutionContext( )”
(なし) (なし)
“13.1.1.2.6 閉じているか isClosed( )”
(なし) (なし)
“13.1.2 sql.runtime.ForUpdate”
(なし) (なし)
“13.1.2.1 メソッド”
(なし) (なし)
“13.1.2.1.1 カーソル名取得 getCursorName( )”
(なし) (なし)
9
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
表 1 箇条及び表の関係(続き)
JIS X 3005-10
の箇条又は表
他の部の対応する箇条又は表
対応を含む部
“13.1.3 sqlj.runtime.NamedIterator”
(なし) (なし)
“13.1.4 sqlj.runtime. PositionedIterator”
(なし) (なし)
“13.1.4.1 メソッド”
(なし) (なし)
“13.1.4.1.1 取出し終了 EndFetch( )”
(なし) (なし)
“13.1.5 sqlj.runtime.ResultSetIterator”
(なし) (なし)
“13.1.5.1 変数”
(なし) (なし)
“13.1.5.1.1 ASENSITIVE”
(なし) (なし)
“13.1.5.1.2 FETCH_FORWARD”
(なし) (なし)
“13.1.5.1.3 FETCH_REVERSE”
(なし) (なし)
“13.1.5.1.4 FETCH_UNKNOWN”
(なし) (なし)
“13.1.5.1.5 INSENSITIVE”
(なし) (なし)
“13.1.5.1.6 SENSITIVE”
(なし) (なし)
“13.1.5.2 メソッド”
(なし) (なし)
“13.1.5.2.1 警告クリア clearWarings( )”
(なし) (なし)
“13.1.5.2.2 閉じる close( )”
(なし) (なし)
“13.1.5.2.3 取出しサイズ取得 getFetchSize( )”
(なし) (なし)
“13.1.5.2.4 結果集合取得 getResultSet( )”
(なし) (なし)
“13.1.5.2.5 行取得 getRow( )”
(なし) (なし)
“13.1.5.2.6 感度取得 getSensitivity( )”
(なし) (なし)
“13.1.5.2.7 警告取得 getWarnings( )”
(なし) (なし)
“13.1.5.2.8 閉じているか isClosed( )”
(なし) (なし)
“13.1.5.2.9 次 next( )”
(なし) (なし)
“13.1.5.2.10 取出しサイズ設定 setFetchSize(int)”
(なし) (なし)
“13.1.6 sqlj.runtime.Scrollable”
(なし) (なし)
“13.1.6.1 変数”
(なし) (なし)
“13.1.6.2 メソッド”
(なし) (なし)
“13.1.6.2.1 絶対 absolute(int)”
(なし) (なし)
“13.1.6.2.2 最後の後 afterLast(int)”
(なし) (なし)
“13.1.6.2.3 最初の前 beforeFirst( )”
(なし) (なし)
“13.1.6.2.4 最初 first(int)”
(なし) (なし)
“13.1.6.2.5 取出し方向取得 getFetchDirection(int)”
(なし) (なし)
“13.1.6.2.6 最後の後か isAfterLast( )”
(なし) (なし)
“13.1.6.2.7 最初の前か isBeforeFirst(int)”
(なし) (なし)
“13.1.6.2.8 最初か isFirst(int)”
(なし) (なし)
“13.1.6.2.9 最後か isLast( )”
(なし) (なし)
“13.1.6.2.10 最後 last( )”
(なし) (なし)
“13.1.6.2.11 前 previous( )”
(なし) (なし)
“13.1.6.2.12 相対 relative(int)”
(なし) (なし)
“13.1.6.2.13 取出し方向設定
setFetchDirection(int)”
(なし) (なし)
“13.2 SQLJ 実行時クラス”
(なし) (なし)
“13.2.1 sqlj.runtime.AsciiStream”
(なし) (なし)
“13.2.1.1 構成子”
(なし) (なし)
“13.2.1.1.1 ASCII ストリーム
AsciiStream(InputStream)”
(なし) (なし)
“13.2.1.1.2 ASCII ストリーム
AsciiStream(InputStream, int)”
(なし) (なし)
10
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
表 1 箇条及び表の関係(続き)
JIS X 3005-10
の箇条又は表
他の部の対応する箇条又は表
対応を含む部
“13.2.2 sqlj.runtime.BinaryStream”
(なし) (なし)
“13.2.2.1 構成子”
(なし) (なし)
“13.2.2.1.1 2 進ストリーム
BinaryStream(InputStream)”
(なし) (なし)
“13.2.2.1.2 2 進ストリーム BinaryStream(InputStream,
int)”
(なし) (なし)
“13.2.3 sqlj.runtime.DefaultRuntime”
(なし) (なし)
“13.2.3.1 構成子”
(なし) (なし)
“13.2.3.1.1 既定実行時 DefaultRuntime( )”
(なし) (なし)
“13.2.3.2 メソッド”
(なし) (なし)
“13.2.3.2.1 既定コネクション取得
getDefaultConection( )”
(なし) (なし)
“13.2.3.2.2 クラスローダ取得
getLoaderForClass(Class)”
(なし) (なし)
“13.2.4 sqlj.runtime.ExecutionContext”
(なし) (なし)
“13.2.4.1 変数”
(なし) (なし)
“13.2.4.1.1 ADD_BATCH_COUNT”
(なし) (なし)
“13.2.4.1.2 AUTO_BATCH”
(なし) (なし)
“13.2.4.1.3 EXEC_BATCH_COUNT”
(なし) (なし)
“13.2.4.1.4 EXEPTION_COUNT”
(なし) (なし)
“13.2.4.1.5 NEW_BATCH_COUNT”
(なし) (なし)
“13.2.4.1.6 QUERY_COUNT”
(なし) (なし)
“13.2.4.1.7 UNLIMTED_BATCH”
(なし) (なし)
“13.2.4.2 構成子”
(なし) (なし)
“13.2.4.2.1 実行文脈 ExecutionContext( )”
(なし) (なし)
“13.2.4.3 メソッド”
(なし) (なし)
“13.2.4.3.1 取消し cancel( )”
(なし) (なし)
“13.2.4.3.2 実行 execute( )”
(なし) (なし)
“13.2.4.3.3 一括実行 executeBatch( )”
(なし) (なし)
“13.2.4.3.4 問合せ実行 executeQuery( )”
(なし) (なし)
“13.2.4.3.5 更新実行 executeUpdate( )”
(なし) (なし)
“13.2.4.3.6 一括化限界取得 getBatchLimit( )”
(なし) (なし)
“13.2.4.3.7 一括更新行数取得
getBatchUpdateCounts( )”
(なし) (なし)
“13.2.4.3.8 取出し方向取得 getFetchDirection( )”
(なし) (なし)
“13.2.4.3.9 取出しサイズ取得 getFetchSize( )”
(なし) (なし)
“13.2.4.3.10 最大フィールドサイズ取得
getMaxFieldSize( )”
(なし) (なし)
“13.2.4.3.11 最大行数取得 getMaxRows( )”
(なし) (なし)
“13.2.4.3.12 次の結果集合取得 getNextResultSet( )”
(なし) (なし)
“13.2.4.3.13 問合せ制限時間取得
getQueryTimeout( )”
(なし) (なし)
“13.2.4.3.14 更新行数取得 getUpdateCount( )”
(なし) (なし)
“13.2.4.3.15 警告取得 getWarnings( )”
(なし) (なし)
“13.2.4.3.16 一括か isBatching( )”
(なし) (なし)
“13.2.4.3.17 文登録
registerStatement(ConnectionCOntext, Object, int)”
(なし) (なし)
“13.2.4.3.18 文解放 releaseStatement( )”
(なし) (なし)
11
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
表 1 箇条及び表の関係(続き)
JIS X 3005-10
の箇条又は表
他の部の対応する箇条又は表
対応を含む部
“13.2.4.3.19 一括化設定 setBatching(boolean)”
(なし) (なし)
“13.2.4.3.20 一括化限界設定 setBatchLimit(int)”
(なし) (なし)
“13.2.4.3.21 取出し方向設定 setFetchDirection(int)”
(なし) (なし)
“13.2.4.3.22 取出しサイズ設定 setFetchSize(int)”
(なし) (なし)
“13.2.4.3.23 最大フィールドサイズ設定
setMaxFieldSize(int)”
(なし) (なし)
“13.2.4.3.24 最大行数設定 setMaxRows(int)”
(なし) (なし)
“13.2.4.3.25 問合せ制限時間設定 setQueryTimeout
(int)”
(なし) (なし)
“13.2.5 sqlj.runtime.RuntimeContext”
(なし) (なし)
“13.2.5.1 変数”
(なし) (なし)
“13.2.5.1.1 DEFAULT_DATA_SOURCE”
(なし) (なし)
“13.2.5.1.2 DEFAULT_RUNTIME”
(なし) (なし)
“13.2.5.1.3 PROPERTY_KEY”
(なし) (なし)
“13.2.5.2 構成子”
(なし) (なし)
“13.2.5.2.1 実行時文脈 RuntimeContext( )”
(なし) (なし)
“13.2.5.3 メソッド”
(なし) (なし)
“13.2.5.3.1 既定コネクション取得
getDefaultConnection( )”
(なし) (なし)
“13.2.5.3.2 クラスローダ取得
getLoaderForClass(Class)”
(なし) (なし)
“13.2.5.3.3 実行時取得 getRuntime( )”
(なし) (なし)
“13.2.6 sqlj.runtime.StreamWrapper”
(なし) (なし)
“13.2.6.1 構成子”
(なし) (なし)
“13.2.6.1.1 ストリームおおい
StreamWrapper(InputStream)”
(なし) (なし)
“13.2.6.1.2 ストリームおおい
StreamWrapper(InputStream, int)”
(なし) (なし)
“13.2.6.2 メソッド”
(なし) (なし)
“13.2.6.2.1 入力ストリーム取得
getInputStream( )”
(なし) (なし)
“13.2.6.2.2 長さ取得 getLength( )”
(なし) (なし)
“13.2.6.2.3 長さ設定 setLength(int)”
(なし) (なし)
“13.2.7 sqlj.runtime.UnicodeStream”
(なし) (なし)
“13.2.7.1 構成子”
(なし) (なし)
“13.2.7.1.1 UNICODE ストリーム
UnicodeStream(InputStream)”
(なし) (なし)
“13.2.7.1.2 UNICODE ストリーム
UnicodeStream(InputStream, int)”
(なし) (なし)
“13.2.8 sqlj.runtime.CharacterStream”
(なし) (なし)
“13.2.8.1 構成子”
(なし) (なし)
“13.2.8.1.1 文字ストリーム CharacterStream(Reader)” (なし) (なし)
“13.2.8.1.2 文字ストリーム CharacterStream(Reader,
int)”
(なし) (なし)
“13.2.8.2 メソッド”
(なし) (なし)
“13.2.8.2.1 読み取得 getReader( )”
(なし) (なし)
“13.2.8.2.2 長さ取得 getLength( )”
(なし) (なし)
“13.2.8.2.3 長さ設定 setLength(int)”
(なし) (なし)
12
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
表 1 箇条及び表の関係(続き)
JIS X 3005-10
の箇条又は表
他の部の対応する箇条又は表
対応を含む部
“13.2.9 sqlj.runtime.SQLNullException”
(なし) (なし)
“13.2.9.1 構成子”
(なし) (なし)
“13.2.9.1.1 SQL ナル例外 SQLNullException( )”
(なし) (なし)
“14. パッケージ sqlj.runtime.profile”
(なし) (なし)
“14.1 SQLJ sqlj.runtime. profile インタフェース”
(なし) (なし)
“14.1.1 sqlj.runtime.profile.BatchContext”
(なし) (なし)
“14.1.1.1 メソッド”
(なし) (なし)
“14.1.1.1.1 一括処理クリア clearBatch( )”
(なし) (なし)
“14.1.1.1.2 一括実行 executeBatch( )”
(なし) (なし)
“14.1.1.1.3 一括化限界設定 setBatchLimit(int)”
(なし) (なし)
“14.1.2 sqlj.runtime.profile.ConnectedProfile”
(なし) (なし)
“14.1.2.1 メソッド”
(なし) (なし)
“14.1.2.1.1 閉じる close( )”
(なし) (なし)
“14.1.2.1.2 コネクション取得 getConnection( )”
(なし) (なし)
“14.1.2.1.3 プロファイルデータ取得
getProfileData( )”
(なし) (なし)
“14.1.2.1.4 文取得 getStatement(int, Map)”
(なし) (なし)
“14.1.2.1.5 文取得 getStatement(int, BatchContext,
Map)”
(なし) (なし)
“14.1.3 sqlj.runtime.profile.Customization”
(なし) (なし)
“14.1.3.1 メソッド”
(なし) (なし)
“14.1.3.1.1 コネクション受付け
acceptsConnection(Connection)”
(なし) (なし)
“14.1.3.1.2 プロファイル取得 getProfile(Connection,
Profile)”
(なし) (なし)
“14.1.4 sqlj.runtime.profile.Loader”
(なし) (なし)
“14.1.4.1 メソッド”
(なし) (なし)
“14.1.4.1.1 ストリーム資源取得
getResourceAsStream(String)”
(なし) (なし)
“14.1.4.1.2 クラスロード loadClass(String)”
(なし) (なし)
“14.1.5 sqlj.runtime.profile.RTResultSet”
(なし) (なし)
“14.1.5.1 メソッド”
(なし) (なし)
“14.1.5.1.1 警告クリア clearWarnings( )”
(なし) (なし)
“14.1.5.1.2 閉じる close( )”
(なし) (なし)
“14.1.5.1.3 列発見 findColumn(String)”
(なし) (なし)
“14.1.5.1.4 ASCII ストリームおおい取得
getAsciiStreamWrapper(int)”
(なし) (なし)
“14.1.5.1.5 大 10 進数取得 getBigDecimal(int)”
(なし) (なし)
“14.1.5.1.6 2 進ストリームおおい取得
getBinaryStreamWrapper(int)”
(なし) (なし)
“14.1.5.1.7 BLOB 取得 getBlob(int)”
(なし) (なし)
“14.1.5.1.8 非ナルブール取得
getBooleanNoNull(int)”
(なし) (なし)
“14.1.5.1.9 ブールおおい取得
getBooleanWrapper(int)”
(なし) (なし)
“14.1.5.1.10 非ナルバイト取得 getByteNoNull(int)”
(なし) (なし)
“14.1.5.1.11 バイト取得 getBytes(int)”
(なし) (なし)
13
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
表 1 箇条及び表の関係(続き)
JIS X 3005-10
の箇条又は表
他の部の対応する箇条又は表
対応を含む部
“14.1.5.1.12 バイトおおい取得 getByteWrapper(int)” (なし) (なし)
“14.1.5.1.13 文字ストリームおおい取得
getCharacterStreamWrapper(int)”
(なし) (なし)
“14.1.5.1.14 CLOB 取得 getClob(int)”
(なし) (なし)
“14.1.5.1.15 列数取得 getColumnCount( )”
(なし) (なし)
“14.1.5.1.16 カーソル名取得 getCursorName( )”
(なし) (なし)
“14.1.5.1.17 日付取得 getDate(int)”
(なし) (なし)
“14.1.5.1.18 非ナル倍精度浮動小数点取得
getDoubleNoNull(int)”
(なし) (なし)
“14.1.5.1.19 倍精度浮動小数点おおい取得
getDoubleWrapper(int)”
(なし) (なし)
“14.1.5.1.20 非ナル浮動小数点取得
getFloatNoNull(int)”
(なし) (なし)
“14.1.5.1.21 非ナル浮動小数点おおい取得
getFloatWrapper(int)”
(なし) (なし)
“14.1.5.1.22 非ナル整数取得 getIntNoNull(int)”
(なし) (なし)
“14.1.5.1.23 整数おおい取得 getIntWrapper(int)”
(なし) (なし)
“14.1.5.1.24 JDBC 結果集合取得
getJDBCResultSet( )”
(なし) (なし)
“14.1.5.1.25 非ナル長整数取得 getLongNoNull(int)”
(なし) (なし)
“14.1.5.1.26 長整数おおい取得 getLongWrapper(int)” (なし) (なし)
“14.1.5.1.27 オブジェクト取得 getObject(int, Class)” (なし) (なし)
“14.1.5.1.28 参照取得 getRef(int)”
(なし) (なし)
“14.1.5.1.29 非ナル短整数取得 getShortNoNull(int)”
(なし) (なし)
“14.1.5.1.30 短整数おおい取得 getShortWrapper(int)” (なし) (なし)
“14.1.5.1.31 文字列取得 getString(int)”
(なし) (なし)
“14.1.5.1.32 時刻取得 getTime(int)”
(なし) (なし)
“14.1.5.1.33 時刻印取得 getTimestamp(int)”
(なし) (なし)
“14.1.5.1.34 UNICODE ストリームおおい取得
getUnicodeStreamWrapper(int)”
(なし) (なし)
“14.1.5.1.35 警告取得 getWarnings( )”
(なし) (なし)
“14.1.5.1.36 閉じているか isClosed( )”
(なし) (なし)
“14.1.5.1.37 有効行か isValidRow( )”
(なし) (なし)
“14.1.5.1.38 次 next( )”
(なし) (なし)
“14.1.6 sqlj.runtime.profile.RTStatement”
(なし) (なし)
“14.1.6.1 メソッド”
(なし) (なし)
“14.1.6.1.1 取消し cancel( )”
(なし) (なし)
“14.1.6.1.2 警告クリア clearWarnings( )”
(なし) (なし)
“14.1.6.1.3 実行 execute( )”
(なし) (なし)
“14.1.6.1.4 完全実行 executeComplete( )”
(なし) (なし)
“14.1.6.1.5 RT 問合せ実行 executeRTQuery( )”
(なし) (なし)
“14.1.6.1.6 更新実行 executeUpdate( )”
(なし) (なし)
“14.1.6.1.7 一括文脈取得 getBatchContext( )”
(なし) (なし)
“14.1.6.1.8 大 10 進数取得 getBigDecimal(int)”
(なし) (なし)
“14.1.6.1.9 BLOB 取得 getBlob(int)”
(なし) (なし)
“14.1.6.1.10 非ナルブール取得
getBooleanNoNull(int)”
(なし) (なし)
14
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
表 1 箇条及び表の関係(続き)
JIS X 3005-10
の箇条又は表
他の部の対応する箇条又は表
対応を含む部
“14.1.6.1.11 ブールおおい取得
getBooleanWrapper(int)”
(なし) (なし)
“14.1.6.1.12 非ナルバイト取得 getByteNoNull(int)” (なし) (なし)
“14.1.6.1.13 バイト取得 getBytes(int)”
(なし) (なし)
“14.1.6.1.14 バイトおおい取得
getByteWrapper(int)”
(なし) (なし)
“14.1.6.1.15 CLOB 取得 getClob(int)”
(なし) (なし)
“14.1.6.1.16 日付取得 getDate(int)”
(なし) (なし)
“14.1.6.1.17 非ナル倍精度浮動小数点取得
getDoubleNoNull(int)”
(なし) (なし)
“14.1.6.1.18 倍精度小数点おおい取得
getDoubleWrapper(int)”
(なし) (なし)
“14.1.6.1.19 非ナル浮動小数点取得
getFloatNoNull(int)”
(なし) (なし)
“14.1.6.1.20 浮動小数点おおい取得
getFloatWrapper(int)”
(なし) (なし)
“14.1.6.1.21 非ナル整数取得 getIntNoNull(int)”
(なし) (なし)
“14.1.6.1.22 整数おおい取得 getIntWrapper(int)”
(なし) (なし)
“14.1.6.1.23 JDBC 呼出し可能文取得
getJDBCCallableStatement( )”
(なし) (なし)
“14.1.6.1.24 JDBC 被準備文取得
getJDBCPreparedStatement( )”
(なし) (なし)
“14.1.6.1.25 非ナル長整数取得 getLongNoNull(int)” (なし) (なし)
“14.1.6.1.26 長整数おおい取得
getLongWrapper(int)”
(なし) (なし)
“14.1.6.1.27 最大フィールドサイズ取得
getMaxFieldSize( )”
(なし) (なし)
“14.1.6.1.28 最大行数取得 getMaxRows( )”
(なし) (なし)
“14.1.6.1.29 より多い結果取得 getMoreResults( )”
(なし) (なし)
“14.1.6.1.30 オブジェクト取得 getObject(int,
Class)”
(なし) (なし)
“14.1.6.1.31 問合せ制限時間取得
getQueryTimeout( )”
(なし) (なし)
“14.1.6.1.32 参照取得 getRef(int)”
(なし) (なし)
“14.1.6.1.33 結果集合取得 getResultSet( )”
(なし) (なし)
“14.1.6.1.34 非ナル短整数取得 getShortNoNull(int)” (なし) (なし)
“14.1.6.1.35 短整数おおい取得
getShortWrapper(int)”
(なし) (なし)
“14.1.6.1.36 文字列取得 getString(int)”
(なし) (なし)
“14.1.6.1.37 時刻取得 getTime(int)”
(なし) (なし)
“14.1.6.1.38 時刻印取得 getTimestamp(int)”
(なし) (なし)
“14.1.6.1.39 更新行数取得 getUpdateCount( )”
(なし) (なし)
“14.1.6.1.40 警告取得 getWarnings( )”
(なし) (なし)
“14.1.6.1.41 一括可能か isBatchable( )”
(なし) (なし)
“14.1.6.1.42 一括互換か isBatchCompatible( )”
(なし) (なし)
“14.1.6.1.43 ASCII ストリームおおい設定
setAsciiStreamWrapper(int, AsciiStream)”
(なし) (なし)
15
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
表 1 箇条及び表の関係(続き)
JIS X 3005-10
の箇条又は表
他の部の対応する箇条又は表
対応を含む部
“14.1.6.1.44 大 10 進数設定 setBigDecimal(int,
BigDecimal)”
(なし) (なし)
“14.1.6.1.45 2 進ストリームおおい設定
setBinaryStreamWrapper(int, BinaryStream)”
(なし) (なし)
“14.1.6.1.46 BLOB 設定 setBlob(int,Blob)”
(なし) (なし)
“14.1.6.1.47 ブール設定 setBoolean(int, boolean)”
(なし) (なし)
“14.1.6.1.48 ブールおおい設定
setBooleanWrapper(int, Boolean)”
(なし) (なし)
“14.1.6.1.49 バイト設定 setByte(int,byte)”
(なし) (なし)
“14.1.6.1.50 バイト設定 setBytes(int, byte)”
(なし) (なし)
“14.1.6.1.51 バイトおおい設定 setByteWrapper(int,
Byte)”
(なし) (なし)
“14.1.6.1.52 文字ストリームおおい設定
setCharacterStreamWrapper(int, CharacterStream)”
(なし) (なし)
“14.1.6.1.53 CLOB 設定 setClob(int,Clob)”
(なし) (なし)
“14.1.6.1.54 日付設定 setDate(int,Date)”
(なし) (なし)
“14.1.6.1.55 倍精度浮動小数点設定 setDouble(int,
double)”
(なし) (なし)
“14.1.6.1.56 倍精度浮動小数点おおい設定
setDoubleWrapper(int, Double)”
(なし) (なし)
“14.1.6.1.57 浮動小数点設定 setFloat(int,float)”
(なし) (なし)
“14.1.6.1.58 浮動小数点おおい設定
setFloatWrapper(int, Float)”
(なし) (なし)
“14.1.6.1.59 整数設定 setInt(int,int)”
(なし) (なし)
“14.1.6.1.60 整数おおい設定 setIntWrapper(int,
Integer)”
(なし) (なし)
“14.1.6.1.61 長整数設定 setLong(int,long)”
(なし) (なし)
“14.1.6.1.62 長整数おおい設定 setLongWrapper(int,
Long)”
(なし) (なし)
“14.1.6.1.63 最大フィールドサイズ設定
setMaxFieldSize(int)”
(なし) (なし)
“14.1.6.1.64 最大行数設定 setMaxRows(int)”
(なし) (なし)
“14.1.6.1.65 オブジェクト設定 setObject( )”
(なし) (なし)
“14.1.6.1.66 問合せ制限時間設定
setQueryTimeout(int)”
(なし) (なし)
“14.1.6.1.67 参照設定 setRef(int,Ref)”
(なし) (なし)
“14.1.6.1.68 短整数設定 setShort(int, short)”
(なし) (なし)
“14.1.6.1.69 短整数おおい設定 setShortWrapper(int,
Short)”
(なし) (なし)
“14.1.6.1.70 文字列設定 setString(int, String)”
(なし) (なし)
“14.1.6.1.71 時刻設定 setTime(int,Time)”
(なし) (なし)
“14.1.6.1.72 時刻印設定 setTimestamp(int,
Timestamp)”
(なし) (なし)
“14.1.6.1.73 UNICODE ストリームおおい設定
setUnicodeStreamWrapper(int, UnicodeStream)”
(なし) (なし)
“14.1.7 sqlj.runtime.profile.SerializedProfile”
(なし) (なし)
“14.1.7.1 メソッド”
(なし) (なし)
16
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
表 1 箇条及び表の関係(続き)
JIS X 3005-10
の箇条又は表
他の部の対応する箇条又は表
対応を含む部
“14.1.7.1.1 プロファイルストリーム取得
getProfileAsStream( )”
(なし) (なし)
“14.2 SQLJ sqlj.runtime.profile クラス”
(なし) (なし)
“14.2.1 sqlj.runtime.profile.DefaultLoader”
(なし) (なし)
“14.2.1.1 構成子”
(なし) (なし)
“14.2.1.1.1 既定ローダ DefaultLoader(ClassLoader)”
(なし) (なし)
“14.2.1.2 メソッド”
(なし) (なし)
“14.2.1.2.1 資源ストリーム取得
getResourceAsStream(String)”
(なし) (なし)
“14.2.1.2.2 クラスロード loadClass(String)”
(なし) (なし)
“14.2.2 sqlj.runtime.profile.EntryInfo”
(なし) (なし)
“14.2.2.1 変数”
(なし) (なし)
“14.2.2.1.1 BLOCK”
(なし) (なし)
“14.2.2.1.2 CALL”
(なし) (なし)
“14.2.2.1.3 CALLABLE_STATEMENT”
(なし) (なし)
“14.2.2.1.4 COMMIT”
(なし) (なし)
“14.2.2.1.5 EXECUTE”
(なし) (なし)
“14.2.2.1.6 EXECUTE_QUERY”
(なし) (なし)
“14.2.2.1.7 EXECUTE_UPDATE”
(なし) (なし)
“14.2.2.1.8 ITERATOR_CONVERSION”
(なし) (なし)
“14.2.2.1.9 NAMED_RESULT”
(なし) (なし)
“14.2.2.1.10 NO_RESULT”
(なし) (なし)
“14.2.2.1.11 OTHER”
(なし) (なし)
“14.2.2.1.12 POSITIONED”
(なし) (なし)
“14.2.2.1.13 POSITIONED_RESULT”
(なし) (なし)
“14.2.2.1.14 PREPARED_STATEMENT”
(なし) (なし)
“14.2.2.1.15 QUERY”
(なし) (なし)
“14.2.2.1.16 QUERY_FOR_UPDATE”
(なし) (なし)
“14.2.2.1.17 ROLLBACK”
(なし) (なし)
“14.2.2.1.18 SET_TRANSACTION”
(なし) (なし)
“14.2.2.1.19 SINGLE_ROW_QUERY”
(なし) (なし)
“14.2.2.1.20 STATEMENT”
(なし) (なし)
“14.2.2.1.21 UNTYPED_SELECT”
(なし) (なし)
“14.2.2.1.22 VALUES”
(なし) (なし)
“14.2.2.2 構成子”
(なし) (なし)
“14.2.2.2.1 項目情報 EntryInfo( )”
(なし) (なし)
“14.2.2.3 メソッド”
(なし) (なし)
“14.2.2.3.1 実行型を文字列へ
executeTypeToString(int)”
(なし) (なし)
“14.2.2.3.2 記述子取得 getDescriptor( )”
(なし) (なし)
“14.2.2.3.3 実行型取得 getExecuteType( )”
(なし) (なし)
“14.2.2.3.4 行番号取得 getLineNumber( )”
(なし) (なし)
“14.2.2.3.5 パラメタ数取得 getParamCount( )”
(なし) (なし)
“14.2.2.3.6 パラメタ情報取得 getParamInfo(int)”
(なし) (なし)
“14.2.2.3.7 結果集合数取得 getResultSetCount( )”
(なし) (なし)
“14.2.2.3.8 結果集合情報取得 getResultSetInfo(int)”
(なし) (なし)
“14.2.2.3.9 結果集合名取得 getResultSetName( )”
(なし) (なし)
17
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
表 1 箇条及び表の関係(続き)
JIS X 3005-10
の箇条又は表
他の部の対応する箇条又は表
対応を含む部
“14.2.2.3.10 結果集合型取得 getResultSetType( )”
(なし) (なし)
“14.2.2.3.11 役割取得 getRole( )”
(なし) (なし)
“14.2.2.3.12 SQL 文字列取得 getSQLString( )”
(なし) (なし)
“14.2.2.3.13 文種別取得 getStatementType( )”
(なし) (なし)
“14.2.2.3.14 トランザクション記述子取得
getTransactionDescriptor( )”
(なし) (なし)
“14.2.2.3.15 定義済み役割か isDefinedRole(int)”
(なし) (なし)
“14.2.2.3.16 有効な記述子か
isValidDescriptor(Object, int)”
(なし) (なし)
“14.2.2.3.17 有効な実行型か isValidExecuteType(int)” (なし) (なし)
“14.2.2.3.18 有効な結果集合型か
isValidResultSetType(int)”
(なし) (なし)
“14.2.2.3.19 有効な役割か isValidRole(int)”
(なし) (なし)
“14.2.2.3.20 有効な文種別か
isValidStatementType(int)”
(なし) (なし)
“14.2.2.3.21 結果集合型を文字列へ
resultSetTypeToString(int)”
(なし) (なし)
“14.2.2.3.22 役割を文字列へ roleToString(int)”
(なし) (なし)
“14.2.2.3.23 文種別を文字列へ
statementTypeToString(int)”
(なし) (なし)
“14.2.2.3.24 オブジェクト有効化 validateObject( )”
(なし) (なし)
“14.2.3 sqlj.runtime.profile.Profile”
(なし) (なし)
“14.2.3.1 構成子”
(なし) (なし)
“14.2.3.1.1 プロファイル Profile(Loader)”
(なし) (なし)
“14.2.3.2 メソッド”
(なし) (なし)
“14.2.3.2.1 仕立て処理登録削除
deregisterCustomization(Customization)”
(なし) (なし)
“14.2.3.2.2 被接続プロファイル取得
getConnectedProfile(Connection)”
(なし) (なし)
“14.2.3.2.3 文脈名取得 getContextName( )”
(なし) (なし)
“14.2.3.2.4 仕立て処理取得 getCustomizations( )”
(なし) (なし)
“14.2.3.2.5 Java 型取得 getJavaType(String)”
(なし) (なし)
“14.2.3.2.6 Java 型取得 getJavaType(TypeInfo)”
(なし) (なし)
“14.2.3.2.7 ローダ取得 getLoader( )”
(なし) (なし)
“14.2.3.2.8 プロファイルデータ取得
getProfileData( )”
(なし) (なし)
“14.2.3.2.9 プロファイル名取得 getProfileName( )”
(なし) (なし)
“14.2.3.2.10 時刻印取得 getTimestamp( )”
(なし) (なし)
“14.2.3.2.11 インスタンス化 instantiate(Loader,
InputStream)”
(なし) (なし)
“14.2.3.2.12 インスタンス化 instantiate(Loader,
String)”
(なし) (なし)
“14.2.3.2.13 仕立て処理登録
registerCustomization(Customization)”
(なし) (なし)
“14.2.3.2.14 仕立て処理登録
registerCustomization(Customization,Customization)”
(なし) (なし)
“14.2.3.2.15 仕立て処理置換え
replaceCustomization(Customization,Customization)”
(なし) (なし)
18
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
表 1 箇条及び表の関係(続き)
JIS X 3005-10
の箇条又は表
他の部の対応する箇条又は表
対応を含む部
“14.2.4 sqlj.runtime.profile.ProfileData”
(なし) (なし)
“14.2.4.1 構成子”
(なし) (なし)
“14.2.4.1.1 プロファイルデータ ProfileData( )”
(なし) (なし)
“14.2.4.2 メソッド”
(なし) (なし)
“14.2.4.2.1 項目情報取得 getEntryInfo(int)”
(なし) (なし)
“14.2.4.2.2 プロファイル取得 getProfile( )”
(なし) (なし)
“14.2.4.2.3 ソースファイル取得 getSourceFile( )”
(なし) (なし)
“14.2.4.2.4 サイズ size( )”
(なし) (なし)
“14.2.5 sqlj.runtime.profile.SetTransactionDescriptor”
(なし) (なし)
“14.2.5.1 変数”
(なし) (なし)
“14.2.5.1.1 READ_NONE”
(なし) (なし)
“14.2.5.1.2 READ_ONLY”
(なし) (なし)
“14.2.5.1.3 READ_WRITE”
(なし) (なし)
“14.2.5.2 構成子”
(なし) (なし)
“14.2.5.2.1 トランザクション記述子設定
SetTransactionDescriptor(int, int)”
(なし) (なし)
“14.2.5.3 メソッド”
(なし) (なし)
“14.2.5.3.1 アクセスモード取得 getAccessMode( )”
(なし) (なし)
“14.2.5.3.2 隔離性水準取得 getIsolationLevel( )”
(なし) (なし)
“14.2.6 sqlj.runtime.profile.TypeInfo”
(なし) (なし)
“14.2.6.1 変数”
(なし) (なし)
“14.2.6.1.1 IN”
(なし) (なし)
“14.2.6.1.2 INOUT”
(なし) (なし)
“14.2.6.1.3 OUT”
(なし) (なし)
“14.2.6.2 構成子”
(なし) (なし)
“14.2.6.2.1 型情報 TypeInfo( )”
(なし) (なし)
“14.2.6.3 メソッド”
(なし) (なし)
“14.2.6.3.1 Java 型名取得 getJavaTypeName( )”
(なし) (なし)
“14.2.6.3.2 マーカ指標取得 getMarkerIndex( )”
(なし) (なし)
“14.2.6.3.3 モード取得 getMode( )”
(なし) (なし)
“14.2.6.3.4 名前取得 getName( )”
(なし) (なし)
“14.2.6.3.5 SQL 型取得 getSQLType( )”
(なし) (なし)
“14.2.6.3.6 SQL 型名取得 getSQLTypeName( )”
(なし) (なし)
“14.2.6.3.7 有効なモードか isValidMode(int)”
(なし) (なし)
“14.2.6.3.8 有効な SQL 型か isValidSQLType(int)”
(なし) (なし)
“14.2.6.3.9 モードを文字列へ modeToString(int)”
(なし) (なし)
“14.2.6.3.10 SQL 型を文字列へ
SQLTypeToString(int)”
(なし) (なし)
“14.2.6.3.11 オブジェクト有効化 validateObject( )”
(なし) (なし)
“15. sqlj.runtime.profile.util.ProfileCustomizer”
(なし) (なし)
“15.1 メソッド”
(なし) (なし)
“15.1.1 コネクション受付け
acceptsConnection(Connection)”
(なし) (なし)
“15.1.2 仕立て処理 customize(Profile, Connection,
ErrorLog)”
(なし) (なし)
19
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
表 1 箇条及び表の関係(続き)
JIS X 3005-10
の箇条又は表
他の部の対応する箇条又は表
対応を含む部
“16. 動的 SQL”
“15. 動的 SQL”
ISO/IEC 9075-5
“16.1 SQL 記述子領域の記述”
“15.1 SQL 記述子領域の記述”
ISO/IEC 9075-5
“16.2 <GET DESCRIPTOR 文>”
“15.4 <GET DESCRIPTOR 文>”
ISO/IEC 9075-5
“16.3 < SET DESCRIPTOR 文>”
“15.5 < SET DESCRIPTOR 文>”
ISO/IEC 9075-5
“16.4 <記述文>”
“15.8 <記述文>”
ISO/IEC 9075-5
“17. 呼出しレベルインタフェース規定”
“5. 呼出しレベルインタフェース規定” JIS X 3005-3
“17.1 暗黙 DESCRIBE USING 句”
“5.5 暗黙 DESCRIBE USING 句”
JIS X 3005-3
“17.2 CLI 項目記述子領域の記述”
“5.13 CLI 項目記述子領域の記述”
JIS X 3005-3
“17.3 CLI に関連する他の表”
“5.14 CLI に関連する他の表”
JIS X 3005-3
“18. 定義スキーマ”
“21. 定義スキーマ”
JIS X 3005-2
“18.1 SQL_LANGUAGES 実表”
(なし) (なし)
“19. 状態コード”
“22. 状態コード”
JIS X 3005-2
“19.1 SQLSTATE”
“22.1 SQLSTATE”
JIS X 3005-2
“20. 適合性”
“8. 適合性”
JIS X 3005-1
“20.1 適合性の主張”
“8.1.5 適合性の主張”
JIS X 3005-1
“20.2 拡張及び選択機能”
(なし) (なし)
“20.3 SQLJ の部分集合”
(なし) (なし)
“附属書 A SQL 適合性の要約”
“附属書 A SQL 適合性の要約”
JIS X 3005-2
“附属書 B 処理系定義要素”
“附属書 B 処理系定義要素”
JIS X 3005-2
“附属書 C 処理系依存要素”
“附属書 C 処理系依存要素”
JIS X 3005-2
“附属書 D 削除予定機能”
“附属書 D 削除予定機能”
JIS X 3005-2
“附属書 E 代表的なヘッダファイル”
“附属書 A 代表的なヘッダファイル”
JIS X 3005-3
“E.1 C ヘッダファイル SQLCLI.H”
“A.1 C ヘッダファイル SQLCLI.H”
JIS X 3005-3
“E.2 COBOL ライブラリ項目 SQLCLI”
“A.2 COBOL ライブラリ項目 SQLCLI” JIS X 3005-3
“附属書 F SQL の機能の分類”
“附属書 F SQL の機能及びパッケージの
分類”
JIS X 3005-2
“附属書 G SQLJ 入門”
(なし) (なし)
“G.1 設計目標”
(なし) (なし)
“G.2 JDBC に対する SQLJ の強み”
(なし) (なし)
“G.3 既存埋込み SQL 言語との一貫性”
(なし) (なし)
“G.4 例”
(なし) (なし)
“G.4.1 ホスト変数”
(なし) (なし)
“G.4.2 ホスト式”
(なし) (なし)
“G.4.3 SQLJ 句”
(なし) (なし)
“G.4.4 データベースコネクション文脈”
(なし) (なし)
“G.4.5 既定コネクション文脈”
(なし) (なし)
“G.4.6 反復子”
(なし) (なし)
“G.4.6.1 列の位置付け結合”
(なし) (なし)
“G.4.6.2 列の名前付き結合”
(なし) (なし)
“G.4.6.3 問合せの列に対する名前付与”
(なし) (なし)
“G.4.7 格納手続及び格納関数の呼出し”
(なし) (なし)
“G.4.8 複数の SQLJ 文脈及びコネクションの利用” (なし) (なし)
“G.4.9 SQL 実行制御及び状態”
(なし) (なし)
“G.4.10 格納手続呼出しからの複数の JDBC 結果集
合 ResultSet”
(なし) (なし)
“G.4.11 JDBC 結果集合 ResultSet オブジェクトから
の SQLJ 反復子オブジェクト作成”
(なし) (なし)
20
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
表 1 箇条及び表の関係(続き)
JIS X 3005-10
の箇条又は表
他の部の対応する箇条又は表
対応を含む部
“G.4.12 型付けされていない反復子オブジェクトか
らの JDBC 結果集合 ResultSet 取得”
(なし) (なし)
“G.4.13 利用者定義型の利用”
(なし) (なし)
“G.4.14 プログラム例”
(なし) (なし)
“G.4.15 ホスト変数定義”
(なし) (なし)
表 1“箇条及び表の関係”
(なし) (なし)
表 2“SQLJ 出力代入可能性”
(なし) (なし)
表 3“SQLJ 入力代入可能性”
(なし) (なし)
表 4“SQLJ<実行可能句>に関する役割の関連”
(なし) (なし)
表 5“SQLJ 型の特性”
(なし) (なし)
表 6“java.sql.ResultSet から保持されるメソッド”
(なし) (なし)
表 7“java.sql.ResultSet から保持されないメソッド”
(なし) (なし)
表 8“RTResultSet に特有のその他のメソッド”
(なし) (なし)
表 9“ java.sql.Statement から保持されるメソッド”
(なし) (なし)
表 10
“ java.sql.Statement から保持されないメソッド” (なし) (なし)
表 11“java.sql.PreparedStatement から保持されるメソ
ッド”
(なし) (なし)
表 12“java.sql.PreparedStatement から保持されないメ
ソッド”
(なし) (なし)
表 13“java.sql.CallableStatement から保持されるメソ
ッド”
(なし) (なし)
表 14“java.sql.CallableStatement から保持されないメ
ソッド”
(なし) (なし)
表 15“RTStatement に特有のその他のメソッド”
(なし) (なし)
表 16“仕立て結果の解釈”
(なし) (なし)
表 17“SQL 項目記述子領域中で用いられる<キーワ
ード>のデータ型”
“表 3“SQL 項目記述子領域中で用いら
れる<キーワード>のデータ型”
ISO/IEC 9075-5
表 18
“動的 SQL 中の利用者定義型に関連するコード” (なし) (なし)
表 19“SQL/CLI の行及びパラメタ記述子領域中のフ
ィールド”
表 6“SQL/CLI の行及びパラメタ記述子領
域中のフィールド”
JIS X 3005-3
表 20“SQL/CLI 中の利用者定義型に関連するコード” (なし) (なし)
表 21“SQL/CLI 記述子フィールドのために使われる
コード”
表 20“SQL/CLI 記述子フィールドのため
に使われるコード”
JIS X 3005-3
表 22“SQL/CLI 記述子フィールドに設定するための
能力”
表 21“SQL/CLI 記述子フィールドに設定
するための能力”
JIS X 3005-3
表 23“SQL/CLI 記述子フィールドから取り出すため
の能力”
表 22“SQL/CLI 記述子フィールドから取
り出すための能力”
JIS X 3005-3
表 24“SQL/CLI 記述子フィールドの既定値”
表 23“SQL/CLI 記述子フィールドの既定
値”
JIS X 3005-3
表 25“SQLSTATE のクラス及びサブクラスの値”
表 27“SQLSTATE のクラス及びサブクラ
スの値”
JIS X 3005-2
表 26“SQLJ 部分集合に対するその他の適合性要件” (なし) (なし)
表 27“中核 SQL 外の機能ための SQL/OLB 機能分類” 表 13 “ 中 核 SQL 外 の 機 能 た め の
SQL/Binding 機能分類”
ISO/IEC 9075-5
21
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
3.4
データベース言語 SQL のオブジェクト識別子
データベース言語 SQL のオブジェクト識別子は,JIS X 3005-1 中の“7.3 データベース言語 SQL のオブ
ジェクト識別子”中に次の追加を行って,定義される。
形式
<第 10 部あり> ::= <第 10 部適合性> <第 10 部拡張>
<第 10 部適合性> ::= 10 | sqlolb2000 <左括弧> 10 <右括弧>
<第 10 部拡張> ::= <第 10 部拡張あり> | <第 10 部拡張なし>
<第 10 部拡張あり> ::= 1 | extensionsyes <左括弧> 1 <右括弧>
<第 10 部拡張なし> ::= 0 | extensionsno <左括弧> 0 <右括弧>
構文規則
1) <
第 10 部あり>の指定は,JIS X 3005-10 に対する適合性が主張されることを意味する。
2) <
第 10 部拡張あり>の指定は,中核遵守のために必要とされない機能として,JIS X 3005-10 中で陽
に定義された機能への適合性が主張されることを意味する。
3) <
第 10 部拡張なし>指定は,中核遵守のために必要とされない機能として,JIS X 3005-10 で陽に定
義された機能への適合性を主張しないことを意味する。
4.
概念
4.1
はじめに
ISO/IEC 9075-5
は,プログラム言語 Ada,C,COBOL,Fortran,MUMPS,Pascal 及び PL/I のための
埋
込み
SQL (embedded SQL)
を規定している。この規格は,Java プログラム言語のために仕立てられた同様の
埋込みである<SQL 埋込み Java プログラム>を規定する。
SQLJ は,SQL 構成要素を含むために Java プログラムを拡張する句の集合からなる。SQLJ
翻訳プログ
ラム
(SQLJ translator)
は,それら SQLJ
句
(SQLJ clauses)
を呼出しインタフェースを通してデータベー
スにアクセスする標準 Java のコードに変換するユティリティとする。SQLJ 翻訳プログラムの出力は,生
成される Java ソースプログラムとし,そのプログラムは,その後,どの Java コンパイラによっても翻訳
することができる。埋込み SQL を含む Java プログラムは,構文検査,型検査及びスキーマの正当性確認
のための SQL 文の静的な解析を容易にできる。
SQLJ は,SQLJ 翻訳という方法の範囲で互換とする。クライアント環境において,SQLJ は,適切なデ
ータベース API を呼び出す標準 Java コードを出力するために,独立型の SQLJ-Java 翻訳プログラム,又は
Java 統合開発環境(IDE)によって処理されることがあり得る。Java が(RDBMS サーバにおいて)
格納手続言
語
(stored procedure language)
として提供されるならば,SQLJ 翻訳は,使いやすさ及び性能のために,Java
及び SQL 翻訳に統合されることがあり得る。
4.2
埋込み構文
【最初の段落を置き換える】<SQL 埋込みホストプログラム>(<SQL 埋込み Ada プログラム>,<SQL 埋
込み C プログラム>,<SQL 埋込み COBOL プログラム>,<SQL 埋込み Fortran プログラム>,<SQL 埋込み
MUMPS プログラム>,<SQL 埋込み Pascal プログラム>,<SQL 埋込み PL/I プログラム>又は<SQL 埋込み
Java プログラム>)は,プログラム言語テキスト及び SQL テキストからなる翻訳単位とする。プログラム言
語テキストは,特定の標準プログラム言語の要件に適合しなければならない。SQL テキストは,この規格
で定義されるとおりの一つ以上の<埋込み SQL 文>及び省略可能な一つ以上の<埋込み SQL 宣言節>からな
らなければならない。これによって,データベース適用業務プログラムは,SQL 文を翻訳単位中に直接埋
22
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
め込む混成形態で表現することができる。<SQL 埋込み Java プログラム>を除くすべての<SQL 埋込みホス
トプログラム>に対して,そのような混成翻訳単位は,別の SQL クライアントモジュール中の<外部呼出
し手続>への標準手続呼出し又はサブルーチン呼出しによって,SQL 文が置き換えられ,各 SQL 文が取り
除かれ,その中に含まれる宣言が標準のホスト言語構文に適切に変換された標準翻訳単位に等しいと定義
される。<SQL 埋込みホストプログラム>が<SQL 埋込み Java プログラム>を直に含むとき,このような混
成翻訳単位は,そのクラスのメソッドが呼び出されるとき JDBC を利用する Java クラスの利用によって,
SQL 文が置き換えられた標準翻訳単位に等しいと定義される。
【3 番目の段落を置き換える】処理系は,<SQL 埋込みホストプログラム>中の名前空間の一部分を予約
してもよい。<SQL 埋込み Java プログラム>を除くすべての<SQL 埋込みホストプログラム>に対して,SQL
文を置き換えるために生成されるかもしれない手続又はサブルーチンの名前のために,そしてこれら手続
又はサブルーチンの呼出しを支援するために必要なものとして生成されるかもしれないプログラム変数及
び分岐ラベルのために,名前空間を予約してもよい。この予約がなされるかどうかは,処理系定義とする。
それらは,同様に,生成されて,結果として得られる標準翻訳単位に関連づけられるかもしれない<SQL
クライアントモジュール定義>の<モジュール名>及び<手続名>のために,名前空間を予約してもよい。あ
るならば,そのように予約されるべき名前空間の部分は,処理系定義とする。<SQL 埋込みホストプログ
ラム>が<SQL 埋込み Java プログラム>を直に含むとき,名前空間は,変数名,内部クラス名,資源ファイ
ル名に対して予約される。詳細に関しては,
“10.4 SQLJ 予約名”を参照のこと。
4.3
SQL
構成要素
次の種類の SQL の構成要素が SQLJ プログラム中に現れることを許す。
―
問合せ SELECT 文及び式
― SQL
データ変更文(DML) INSERT,UPDATE,DELETE
―
データ文 FETCH,SELECT…INTO
―
トランザクション制御 COMMIT,ROLLBACK など
―
データ定義言語(DDL,SQL では,“スキーマ操作言語”と呼ぶ) CREATE,DROP など
―
格納手続呼出し 例,CALL MYPROC(:x, :y, :z)
―
格納関数呼出し 例,VALUES( MYFUN(:x) )
―
代入文 SET
4.4
文字列
4.4.1
UNICODE
支援
Java は,String データ及び識別子に関して UNICODE 文字集合[UNICODE](ISO/IEC 10646-1 としても
知られている)に依存している。そのことは,Java がほとんどの文字データを同一の方法で表現することを
可能にする。[SQL]は,UNICODE 文字データの異なる符号化を表現する UTF-8,UTF-16 及び UCS2 文字
集合を通して UNICODE 支援を定義する。SQL サーバと SQL/OLB ホストプログラムとの間で文字データ
を移動させるとき,UTF8,UTF16 及び/又は UCS2 を支援する SQL 文字集合を提供する SQL/OLB 処理系
は,Java 文字列データと支援される UNICODE 符号化との間で,暗に想定される変換を支援することが要
求される。UNICODE 以外の文字集合への暗に想定される変換,及びそれからの暗に想定される変換のた
めのどんな支援も,処理系定義とする。文字データの内部表現としての UNICODE への Java への依存性の
ために,SQL/OLB 仕様は,UNICODE 以外の文字集合に基づく文字データを保持するホスト変数のための
支援を定義しない。
SQL 文の SQL<トークン>中の文字の出現に対する[SQL]中での規則は,Java 識別子及び Java ホスト式中
23
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
に現れる文字を除いて,SQLJ 句中の文字の出現にも適用する。
4.4.2
名前付き文字集合
― 【最初の項目を置き換える】SQL_CHARACTER は,“5.1 <SQL 終端文字>”中で規定される 88 個の
<SQL 言語文字>からなる文字レパートリの名前を指定する。<SQL 言語文字>は,52 個の大文字及
び小文字の単純ラテン文字,10 個の数字,並びに 26 個の<SQL 特殊文字>からなり,<SQL 特殊文字
>には,<空白>,<2 重引用符>,<パーセント>,<アンパサンド>,<引用符>,<左括弧>,<右括弧>,
<アスタリスク>,<正符号>,<コンマ>,<負符号>,<ピリオド>,<斜線>,<コロン>,<セミコロン
>,<小なり演算子>,<等号演算子>,<大なり演算子>,<疑問符>,<下線>,<垂直棒>,<左角括弧>,
<右角括弧>,<サーカムフレックス>,<左波括弧>及び<右波括弧>が含まれる。<SQL 言語文字>と
して規定される 88 個の文字は,ISO/IEC 646:1991 で規定される ISO 国際基準版(IRV)の中にすべて含
まれる。IRV 中の文字は,他の多くの国際文字集合定義中に含まれる。さらに,これらのうちの 82
個の(<垂直棒>,<左角括弧>,<右角括弧>,<サーカムフレックス>,<左波括弧>及び<右波括弧>を
除くすべての)文字は, ISO の規約によって, ISO 規格のラテン文字に基づくどの文字集合中にも含ま
れる IRV 中の最も固定的に部分集合中にある。<垂直棒>,<左角括弧>,<右角括弧>,<サーカムフ
レックス>,<左波括弧>及び<右波括弧>は,世界中で用いられるほとんどの文字集合中に含まれると
言える。したがって,SQL_CHARACTER のレパートリは,この規格の中で命名される文字集合の中
で最も汎用的である。SQL_CHARACTER の照合順及び使用形式は,処理系定義とする。
<SQL 埋込みホストプログラム>が<SQL 埋込み Java プログラム>を直に含むならば,<SQL 特殊文
字>は,他に含むことを要求された文字に加えて,<番号記号> (#)を含まなければならない。
4.5
ホスト変数
埋込み SQL の引数は,SQL 文中に現れるホスト言語の変数である
ホスト変数
(host variables)
を通して
受け渡される。ホスト変数名には,前にコロン(:)がつけられる。ホスト変数は,省略可能なパラメタモー
ド識別子 (IN,OUT,INOUT) を含み,パラメタ,変数又は Java フィールドと名付けられている Java 識別
子である Java ホスト変数がそれに続く。
Java 識別子の評価は,Java プログラム中に副作用を与えないので,
SQLJ 句を置き換えるために生成される Java コード中に複数回現れることが許される。
4.6
ホスト式
SQLJ は,Java ホスト式が SQL 文中に直接現れることを許すことによって,従来の埋込み支援を拡張す
る。ホスト式は,コロン(:)が前に付き,省略可能なパラメタモード識別子(IN,OUT,INOUT)がそれに続
き,そして括弧で囲まれた式の句が続く。式の句は,正しい Java 式を含み,(IN 若しくは INOUT モード
の場合には,) 単一の値,
及び
/
又は
(OUT
若しくは INOUT モードの場合には,) Java 左辺値式の場所のい
ずれかにならなければならない。
ホスト式の評価は,SQL エンジンではなく Java によって評価されるので,Java
プログラム中に副作用
を与える
(does have side effect in a Java program)
。ホスト式は,SQL エンジンに処理が任される前に,SQL
文内で左から右へ評価される。
ホスト式は,常に純粋な値の意味を用いて,SQL エンジンに渡され,SQL エンジンから取り出される。
出力ホスト式への代入も,語い順に実行される。
4.7
SQLJ
句
SQLJ における SQL 文は,SQLJ
句
(SQLJ clause)
中に現れる。SQLJ 句は,Java プログラム中の SQL 文
がデータベースと通信する機構を表現する。
各 SQLJ 句は,正しい Java 識別子ではないトークン#sql で始まり,セミコロンで終わるが,これがその
24
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
句及びその SQL の内容を SQLJ 翻訳プログラムに認識させる。
最も単純な SQLJ 句は,
実行可能句
(executable clause)
で,トークン#sql,及びそれに続く波括弧( { 及
び } )で囲まれた SQL 文からなる。
SQLJ 実行可能句中では,波括弧の内側に現れるトークンは,ホスト変数を除いて,SQL<トークン>及
び<分離符号>とする。すべてのホスト変数は,翻訳プログラムがそれらを識別できるように,コロン文字
によって区別できなければならない。SQL<トークン>及び<分離記号>は,SQLJ 実行可能句の一対の波括
弧の外側に存在しない。
一般的に,SQL<トークン>は,(二重引用符で区切られた識別子を除いて,)大文字と小文字との区別が
なく,大文字,小文字,又はそれらを混合して書くことができる。しかし,Java トークンは,大文字と小
文字とを区別する。例での明確さのために,大文字と小文字との区別なく SQL<トークン>を大文字で書き,
Java トークンを小文字,又は大文字と小文字とを混合して書く。この規格を通して,Java の“ナル”値を
表現するために小文字の null を用いて,SQL のナル値を表現するために大文字の NULL を用いる。
ホスト式が Java 左辺値式に評価されるならば,そのホスト式は,代入相手として用いられることも許さ
れる。
4.8
データベースコネクション文脈
各 SQLJ 実行可能句は,その句の中で指定される SQL 操作が実行されるデータベースコネクションを示
す
コネクション文脈オブジェクト
(connection context object)
を陽に要求するか又は暗に要求する。コネク
ション文脈オブジェクトは,トークン#sql の直後に続く,角括弧によって区切られた省略可能な式とする。
コネクション文脈オブジェクトは,SQL 文が実行されるデータベース,並びに SQL 文が実行されるセ
ション及びトランザクションを示す。コネクション文脈は,SQLJ
コネクション句
(connection clause)
によ
っ て 定 義 さ れ る
コ ネ ク シ ョ ン 文 脈 ク ラ ス
(connection context class)
の オ ブ ジ ェ ク ト と す る 。 JDBC
Connection,URL (URL についての詳細は,RFC1738,RFC1808 及び RFC2368 参照),又は URL 並びに利
用者名及びパスワードのような情報が与えられるとき,コネクション文脈クラスは,データベースへのコ
ネクションを識別して,必要ならば,コネクションを開くためのメソッドをもつ。実行時に,SQLJ プロ
グラムは,どの SQLJ 句も実行される前に,データベースコネクションを確立するためのこれらのメソッ
ドのうちの一つを用いなければならない。
参考 3 コネクション文脈オブジェクトは,JDBC コネクション Connection オブジェクトに従って,
データベース及び関連するスキーマ,並びに既定のカタログ及びスキーマを暗に指定する。
4.9
既定コネクション文脈
SQLJ 句が実行されるコネクション文脈オブジェクトを示す式をその句が含むならば,その句は,
陽な
コネクション
(explicit connection)
を用いるという。コネクション文脈オブジェクトが句から省略されてい
るならば,その句は,
既定コネクション
(default connection)
を用いるという。
既定コネクション文脈の指定は,処理系定義とする。可搬性のある適用業務プログラムは,常に陽なコ
ネクション文脈を用いることが望ましい。
既定コネクション文脈クラスがクラス connctx であることを SQLJ 翻訳プログラムの呼出しが示すなら
ば , 既 定 コ ネ ク シ ョ ン 文 脈 を 用 い る す べ て の SQLJ 句 は , コ ネ ク シ ョ ン 文 脈 オ ブ ジ ェ ク ト
connctx.getDefaultContect( )
をそれらが陽に用いたかのように変換される。
プログラムは,setDefaultContext を呼び出すことによって,既定コネクションとしてのコネクション文
脈オブジェクトを組み込むことが許される。
プログラムのための既定コネクション文脈オブジェクトは,既定コネクション文脈クラスの静的変数中
25
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
に格納される。幾つかの SQLJ プログラムは,静的変数を用いることを避けたい。例えば,アプレット,
再入可能なライブラリ,及び幾つかのマルチスレッドのプログラムは,静的変数を避ける。これらのプロ
グラムは,陽なコネクション文脈オブジェクトで SQLJ 句を用いたいだろう。
SQLJ プログラムが“格納手続”としてデータベースの内側で実行されている (又はその他にコネクショ
ン文脈を自動的に提供する環境で実行されている)ならば,メソッド ConnectionContext.getDefaultContext の
呼出しは,プログラムが実行されているスキーマを表現するオブジェクトを常に戻す。SQLJ プログラム
は,コネクション文脈オブジェクトを組み込むために,ConnectionContext.setDefaultContext を呼び出す前
に,ConnectionContext.getDefaultContect を呼び出すことによって,コネクション文脈を暗に提供する環境
で実行されているかどうかを検知することができる。コネクション文脈を自動的に提供する実行環境は,
ナルでないコネクション文脈オブジェクトを戻す。
既 定 コ ネ ク シ ョ ン 文 脈 に よ っ て 用 い ら れ る デ ー タ ベ ー ス コ ネ ク シ ョ ン は , JNDI を 用 い て
jdbc/defaultDataSource という名前で結合されるデータソースによって定義される。この名前が定義されな
いならば,用いるコネクションは,処理系定義とする。
参考 4 “JNDI”は,Java 言語仕様で定義されている Java Naming Directory Interface である。
4.10
例示スキーマを用いたスキーマ検査
SQLJ 翻訳時に,コネクション文脈クラスは,異なる役割を果たす。コネクション文脈クラスは,SQLJ
プログラムが実行時に接続するであろうデータベースのスキーマの“型”を象徴する。
“データベースのス
キーマの型”という概念は,非公式とする。それは,表及びビューに関連した名前及び権限,行の“形”
,
並びに格納プログラムなどを含む。スキーマの型は,SQLJ 句中の SQL 操作の実行を成功させるために必
要となる表,ビュー,プログラム及び権限を含む単なるデータベースのスキーマである
例示スキーマ
(exemplar schema)
によって象徴される。例示スキーマは,実際の実行時スキーマであってもよいし,翻訳
されている SQLJ プログラムに関連する点で,
“典型的な”スキーマである別のスキーマであってもよい。
例示スキーマが用いられているならば,SQLJ 翻訳プログラムの呼出し側は,コネクション文脈クラス
の例示スキーマへの対応付けを提供しなければならない。SQLJ 翻訳プログラムは,そのスキーマによっ
て“例示される”クラスのコネクション文脈中で実行されるすべての SQLJ 句に対する構文検査,型検査
及びスキーマ検査を提供するために,例示スキーマに接続する。その方法で,例示スキーマは,適用業務
プログラムが実行時に接続するデータベースのスキーマを表現する。例えば,同じ名前及び型の表,ビュ
ー,格納関数及び格納手続をもち,適切に設定された権限をもつような関連する方法で,実行時スキーマ
を表現する例示スキーマを選ぶのは,適用業務開発者の責任とする。
利用可能な適切な例示スキーマがないならば,又は SQLJ プログラム開発している間にデータベースに
接続することが不便ならば,プログラマは,コネクション型に対して例示スキーマを省略することが許さ
れる。その型のコネクションで実行される SQLJ 句は,SQLJ 翻訳時に検査されるスキーマがなく,代わり
に後で組込み時又は仕立て処理時に検査される。
コネクション文脈クラスの例示スキーマへの対応付けは,典型的に接続文字列及びパスワードとコネク
ション文脈クラス名とを組み合わせることによって,処理系定義の方法で SQLJ 翻訳プログラムに提供さ
れる。例えば,クライアント側の SQLJ 翻訳プログラムは,翻訳プログラムの呼出しでのコマンド行上で
その対応付けを要求することが許される。これらの接続文字列及びパスワードは,その後,例示スキーマ
へのデータベースコネクションを確立する ConnectionContext クラスの構成子の呼出しの引数として用い
られる。
コネクション文脈は,SQLJ 句中で省略可能なので,コネクション文脈が SQLJ 句にないならば,既定コ
26
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
ネクション文脈が指定されていなければならない。そのとき,その句は,そのプログラムに対する既定コ
ネクション文脈オブジェクトのクラスに対応する例示スキーマに対して検査される。
4.11
複数の SQLJ 文脈及びコネクションの利用
SQLJ は,同時に複数のデータベースサーバへのコネクションを支援する。実行時に接続される各デー
タベースサーバは,SQLJ プログラムの互いに異なるコネクション文脈クラスとしてモデル化される。単
一のデータベースサーバ内に一緒に存在する複数のスキーマは,単一のコネクション文脈によってすべて
アクセス可能とする。異なるデータベースサーバに存在するスキーマは,データベースコネクションごと
に一つの別々のコネクション文脈を要求する。#sql 文に関連した適切なコネクション文脈の指定は,翻訳
時に複数のデータベースサーバを跨る型検査を許す。
4.12
動的 SQL 及び JDBC/SQLJ コネクション Connection の相互運用性
SQLJ 言語は,プログラムが書かれている時に知られている SQL 操作のための直接支援を提供する。特
定の SQL 文の幾つか又はすべてが実行時まで決定できないならば,それは,動的な操作とする。SQLJ プ
ログラムから動的な SQL 操作を実行するためには,JDBC を用いる。ConnectionContext オブジェクトは,
動的な SQL 操作のために必要な JDBC Statement オブジェクトを作成するために用いることができる JDBC
Connection オブジェクトを含む。
4.12.1 JDBC
コネクションからの SQLJ コネクション文脈 ConnectionContext の作成
どの SQLJ ConnectionContext クラスも,JDBC Connection を引数として受け入れる構成子を含む。この構
成子は,もととなるデータベースコネクションを JDBC コネクションのそれと共有する SQLJ コネクショ
ン文脈オブジェクトを作成するために用いる。
4.12.2 SQLJ
コネクション文脈 ConnectionContext からの JDBC コネクションの取得
どの SQLJ ConnectionContext オブジェクトも,JDBC コネクションオブジェクトを戻す getConnection メ
ソッドをもつ。戻される JDBC Connection は,もととなるデータベースコネクションを SQLJ コネクショ
ン文脈と共有する。それは,JDBC API で記述されるような動的な SQL 操作を実行するために用いること
ができる。
4.12.3
コネクション共有
SQLJ ConnectionContext は,JDBC Connection を常に含み,もととなるデータベースコネクションとの通
信を提供するために,その JDBC Connection に依存する。したがって,一方のオブジェクトのコネクショ
ン状態に影響を与えるメソッドの呼出しは,他方のオブジェクトが実際に影響を受けるもととなる共有コ
ネクションなので,その他方のオブジェクトにも反映される。
JDBC は,新しく作成されるコネクションのセション状態に対する既定値を定義する。たいていの場合
には,SQLJ は,これらの既定値を適用する。しかし,新しく作成される JDBC コネクションが既定によっ
て自動コミットモードをもつのに対して,SQLJ コネクション文脈は,構造上,自動コミットモードを陽
に指定することを要求する。
4.12.4
コネクション資源管理
コネクション文脈オブジェクトの close メソッドの呼出しは,関連する JDBC Connection オブジェクト及
びもととなるデータベースコネクションを閉じる。コネクション文脈は,もととなるデータベースコネク
ションを他のコネクション文脈及び/又は JDBC コネクションと共有することが許されているので,コネク
ション文脈が閉じているとき,もととなるデータベースコネクションを閉じることは好ましくないかもし
れない。プログラマは,もととなるデータベースコネクションを実際に閉じないで,コネクション文脈に
よって維持される資源(例えば,文ハンドル)を解放したいかもしれない。このために,コネクション文脈
27
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
クラスは,もととなるデータベースコネクションを閉じるかどうか示すブール引数を受け取る close メソ
ッドも提供する。
データベースコネクションを閉じることが望ましいならば,
定数 CLOSE_CONNECTION
を渡し,データベースコネクションを維持することが望ましいならば,定数 KEEP_CONNECTION を渡
す。引数をもたない別形式の close は,close(CLODE_CONNECTION)を呼び出すための省略形式とする。
コ ネ ク シ ョ ン 文 脈 オ ブ ジ ェ ク ト が メ モ リ 回 収 さ れ る 前 に 陽 に 閉 じ ら れ て い な い な ら ば ,
close(KEEP_CONNECTION)
がコネクション文脈の終了メソッドによって呼び出される。これは,もとと
なるデータベースコネクションを用いているかもしれない他の JDBC 及び SQLJ オブジェクトのために,
そのデータベースコネクションを維持しながら,通常のメモリー回収処理によってコネクション関連の資
源が回収されることを許す。そのコネクションを用いている他の JDBC 及び SQLJ オブジェクトがないな
らば,そのデータベースコネクションも,閉じられ,メモリー回収処理によって回収される。
SQLJ コネクション文脈オブジェクト及び JDBC コネクションオブジェクトの両方が close メソッドに応
答する。SQLJ プログラムを書いているとき,コネクション文脈オブジェクトに対して close メソッドを呼
び出すだけで充分とする。これは,コネクション文脈を閉じることは,それに関連する JDBC コネクショ
ンも閉じるからである。しかし,コネクション文脈の getConnection メソッドによって戻される JDBC コ
ネクションだけを閉じるのでは充分でない。これは,JDBC コネクションの close メソッドがそれを含んで
いるコネクション文脈を閉じないからであり,
したがって,
コネクション文脈によって維持される資源は,
メモリー回収されるまで解放されない。
コネクション文脈の isClosed メソッドは,そのコネクション文脈オブジェクトに対していずれかの形式
の close メソッドが呼び出されていたならば,真を戻す。isClosed が真であるならば,close を呼び出して
も何の操作も行われず,他のどのメソッドの呼出しの効果も,処理系依存とする。
4.13 SQL
実行制御及び状態
SQL 操作の実行の意味は,その操作に関連した実行文脈によって問い合わされ,そして修正されること
ができる。実行文脈は,sqlj.runtime.ExecutionContext クラスのインスタンスとして存在する。
次の ExecutionContext Java フィールドは,
SQL 操作の実行環境を制御する。getXXX メソッド及び setXXX
メソッドは,XXX の値を読み込み,変更する。一度設定すると,それらは,その実行文脈で続けて実行さ
れるすべての SQL 操作に影響を与える。
— MaxRows は,問合せによって戻される最大行数を指定する。
— MaxFieldSize は,列又は出力変数に対してデータとして戻される最大バイト数を指定する。
— QuerytTimeout は,SQL 操作が完了するのを待つための秒数を指定する。
参考 5 上の ExecutionContext Java フィールドの実行時支援は,それらの既定値以外の何らかの値が
設定されるならば,中核 SQLJ の一部ではない。このような支援が提供されるかどうかは,
処理系定義とする。割り当てられた設定を処理系が提供しないならば,ExecutionContext をも
つ 文 を 登 録 す る 試 み は , SQLException 条 件 :OLB
特 有 誤 り
—
提 供
さ れ て い な い 機 能
(OLB-specific error
―
unsupported feature)
を引き起こす。
次の ExecutionContext Java フィールドは,実行された最後の SQL 操作の結果を記述する。
— UpdateCount は,最後の操作の間に更新,挿入又は削除された行数を指定する。
— SQLWarnings は,最後の操作の間に引き起こされた何らかの警告を記述する。
実行文脈は,SQLJ プログラム中に現れるそれぞれの実行可能な SQL 操作と暗に又は陽に関連付けられ
る。実行文脈は,それぞれの SQL 操作に対する引数として陽に与えることができる。
陽な実行文脈を用いるならば,それぞれの SQL 操作を異なる実行文脈のオブジェクトを用いて実行する
28
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
ことができる。陽なコネクション文脈も用いるならば,両方を SQL 操作に対して引数として渡すことが許
される。
実行文脈が SQL 操作に対する引数として陽に提供されないならば,既定の実行文脈が暗に用いられる。
特 定 の SQL 操 作 の た め の 既 定 の 実 行 文 脈 は , そ の 操 作 の 中 で 用 い ら れ る コ ネ ク シ ョ ン 文 脈 の
getExecutionContext( )メソッドによって取得される。
コネクション文脈と実行文脈のどちらも陽に提供されないならば,既定のコネクション文脈に関連付け
られた実行文脈が用いられる。
陽な実行文脈の利用は,SQL 句によって陽に又は暗に参照されるコネクション文脈に関連付けられた実
行文脈を置き換える。
4.14
反復子
SQL にとって重要な能力は,データベースから行の“結果集合”を検索する問合せを実行する能力とす
る。SQLJ 句は,問合せを評価し,その問合せによって選択される結果集合を含む
結果集合反復子
(result set
iterator)
オブジェクトを戻す。反復子オブジェクトの型によって,ホスト変数にデータを抽出するために
SQL の FETCH…INTO 構文とともに用いることが許され,又は問合せによって戻される列の名前及び型
をもっている名前付き列取出しメソッドを通して列データを戻してもよい。反復子宣言句は,Java クラス
定義が現れてもよいところではどこでも,現れることが許される。
. SQLJ
反復子
(iterator)
は,sqlj runtime ResultSet Iterator インタフェースを実装する Java オブジェクト
とし,そこから SQL 問合せによって戻されるデータを検索することができる。その役割において,それは,
そこからデータが取り出される SQL の
カーソル
(cursor)
に対応する。しかし,カーソルとは違って,反復
子オブジェクトは,最初のクラスオブジェクトとする。反復子オブジェクトは,パラメタとしてメソッド
に渡すことができ,コンポーネントインタフェースの型検査の目的のために静的な型を失うことなしに,
それを生成する SQLJ 翻訳単位の外で用いることができる。
反復子オブジェクトは,関連する Java 型の一つ以上の列をもつ。Java 識別子である名前を反復子オブジ
ェクト列に対して任意に与えることができる。問合せによって選択される式が名前付きでないか,又は正
しい Java 識別子でない SQL 名をもつならば,それらに名前を付けるために SQL 列の別名を用いることが
できる。(Java 型をもつ)反復子オブジェクトの列は,(SQL 型をもつ)問合せの列とは概念的に異なり,した
がって,一方を他方と組合せる方法を選択しなければならない。SQLJ は,反復子オブジェクトの列を問
合せの列と組合せるための二つの機構を提供する。それらは,
位置による結合
(bind by position)
及び
名前
による結合
(bind by name)
とする。
位置による結合
は,反復子オブジェクトの列の宣言の左から右への順序に,それらを SQL 問合せ中で選
択される式に対応させることを意味する。従来の FETCH…INTO 構文は,反復子オブジェクトから Java
変数にデータを取り出すために用いる。位置によって結合する反復子クラスは,反復子オブジェクトによ
って戻される行の列ごとに一つのデータ型をコンマで区切ったリストを括弧で囲んで与えることによって
宣言する。そのリストは,列のデータ型だけを指定し,列の名前を指定しない。リストの中のデータ型は,
反復子オブジェクトによって戻される行の列のデータ型と正確に同じ順序で現れなければならない。問合
せ中の SQL 列の型は,SQLJ の SQL 型から Java 型への対応付けに従って,位置的に対応する反復子オブ
ジェクトの列の型に変換可能でなければならない。例示スキーマへのデータベースコネクションが SQLJ
翻訳プログラムに対して与えられるならば,それらの変換は,SQLJ 翻訳時に静的に検査される。
名前による結合
は,反復子オブジェクトの各列の名前が,その列が問合せの中に現れる順序に依存しな
いで,SQL 問合せによって戻される列の名前に一致することを意味する。名前付き列取出しメソッドは,
29
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
反復子オブジェクトの各列に対して,SQLJ 翻訳プログラムによって生成される。名前付き列取出しメソ
ッドの名前は,問合せによって戻される列の名前と一致し,その戻り型は,反復子オブジェクト列の Java
型とする。名前付き列取出しメソッドがデータを転送するための機構を提供するので,FETCH…INTO 構
文をこの型の反復子オブジェクトとともに用いることは許されない。名前によって結合する反復子クラス
は,反復子オブジェクトによって戻される行の列ごとに一つのデータ型及び識別子をコンマで区切ったリ
ストを括弧で囲んで与えることによって宣言する。そのリストは,反復子オブジェクトによって戻される
行の各列のデータ型及び名前を指定する。そのリスト中のデータ型及び識別子の並びは,反復子オブジェ
クトによって戻される行の列と同じ並びである必要はない。Java コンパイラは,名前付き列取出しメソッ
ドの利用で型不一致の誤りを検知する。さらに,翻訳時に例示スキーマへのコネクションが与えられるな
らば,SQLJ 翻訳プログラムは,それに関連する SQL 問合せに対して,反復子オブジェクトの列の型及び
名前の妥当性を静的に検査する。
反復子宣言句は,その反復子型のオブジェクトが位置による結合を用いるか,又は名前による結合を用
いるかどうかを示す。結果集合データへのアクセスの二つの様式は,互いに排他的とする。反復子クラス
は,位置による結合又は名前による結合のいずれかを提供するが両方は提供しない。プログラム開発ツー
ルは,
“構成によって正しい”SQLJ コードを生成することができるので,位置による結合を用いる SQLJ
プログラムを生成することを好むかもしれない。SQLJ プログラムを“人手で”書いている人達は,彼ら
の適用業務プログラムをプログラム又はデータベーススキーマの変更に対して弾力性をもたせるために,
名前による結合を用いることを好むかもしれない。
4.15
入力及び出力の代入可能性
表 2“SQLJ 出力代入可能性”が,SQL 型 ST の JDBC 型コードに対する列,及び Java 型 JT が最初の列
中で指定される行によって識別されるセルに‘x’を含むならば,ST は,JT に対して SQLJ
出力代入可能
(SQLJ output assignable)
とする。さらに,構造型及び個別型(すなわち,型コード STRUCT 及び DISTINCT)
に対しては,次の条件を満たさなければならない。
— ST の型コードが DISTINCT 又は STRUCT のいずれかであり,JT が表 2“SQLJ 出力代入可能性”の
最初の列中で識別される型の一つでない(すなわち,
“他のいずれかのクラス/インタフェース”が当
てはまる)ならば,出力代入可能性が検査される SQLJ 句のコネクション文脈クラスに関連する利用
者定義型対応は,ST に対応する Java 型 JT を指定しなければならない。
— ST の型コードが DISTINCT であり,JT が表 2“SQLJ 出力代入可能性”の最初の列中で識別される
型の一つならば,ST を表現する型か,又は出力代入可能性が検査される SQLJ 句のコネクション文
脈クラスにおいて ST のために変換グループが指定されており,その変換グループの FROM-SQL 変
換関数若しくはメソッドの結果型のいずれかである SQL 型 ST1 が存在する。ST1 は,JT に対して
SQLJ 出力代入可能でなければならない。
— ST の型コードが STRUCT であり,JT が表 2“SQLJ 出力代入可能性”の最初の列で識別される型の
一つならば,出力代入可能性が検査される SQLJ 句のコネクション文脈クラスにおいて ST のために
変換グループが指定されており,その変換グループの FROM-SQL 変換関数又はメソッドの結果型
が JT に対して SQLJ 出力代入可能である。
30
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
表 2 SQLJ 出力代入可能性
java.sql.Types
定数 (
1
)
Java
データ型及びクラス
TI
SI
IN
BI
RL
FL
DB
DC
boolean
x
x
x
x
x
x
x
x
byte
x
x
x
x
x
x
x
x
short
x
x
x
x
x
x
x
x
int
x
x
x
x
x
x
x
x
long
x
x
x
x
x
x
x
x
float
x
x
x
x
x
x
x
x
double
x
x
x
x
x
x
x
x
java.lang.Boolean
x
x
x
x
x
x
x
x
java.lang.Byte
x
x
x
x
x
x
x
x
java.lang.Short
x
x
x
x
x
x
x
x
java.lang.Integer
x
x
x
x
x
x
x
x
java.lang.Long
x
x
x
x
x
x
x
x
java.lang.Float
x
x
x
x
x
x
x
x
java.lang.Double
x
x
x
x
x
x
x
x
java.lang.String
x
x
x
x
x
x
x
x
java.math.BigDecimal
x
x
x
x
x
x
x
x
byte ]
java.sql.Blob
java.sql.Clob
java.sql.Date
java.sql.Ref
java.sql.Time
java.sql.Timestamp
sqlj.runtime.AsciiStream
sqlj.runtime.BinaryStream
sqlj.runtime.CharacterStream
sqlj.runtime.UnicodeStream
他のいずれかのクラス
/
インタフェース
Java
データ型及びクラス
NU
BT
CH
VC
LC
CL
BI
VB
boolean
x
x
x
x
x
byte
x
x
x
x
x
short
x
x
x
x
x
int
x
x
x
x
x
long
x
x
x
x
x
float
x
x
x
x
x
double
x
x
x
x
x
java.lang.Boolean
x
x
x
x
x
java.lang.Byte
x
x
x
x
x
java.lang.Short
x
x
x
x
x
java.lang.Integer
x
x
x
x
x
java.lang.Long
x
x
x
x
x
java.lang.Float
x
x
x
x
x
java.lang.Double
x
x
x
x
x
java.lang.String
x
x
x
x
x
x
x
java.math.BigDecimal
x
x
x
x
x
byte ]
x
x
java.sql.Blob
java.sql.Clob
x
31
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
表 2 SQLJ 出力代入可能性(続き)
java.sql.Types
定数 (
1
)
Java
データ型及びクラス
NU
BT
CH
VC
LC
CL
BI
VB
java.sql.Date
x
x
x
java.sql.Ref
java.sql.Time
x
x
x
java.sql.Timestamp
x
x
x
sqlj.runtime.AsciiStream
x
x
x
x
x
sqlj.runtime.BinaryStream
x
x
sqlj.runtime.CharacterStream
x
x
x
x
x
sqlj.runtime.UnicodeStream
x
x
x
x
x
他のいずれかのクラス
/
インタフェース
Java
データ型及びクラス
LB
BL
DT
TM
TS
RF
DS
ST
boolean
byte
short
int
x
x
long
float
double
x
x
java.lang.Boolean
java.lang.Byte
java.lang.Short
java.lang.Integer
java.lang.Long
java.lang.Float
java.lang.Double
x
x
java.lang.String
x
x
x
x
x
x
java.math.BigDecimal
byte[ ]
x
x
x
java.sql.Blob
x
x
x
java.sql.Clob
java.sql.Date
x
x
x
x
java.sql.Ref
x
java.sql.Time
x
x
x
x
java.sql.Timestamp
x
x
x
x
sqlj.runtime.AsciiStream
x
x
x
sqlj.runtime.BinaryStream
x
x
x
sqlj.runtime.CharacterStream
x
x
x
sqlj.runtime.UnicodeStream
x
x
x
他のいずれかのクラス
/
インタフェース
Java
データ型及びクラス
JO
OT
boolean
byte
short
int
long
float
double
java.lang.Boolean
java.lang.Byte
32
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
表 2 SQLJ 出力代入可能性(続き)
java.sql.Types
定数 (
1
)
Java
データ型及びクラス
JO
OT
java.lang.Short
java.lang.Integer
java.lang.Long
java.lang.Float
java.lang.Double
java.lang.String
java.math.BigDecimal
byte ]
java.sql.Blob
java.sql.Clob
java.sql.Date
java.sql.Ref
java.sql.Time
java.sql.Timestamp
sqlj.runtime.AsciiStream
sqlj.runtime.BinaryStream
sqlj.runtime.CharacterStream
sqlj.runtime.UnicodeStream
他のいずれかのクラス
/
インタフェース
x
x
注(
1
)
ここで,TI は TINYINT に対応, SI は SMALLINT に, IN は INTEGER に, BI は BIGINT に, RL は REAL に,
FL は FLOAT に, DB は DOUBLE に, DC は DECIMAL に, NU は NUMERIC に, BT は BIT に, CH は CHAR
に, VC は VARCHAR に, LC は LONGVARCHAR に,CL は CLOB に, BI は BINARY に, VB は VARBINARY
に, LB は LONGVARBINARY,に BL は BLOB に, DT は DATE に, TM は TIME に, TS は TIMESTAMP に, RF
は REF に, DS は DISTINCT に, ST は STRUCT に, JO は JAVA_OBJECT に,そして OT は OTHER に対応す
る。
表 3“SQLJ 入力代入可能性”が,SQL 型 ST の JDBC 型コードに対する列,及び Java 型 JT が最初の列
中で指定される行によって識別されるセルに“x”を含むならば,JT は,ST に対して SQLJ
入力代入可能
(SQLJ input assignable)
とする。さらに,構造型及び個別型(すなわち,型コード STRUCT 及び DISTINCT)
に対しては,次の条件を満たさなければならない。
— ST の型コードが DISTINCT 又は STRUCT のいずれかであり,JT が表 3“SQLJ 入力代入可能性”の
最初の列中で識別される型の一つでない(すなわち,
“他のいずれかのクラス/インタフェース”が当
てはまる)ならば,入力代入可能性が検査される SQLJ 句のコネクション文脈クラスに関連する利用
者定義型対応は,ST に対応する Java 型 JT を指定しなければならない。
— ST の型コードが DISTINCT であり,JT が表 3“SQLJ 入力代入可能性”の最初の列中で識別される
型の一つならば,ST を表現する型か,又は入力代入可能性が検査される SQLJ 句のコネクション文
脈クラスにおいて ST のために変換グループが指定されており,その変換グループの TO-SQL 変換
関数若しくはメソッドの入力パラメータ型のいずれかである SQL 型 ST1 が存在する。JT は,ST1
に対して SQLJ 入力代入可能でなければならない。
— ST の型コードが STRUCT であり,JT が表 3“SQLJ 入力代入可能性”の最初の列で識別される型の
一つならば,入力代入可能性が検査される SQLJ 句のコネクション文脈クラスにおいて ST のために
変換グループが指定されており,その変換グループの TO-SQL 変換関数又はメソッドの入力パラメ
ータ型に対して JT が SQLJ 入力代入可能である。
33
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
表 3 SQLJ 入力代入可能性
java.sql.Types
定数 (
1
)
Java
データ型及びクラス
TI
SI
IN
BI
RL
FL
DB
DC
boolean
x
x
x
x
x
x
x
x
byte
x
x
x
x
x
x
x
x
short
x
x
x
x
x
x
x
x
int
x
x
x
x
x
x
x
x
long
x
x
x
x
x
x
x
x
float
x
x
x
x
x
x
x
x
double
x
x
x
x
x
x
x
x
java.lang.Boolean
x
x
x
x
x
x
x
x
java.lang.Byte
x
x
x
x
x
x
x
x
java.lang.Short
x
x
x
x
x
x
x
x
java.lang.Integer
x
x
x
x
x
x
x
x
java.lang.Long
x
x
x
x
x
x
x
x
java.lang.Float
x
x
x
x
x
x
x
x
java.lang.Double
x
x
x
x
x
x
x
x
java.lang.String
x
x
x
x
x
x
x
x
java.math.BigDecimal
x
x
x
x
x
x
x
x
byte ]
java.sql.Blob
java.sql.Clob
java.sql.Date
java.sql.Ref
java.sql.Time
java.sql.Timestamp
sqlj.runtime.AsciiStream
sqlj.runtime.BinaryStream
sqlj.runtime.CharacterStream
sqlj.runtime.UnicodeStream
他のいずれかのクラス
/
インタフェース
Java
データ型及びクラス
NU
BT
CH
VC
LC
CL
BI
VB
boolean
x
x
x
x
x
byte
x
x
x
x
x
short
x
x
x
x
x
int
x
x
x
x
x
long
x
x
x
x
x
float
x
x
x
x
x
double
x
x
x
x
x
java.lang.Boolean
x
x
x
x
x
java.lang.Byte
x
x
x
x
x
java.lang.Short
x
x
x
x
x
java.lang.Integer
x
x
x
x
x
java.lang.Long
x
x
x
x
x
java.lang.Float
x
x
x
x
x
java.lang.Double
x
x
x
x
x
java.lang.String
x
x
x
x
x
x
x
java.math.BigDecimal
x
x
x
x
x
byte ]
x
x
java.sql.Blob
java.sql.Clob
x
34
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
表 3 SQLJ 入力代入可能性(続き)
java.sql.Types
定数 (
1
)
Java
データ型及びクラス
NU
BT
CH
VC
LC
CL
BI
VB
java.sql.Date
x
x
x
java.sql.Ref
java.sql.Time
x
x
x
java.sql.Timestamp
x
x
x
sqlj.runtime.AsciiStream
x
x
x
x
x
x
sqlj.runtime.BinaryStream
x
x
sqlj.runtime.CharacterStream
x
x
x
x
x
x
sqlj.runtime.UnicodeStream
x
x
x
x
x
x
他のいずれかのクラス
/
インタフェース
Java
データ型及びクラス
LB
BL
DT
TM
TS
RF
DS
ST
boolean
byte
short
int
x
x
long
float
double
x
x
java.lang.Boolean
java.lang.Byte
java.lang.Short
java.lang.Integer
java.lang.Long
java.lang.Float
java.lang.Double
x
x
java.lang.String
x
x
x
x
x
x
java.math.BigDecimal
byte[ ]
x
x
x
java.sql.Blob
x
java.sql.Clob
java.sql.Date
x
x
x
x
java.sql.Ref
x
java.sql.Time
x
x
x
x
java.sql.Timestamp
x
x
x
x
sqlj.runtime.AsciiStream
x
x
x
sqlj.runtime.BinaryStream
x
x
x
x
sqlj.runtime.CharacterStream
x
x
x
sqlj.runtime.UnicodeStream
x
x
x
他のいずれかのクラス
/
インタフェース
Java
データ型及びクラス
JO
OT
boolean
y
short
int
long
o
double
java.lang.Boolean
java.lang.Byte
35
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
表 3 SQLJ 入力代入可能性(続き)
java.sql.Types
定数 (
1
)
Java
データ型及びクラス
JO
OT
java.lang.Short
java.lang.Integer
java.lang.Long
java.lang.Float
java.lang.Double
java.lang.String
java.math.BigDecimal
byte ]
java.sql.Blob
java.sql.Clob
java.sql.Date
java.sql.Ref
java.sql.Time
java.sql.Timestamp
sqlj.runtime.AsciiStream
sqlj.runtime.BinaryStream
sqlj.runtime.CharacterStream
sqlj.runtime.UnicodeStream
他のいずれかのクラス
/
インタフェース
x
x
注(
1
)
ここで,TI は TINYINT に対応, SI は SMALLINT に, IN は INTEGER に, BI は BIGINT に, RL は REAL に, FL
は FLOAT に, DB は DOUBLE に, DC は DECIMAL に, NU は NUMERIC に, BT は BIT に, CH は CHAR に, VC
は VARCHAR に, LC は LONGVARCHAR に,CL は CLOB に, BI は BINARY に, VB は VARBINARY に, LB は
LONGVARBINARY,に BL は BLOB に, DT は DATE に, TM は TIME に, TS は TIMESTAMP に, RF は REF に,
DS は DISTINCT に, ST は STRUCT に, JO は JAVA_OBJECT に,そして OT は OTHER に対応する。
4.16
格納手続及び格納関数の呼出し
データベースは,
格納手続
(stored procedure)
及び
格納関数
(stored function)
を含むことができる。利用者
定義手続及び利用者定義関数は,データベース中で実行する名前付きスキーマオブジェクトとする。格納
手続及び格納関数は,X 3005-4 で規定している SQL 制御文も含めて,いろいろなプログラム言語で実装さ
れている。Java 文として現れる SQLJ 実行可能句は,SQL の CALL 文によって格納手続を呼び出すことが
できる。
参考 6 格納手続及び格納関数の呼出しの提供は,中核 SQLJ に適合するための要件ではない。
格納手続は,IN, OUT 又は INOUT パラメタをもつことができる。
SQLJ 実行可能句は,SQL の VALUES 構成要素によって格納関数を呼び出すことができる。
4.17
格納手続呼出しからの複数の JDBC 結果集合 ResultSet オブジェクト
ある状況では,単一の SQL CALL 文は,複数の JDBC ResultSet オブジェクトを戻すかもしれない。SQL
には,
正式な OUT 又は INPUT パラメータとして JDBC ResultSet オブジェクトを定義する機構がないので,
このような JDBC ResultSet オブジェクトは,
側面チャネル
(side-channel)
結果集合として参照される。
ExecutionContext メソッド“getNextResultSet”は,これらの結果を次々と進んでいくことを許す。
あ る ExecutionContext execCon を SQL CALL 文 に 関 連 し て 暗 に 又 は 陽 に 用 い た 後 の , exec
Con.getNextResultSet
の最初の呼出しは,その CALL 文によって生成される最初の側面チャネル結果集合
を戻す。それに続く getNextResultSet の呼出しは,現在の JDBC ResultSet オブジェクトを閉じて,次に進
む。これ以上の側面チャネル結果集合がないならば,getNextResultSet は,ナルを戻す。
36
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
4.17.1
複数の結果に関する資源管理
通常の状況の下では,SQL 操作の実行に関連する資源は,実行が完了するとすぐに解放される。しかし,
複数の結果があるならば,すべての結果が getNextResultSet を用いて処理されるまで,その資源が開放さ
れない。したがって,格納手続が側面チャネル結果集合を戻すかもしれないならば,プログラマは,常に,
ナルが戻されるまで getNextResultSet を用いて,すべての結果を処理することが望ましい。未処理の結果
をもつ実行文脈が別の SQL 操作を実行するために用いられるならば,未処理の結果は,放棄される。
格納手続の呼出しが側面チャネル結果集合を生成しないならば,getNextResultSet を呼び出す必要はな
い。すべての資源は,CALL の実行が完了するとすぐに,自動的に回収される。
4.18 JDBC/SQLJ
結果集合 ResultSet 相互運用性
動的 SQL と SQLJ の強い型付き反復子との間のやり取りを容易にするために,SQLJ は,SQLJ 反復子オ
ブジェクトから JDBC ResultSet オブジェクトを取得したり,JDBC ResultSet オブジェクトから SQLJ 反復
子オブジェクトを作成する方法を提供する。
4.18.1 JDBC
結果集合 ResultSet オブジェクトからの SQLJ 反復子の作成
SQLJ 反復子変換文は,JDBC ResultSet オブジェクトを SQLJ の強い型付き反復子オブジェクトとして操
作することを許す。JDBC ResultSet オブジェクト rs,及び強い型付きの SQLJ 反復子オブジェクト iter が
与えられると,反復子変換文は,rs の内容に基づく iter に対する新しい反復子オブジェクトを割り当てる
ために用いることができる。
#sql iter = {CAST :rs };
参考 7 反復子変換文によって作成される反復子オブジェクトを閉じることは,関連する JDBC
ResultSet オブジェクトもまた閉じる。
JDBC ResultSet オブジェクト中の列の型,名前及び数が宣言された反復子オブジェクトのそれらと互換
性があるという条件で,反復子変換文は,JDBC ResultSet オブジェクトから SQLJ の強い型付きの反復子
オブジェクトを実現させるために用いることができる。詳細は,<反復子変換句>を参照。
反復子オブジェクトが<反復子変換句>によって一度生成されると,元の JDBC ResultSet オブジェクトの
メソッドの呼出しの結果は,処理系定義とする。したがって,可搬性のあるコードは,反復子オブジェク
トに変換された JDBC ResultSet オブジェクトへの呼出しをそれ以上行ってはならない。
4.18.2 SQLJ
反復子オブジェクトからの JDBC 結果集合 ResultSet の取得
どの SQLJ 反復子オブジェクトも,そのデータの JDBC ResultSet オブジェクト表現を戻す getResultSet
メソッドをもつ。getResultSet メソッドは,sqlj.runtime.ResultSetIterator インタフェースの一
部分とし,そのインタフェースは,
(名前付き及び位置付けの両方の)SQLJ の強い型付き反復子クラスに
よって実装される。それは,問合せ結果が SQLJ 反復子オブジェクトではなく JDBC ResultSet を用いて処
理されることを許す。
getResultSet
メソッドの提供は,実行時処理系定義とし,中核 SQLJ の一部分ではない。このメソッドが
提供されてないならば,SQLException が引き起こされる。実行時処理系がこのメソッドを提供しているな
らば,
反復子オブジェクトと生成される JDBC ResultSet オブジェクトとの間の同期は,
処理系定義とする。
可搬性のために,getResultSet メソッドは,反復子オブジェクトの最初の next( )メソッド呼出しの前に呼
び出さなければならない。JDBC ResultSet オブジェクトが一度生成されると,データを取り出すすべての
操作は,JDBC ResultSet オブジェクトを介して行わなければならない。
4.18.3
型付けされていない反復子オブジェクトからの JDBC 結果集合 ResultSet オブジェクトの取得
SQLJ は,SQLJ 問合せの結果として,JDBC ResultSet オブジェクトの直接の作成を提供していない。SQLJ
37
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
問合せに関連付けられた JDBC ResultSet オブジェクトを取得するために,問合せの結果として SQLJ 反復
子オブジェクトが設定され,前の箇条に記述してあるとおりに,その反復子オブジェクトの getResultSet
メソッドが JDBC ResultSet オブジェクトを戻すために呼び出される。クライアントが JDBC ResultSet オブ
ジェクトだけを必要とし,強い型付き反復子オブジェクトとともに結果を処理したくない場合には,クラ
イアントは,その代わりに型付けされていない ResultSetIterator オブジェクトを用いることが許される。型
付けされていない ResultSetIterator オブジェクトは,インタフェース
sqlj.runtime.ResultSetIterato
r
のインスタンスとして宣言される。
ResultSetIterator インタフェースは,すべての SQLJ 反復子の最上位インタフェースであり,特に,
getResultSet
メソッド及び close メソッドを提供する。ResultSetIterator インタフェース自体は,SQLJ 問合
せの結果を取得し,後でそれらを JDBC ResultSet オブジェクトとしてクライアントに戻すために用いるこ
とができる。さらに,一度その結果が処理されてしまえば,それは,SQLJ 関連の資源を解放するために
用いられる。
型付けされていない ResultSetIterator オブジェクトは,SQLJ 問合せの結果を取得し,後で JDBC ResultSet
オブジェクトを用いてそれらにアクセスするための便利な方法を提供する。強い型付きの一方とは違い,
型付けされていない ResultSetIterator オブジェクトは,その他のクラス宣言を必要としない。SQLJ 問合せ
中で型付けされていない ResultSetIterator オブジェクトを用いるならば,選択リスト項目に関する翻訳時の
型検査が行われない。
4.18.4
反復子及び JDBC 結果集合 ResultSet 資源管理
SQLJ 反復子オブジェクトの close メソッドを呼び出すことは,(あるならば,)関連する JDBC ResultSet
オブジェクトを閉じる。反復子オブジェクトが,メモリ回収される前に陽に閉じられていないならば,そ
の反復子オブジェクトの終了メソッドが暗に close を呼び出す。反復子オブジェクトは,文ハンドルのよ
うな暗黙の資源を維持するので,メモリ回収処理を待つのではなく,反復子オブジェクトを陽に閉じるこ
とが重要とする。
SQLJ 反復子オブジェクト及び JDBC ResultSet オブジェクトの両方が close メソッドに応答する。反復子
オブジェクトが getResultSet メソッドによって JDBC ResultSet オブジェクトを生成するとき,反復子オブ
ジェクトだけを閉じることで,関連する JDBC ResultSet オブジェクトも閉じるので,十分である。しかし,
関連する JDBC ResultSet オブジェクトだけを閉じることは,それを含んでいる反復子オブジェクトを閉じ
ることにならず,したがって,反復子オブジェクトによって維持されている資源がメモリ回収されるまで
解放されないので,十分ではない。これらの制限は,名前付き反復子オブジェクト及び位置付け反復子オ
ブジェクトと同様に,型付き ResultSetIterator オブジェクトについても成り立つ。
反復子オブジェクトの isClosed メソッドは,close メソッドが反復子オブジェクトに対して呼び出された
ならば,真を戻す。isClosed が真ならば,close を呼び出しても何も操作されず,他のどのメソッドを呼び
出すことも,処理系定義とする。既に閉じられた JDBC ResultSet オブジェクトに対して,close を呼び出す
ことの意味は,処理系定義とする。
4.19
多重スレッドの考慮点
SQLJ は,多重スレッドの適用業務プログラムを書くために用いることができる。実行時の SQLJ は,同
じコネクション文脈を共有する多重スレッドを提供する。しかし,SQLJ プログラムは,もととなる DBMS
処理系によって課される同期制限に従う。DBMS 処理系が,特定のコネクションにおいて実行される文の
明示的な同期を任されて管理するならば,その処理系を用いる SQLJ プログラムは,SQL 操作の類似の同
期を要求する。
38
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
コネクション文脈は,スレッド間で安全に共有することができるが,実行文脈は,それらの利用を適切
に同期されるならば,共有させることが望ましい。実行文脈が共有されるならば,一つのスレッドによっ
て実行される SQL 操作の結果は,他のスレッド中で可視となる。両方のスレッドが SQL 操作を実行して
いるならば,一つのスレッドにおける実行の結果が,そのスレッドが本来の結果を処理してしまう前に,
次のスレッドにおける実行の結果によって上書きされるという競合条件が起こり得る。さらに,別のスレ
ッドにおける操作を実行するために現在用いている実行文脈を用いて,もう一つのスレッドが SQL 操作を
実行しようと試みるならば,実行時例外が引き起こされる。このような問題を避けるためには,SQL 操作
が共有コネクション文脈上で実行されるときにはいつでも,それぞれのスレッドは,互いに異なる実行文
脈を用いることが望ましい。
4.20
利用者定義データ型
SQLJ は,構造型及び個別型のような利用者定義データ型のインスタンスの操作を提供する。このよう
なデータ型のインスタンスは,特定のコネクション文脈クラスのために指定される型対応付け情報に基づ
く,適切な Java の型のホスト変数に取り出したり,それから生成したりすることができる。Java 資源バン
ドルは,型対応付け情報を指定するための機構として用いられる。
型対応付けは,
特性ファイル
(properties file)
中に含まれる一つ以上の項目において指定する。そのファ
イル中にあるそれぞれの特性項目は,Java クラスと SQL 利用者定義型との間の対応を定義する。その項目
では,SQL 型が構造型又は個別型であることを,それぞれ,型名に先行するキーワード STRUCT 又は
DISTINCT で示してもよい。このような指示は,省略可能とし,SQL 型が出力パラメータを登録するため
に要求される場合にあいまいさを解決するためにだけ必要とする。構造型及び個別型のための型対応付け
の定義に用いる Java クラスは,[JDBC2.0]の“Customizing SQL Types”という章中で規定される要件を完全
に満たさなければならない。言い換えれば,それらは,それぞれの SQL 型のインスタンスからのデータを
Java クラスの新しく生成されるインスタンスに与えるために,SQLJ の実行時処理系によって用いられる
インタフェース java.sql.SQLData を実装しなければならない。
特性ファイル中に指定される型対応は,次の方法で,コネクション文脈宣言の一部分としてコネクショ
ン文脈クラスに付加することができる。
#sql context Ctx with (typeMap = "packagename.filename");
SQLJ 翻訳プログラム及び実行時処理系は,Java 資源バンドルファミリ名として,指定された型対応を
解釈し,Java クラスパスを用いて適切な特性ファイル又はクラスファイルを探す。これは,適用業務プロ
グラマが SQLJ 適用業務又は適用業務モジュールの残りとともに,型対応を簡単にパッケージ化できるこ
とを意味する。
SQLJ 適用業務プログラムは,型対応に関わっている Java 型に基づいて,ホスト変数又は反復子オブジ
ェクトを定義することができる。
位置付け反復子オブジェクトは,特性ファイル中で対応付けられた利用者定義型のインスタンスを含む
データを取り出すために,FETCH...INTO 文と連携して用いられる。
同じ方法で,利用者定義型に対応する型の Java 変数は,ホスト変数として,及びホスト式中で,名前付
き反復子オブジェクトの定義のために用いることができる。
SQLJ 翻訳プログラムは,利用者定義型の型の正しさも検査する。
この機構は,SQL 型階層及び対応する Java クラス階層も扱う。
4.21
一括更新
一括更新は,複数の文を一まとめのグループにし,一往復で実行のためにデータベースに一括して送る
39
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
ことを許す。この機能は,ループ内の一連の UPDATE,INSERT 又は DELETE 文のために,典型的に用い
られる。この箇条は,どのように SQLJ が一括更新を提供するかを概説する。
4.21.1
一括可能な文及び一括互換性
一括可能な文は,実行時に一括して実行するために,一つ以上の他の文とともにグループにすることが
できる文とする。このような一括可能な文のグループを,文一括又は単に一括と呼ぶ。JDBC と同様に,
SQLJ における一括は,選択可能な機能とする。したがって,特定の文が一括可能であるかどうかは,実
行時に文を実行するために用いるコネクション及び仕立て処理に依存する。一般に,出力パラメタのない
DML,DDL 及び格納手続は,一括可能とみなされる。
次の型の文は,決して一括可能ではない。
• 問合せ(単一行及び複数行)
• トランザクション制御(COMMITT,ROLLBACK,SET TRANSACTION)
• 出力パラメタのある文(格納関数,PSM の代入,出力又は側面チャネル結果のある格納手続,出力
のあるブロック)
文が一括可能であり,かつ特定の文一括に互換である (追加することができる) ならば,その文は,そ
の一括と
一括互換
(batch compatible)
とする。特定の文が特定の文一括と一括互換であるかどうかは,実行
時に文を実行するために用いるコネクション及び仕立て処理に依存する。JDBC 2.0 に基づく処理系に関し
ては,一つ以上の入力パラメタをもつ一括可能文は,同じ文の他のインスタンスとだけ一括可能とする。
入力パラメタをもたない一括可能文は,入力パラメタをもたない他の文とだけ一括可能とする。しかし,
JDBC 2.0 API だけに依存しない実行時処理系は,更に入力パラメータをもつ関連しない文も一緒にして一
括にすることを許してもよい。どんな一括可能文も,同じコネクションを用いて作成される他のどの一括
可能文と潜在的に一括にしてもよい。
(異なるコネクションを用いて,)異なるデータベースに対して実行される二つの一括可能文は,決して
一括互換ではない。
4.21.2
文一括化 API
SQLJ では,一括更新機能は,
ExecutionContext
クラスの
setBatching
メソッドを用いて有効化され
る。(
setBatching
によって)特定の実行文脈オブジェクト上で一括化が有効化されると,実行されるどの
一括可能文も,一括実行のために遅延させられる。このような場合,実行文脈オブジェクトは,
保留の文
一括
(pending statement batch)
を含むという。後続の文の再実行は,(おそらく異なるホスト式の値をもつ)
その文を文一括に再び追加することになる。保留の文一括は,
ExecutionContext.executeBatch( )
を用
いて,いつでも陽に実行することができる。
前述の定義によって,保留の文一括が特定の実行文脈オブジェクト上に存在して,かつ一括互換の文が
実行されるならば,その文は,遅延実行のために一括に追加される。文が文一括中の他のすべてと同じな
らば,その文は,一括互換とする。(おそらくホスト式の束縛値だけが異なる)同じ文のインスタンスだけ
を含む文一括を,
同質の一括
(homogeneous batch)
と呼ぶ。一つ以上の文が一括中の他の文と異なる
異質の
一括
(heterogeneous batch)
をもつことも可能とする。典型的に,異質の一括は,どんな束縛式も含まない
文からなる。
特定の文が一括可能であるという事実は,
それがすべての文一括と互換であるということを意味しない。
実行時コネクション及び仕立て処理が最終的に一括互換性を決定する。JDBC 2.0 に基づく処理系に関して
は,束縛式をもつ文だけを同質の一括に追加することができ,異質の一括は,束縛式をもたない文だけを
含むことができる。現行の文一括と互換でない一括可能な文が実行されると,その文一括は,暗に実行さ
40
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
れ,その文は,新しい文一括に追加される。同様に,(SELECT 又は COMMIT のような)一括可能でない文
が実行されると,その文の実行の前に文一括が暗に実行される。一括を暗に実行することは,プログラム
が
executeBatch(
)を陽に呼び出さないで一括更新を用いることを許す。
最後に暗に実行された一括の結果による更新行数は,メソッド
ExecutionContext.getBatchUpdate
Counts(
)を用いて得られることに注意すること。
ある実行文脈オブジェクトは,一度に一つの文一括だけを管理することができる。互いに一括互換でな
い二つの文を一括にしたいクライアントは,二つの異なる実行文脈オブジェクトを用いなければならない。
実行文脈オブジェクトの陽な指定が一括更新のために要求されないということに注意することが望まし
い。代替手段として,一括化は,特定のコネクション文脈オブジェクト内に含まれる実行文脈オブジェク
ト上で可能にすることができる。
4.21.3
実行状態及び更新行数
文が実行される代わりに一括化されるとき,
ExecutionContext.getUpdateCount(
)
の呼出しは,新しい
文一括が作成されたならば,定数 ExecutionContext.NEW_BATCH_COUNT
を戻し,その文が保留の文一括に追
加されたならば,定数
ExecutionContext.ADD_BATCH_COUNT
を戻す。この定数を検査することは,最後
の文が一括化されたかどうか,及びそうであるならば,その文が保留の一括に追加されたのか又は新しい
一括化を開始したのかどうかを決定するための信頼できる方法とする。
保留の文一括が存在するとき,
ExecutionContext.executeBatch( )
の呼出しは,その一括を実行する。
更新行数には,ExecutionContext.EXEC_BATCH_COUNT
が設定される。
int
型の配列に,一括中の各文の個々
の更新行数が反映されて戻される。配列は,文が一括に追加された順序に従って順序付けられる。最後に
実行された一括に対する更新行数配列は,メソッド
ExecutionContext.getBatchUpdateCounts(
)を用
いて取得することもできる。これは,一括が陽にではなく暗に更新されたときに,特に役に立つ。
getBatchUpdateCounts( )
によって戻される配列は,
最後に成功した
executeBatch(
)に対する暗に又は陽
に呼び出した結果を反映する。それは,文が一括中に挿入された順序に従って順序付けられ,各要素は,
更新行数,又は一般的な成功を示す標識としての値-2 若しくは一般的な失敗を示す標識としての値-3 のい
ずれかを含む。
一括実行の間に失敗が引き起こされ,一括の残りの部分が実行されることを妨げるならば,
戻される配列は,元の一括よりも短いかもしれず,—この場合—各要素は,負でない更新行数か,又は一
般的な成功を示す標識としての値-2 のいずれかを含まなければならない。
executeBatch( )
に対する呼出
しが例外で終わるとき,
配列は,
更新されない。一括がまだ完了していなかったならば,その配列は,ナル値とする。
4.21.4
プログラムの意味及び例外
文一括が executeBatch( )を用いて実行されるとき,一括中に含まれる文は、順序どおりに実行される。
文のうちの一つの実行が例外で終わるならば,残りの文が実行されず,executeBatch( )によって例外が引き
起こされる。しかし,一括中でそれより前に実行された文をその例外がロールバックしないということに
注意すること。これに適合した場合,例外は,java.sql.SQLException を拡張して,成功終了した一括中の
文に関する情報を追加した java.sql.BatchUpdateException のインスタンスとする。別の文を実行した結果と
して文一括が暗に実行され,かつその一括の実行が例外に終わるならば,一括実行を引き起こした文は,
実行されない。
例外は,一括の途中で起こり得るので,一括更新を用いるとき,自動コミットを解除しておくことが一
般的に推奨される。自動コミットを無効化することは,誤りが引き起こされ,一括中の文の幾つかの実行
が失敗するという事象においてトランザクションをコミットするかどうかを適用業務プログラムが決定さ
せる。
41
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
上の規則によって示されるとおり,一括更新を用いるプログラムの実行の意味は,一括更新を用いない
プログラムと幾らか異なる。これらの違いを次のリスト中に要約する。
— 単一の例外は,それぞれの個々の文に対してではなく,文の一括に対して引き起こされる。
— 例外が一度引き起こされると,文一括中の保留の文の残りが実行されない。その例外を処理し,そ
れらの残りの文の実行を続けるための便利な方法がない。
— 文を最初に実行するときではなく,一括が実行されるまで,文の実行が遅延される。別の文の実行
の間に一括が暗に実行されるとき,一括実行の結果としての例外が,現在の文の実行の結果として
引き起こされるように見えるかもしれない。
一括化された文を用いるとき,一括が実行されるまで,その文一括に依存する文が実行されないことを
確実にするのは,クライアントの責任とする。一括化されていない実行文脈オブジェクト上で実行される
文が一括化されている実行文脈オブジェクト上で実行される文と交互に動作するときには,特別な注意を
払 う こ と 。 こ れ は , COMMIT 文 に も 適 用 さ れ る 。 す な わ ち , 保 留 の 文 一 括 が あ る と き に
Connection.commit( )
を発行することが
文一括を暗に実行
しない
。
データベースアクセスがプログラム中
に現れる SQL 文に限定されずに,JDBC, RMI, CORBA 及び EJB の呼出しを含んでもよいことを覚えてお
くこと。
一括が別の文によって暗に実行されるとき,その一括は,その文が実行される前に実行されるが,入力
パラメータが評価され,その文に渡された後に実行される。入力パラメータを束縛し終えた後まで,一括
実行を遅延させることは,文が特定の一括と互換であるかどうか決定する前にできるだけ多くの情報を集
めることを実行時エンジンに許す。これは,例えば,それぞれの場合に,入力反復子オブジェクトが同じ
反復子オブジェクトであるならば,WHERE CURRENT OF を用いる位置付けの更新を一括化することを許
す。
4.21.5
一括取消し及び無効化
保留の文一括は,メソッド ExecutionContext.cancel( )を用いて,実行前に取り消すことができる。cancel( )
が一度呼び出されてしまうと,保留の一括は,消去され,もはや実行することができない。次に実行され
る一括可能文は,新しい文一括に追加される。
一括を含む実行文脈オブジェクトを破棄する前に,保留の文一括を実行するか又は取り消すかは,クラ
イアントの責任とする。実行文脈オブジェクトの終了処理は,保留の文一括を暗に実行すること又は取り
消すことはしない。
一括は,メソッド ExecutionContext.setBatching(false
)を用いて無効化することができる。この方法
で一括化を無効にすることは,文を保留の一括にそれ以上追加しないことを意味する。しかし,保留の一
括があるならば,それは,影響を受けない。それは,通常どおり,次の
executeBatch(
)の暗な若しくは
陽な呼出しによって実行されるか,又は
cancel(
)の呼出しによって取り消される。クライアントは,特
定 の 実 行 文 脈 オ ブ ジ ェ ク ト 上 で 一 括 が 現 在 有 効 化 さ れ て い る か ど う か 決 定 す る た め に , メ ソ ッ ド
ExecutionContext.isBatching( )
を用いることができる。このメソッドは,保留の一括が存在するかどうかで
はなく,一括が現在有効化されているかどうかを決定するためにだけ用いられることに注意すること。
4.21.6
一括化限界の仕様
メソッド ExecutionContext.setBatchLimit( )は,executeBatch( )の呼出しが暗に行われるのがよいことを利
用者が指定するのを許す。一括化限界は,次の方法で与えてもよい。
— 0 でない正の整数 n として — この場合,現在の一括サイズが n に達するときはいつでも,
executeBatch( )メソッドが実行される。
42
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
— 定数
ExecutionContext.UNLIMITED_BATCH
として — この場合,暗に実行される一括実行のため
の既に規定した条件のうちの一つが満たされない限り,executeBatch は,暗に呼び出されない。
— 定数 ExecutionContext.AUTO_BATCH として — この場合,SQLJ 実行時処理系によって選択され
た時点で,executeBatch( )メソッドが実行される。現在の一括が暗に実行される時点は,一括化のた
め記憶域が足りなくなる条件を合理的に避けるように選択することが望ましい。
既定によって,
ExecutionContext
オブジェクトは,
UNLIMITED_BATCH
の一括化限界に初期化される。
一括化限界を指定することを利用者に許すことによって,SQLJ プログラムは,一括化 SQLJ プログラムに
非常に容易に変更することができる。
ある Java 格納手続を呼び出すために別の Java 格納手続が SQLJ を用いるときのシナリオを考える。その
呼び出される Java 格納手続は,別の SQL 操作を実行するために同様に SQLJ を用いる。そして,両方が(し
ばしば,既定のコネクション文脈オブジェクトに関連付けられた)同じ実行文脈オブジェクトをもつ同じ
VM 中で実行される。この状況において,一括化のための振舞いは,類似の操作のための既存の振舞いと
一致する。
(
ExecutionContext.setBatching( )
によって設定される
)実行文脈オブジェクトの一括化属性は,他の
実行制御属性(最大フィールドサイズ,最大行数,問合せ制限時間)と同様に振る舞う。一度設定されると,
次の
#sql
操作が同じ呼出しレベルで行われるか,再帰的呼出しレベルで行われるか,又は外側の呼出しレ
ベルで行われるかどうかにかかわらず,次の
#sql
操作が実行を始めることに影響を与える。
保留の一括は,保留の側面チャネルの結果と同じ方法で扱われる。別の SQL 操作が実行されるか又は外
側の呼出しが実行を完了するときに,保留の側面チャネルの結果が暗に消去されて閉じられるのとまさに
同様に,別の SQL 操作が実行されるか又は外側の呼出しが実行を完了するときに,保留の一括が暗に実行
される。例として,一括化が有効にされ,新しい一括に追加される幾つかの SQL 操作を順に実行する Java
格納手続を呼び出すとことになる一括可能でない SQL 操作を実行すると仮定する。呼び出される Java 格
納手続が一括を実行しないで戻るならば,実行制御が戻されるときに,呼出し元となった SQL 操作が一括
を暗に実行する。一括中に含まれる文が実行されるとき,それら自体が新しい一括に文を追加することが
できるので,(
ExecutionContext.executeBatch(
)による)一括実行から制御が戻されるときにも,一括
が暗に実行される。
4.22 SQLJ
言語要素
SQL 言語の要素は,SQLJ によっていろんな方法で扱われる。
—
実行可能
SQL
文
(Executable SQL statements)
SQLJ 仕様は,SQL データ,定義及びトランザクショ
ンを操作する実行可能な SQL 文(ほとんどの<SQL スキーマ文>,<SQL データ文>及び<SQL トラン
ザクション文>)を,本質的に,それらが埋込み SQL 中及び SQL モジュール言語中に規定されると
おりに直接採用する。
—
動的
SQL (Dynamic SQL)
SQLJ は,動的 SQL を直接提供しないで,JDBC によって別に扱う。
—
宣言
(Declarations)
SQLJ 仕様は,反復子クラス,及び SQL 属性をもつ他のデータ項目を宣言する
ために,<カーソル宣言>及び<ホスト変数定義>を Java の型の宣言によって置き換える。
—
プログラム制御
(Program control)
例外,データベースコネクション及び診断の型を Java が直接表
現し,標準プログラミング技法を用いてこれらのオブジェクトを操作することができるので,例外,
データベースコネクション及び診断を管理することによって SQL の環境とホスト言語の環境とを
組み合せるために役に立つ<埋込み例外宣言>,
<SQL セション文>,<SQL コネクション文>及び<SQL
診断文>は,SQLJ 中では削除される。
43
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
4.22.1 <
カーソル名>
SQL 言語では,<カーソル名>は,単純な識別子である。等価な SQLJ の構成要素は,<反復子ホスト式>
とする。<反復子ホスト表現>は,Java 式とし,その結果の型は,生成される反復子クラス(すなわち,生成
される名前付き反復子クラス若しくは生成される位置付け反復子クラス),又はそのようなクラスの下位ク
ラスのインスタンスでなければならない。
4.22.2 SQL
スキーマ,データ及びトランザクション文
SQL スキーマ,データ及びトランザクション文は,SQLJ 中で SQLJ 句として扱われ,結果として通常の
SQL 文として扱われる。
4.22.3 <
動的 SQL 文>
<動的 SQL 文>及び<動的カーソル宣言>のカテゴリは,SQLJ 仕様から削除されている。さらに,動的操
作は,JDBC に含まれているので,動的な文 PREPARE, DESCRIBE, EXECUTE, DEALLOCATE, GET
DESCRIPTOR 及び SET DESCRIPTOR は,SQLJ 仕様から削除されている。
4.22.4 <SQL
コネクション文>
<SQL コネクション文>は,SQLJ 仕様中では,直接的な Java 構文及びコネクションオブジェクトの操作
によって置き換えられる。それは,同じ又は異なるデータベースに対して,SQLJ プログラムが同時に複
数のコネクションを開くことを可能にする。
<SQL コネクション文>を実装するために必然的に用いられる大域的状態(例えば,Java“静的変数”)が
隠されることを適用業務が避けるために,コネクションオブジェクトの陽な操作を提供しなければならな
い。特に,Java“アプレット”及び他の多重スレッドプログラムは,通常,大域的状態の競合を避けてコ
ード化される。
このようなプログラムは,
局所変数中にコネクションオブジェクトを格納し,
それらを SQLJ
句の中で陽に用いる。
SQLJ は,異なるデータベースに接続される複数のコネクションオブジェクトを Java プログラムが操作
することができる可能性を与える。プログラムが複数のコネクションを操作するならば,SQLJ 句中でそ
れらを陽に指定するので,それらは,正規の Java オブジェクトでなければならない。
4.22.5 <
ホスト変数定義>
埋込み SQL は,EXEC SQL BEGIN DECLARE SECTION 及び EXEC SQL END DECLARE SECTION によ
ってとじられたプログラムの特別の節中に<ホスト変数定義>を含めることを規定する。SQLJ 仕様は,<ホ
スト変数定義>節を定義しない。どの Java 変数,パラメタ,(オブジェクトの)Java フィールドも,ホスト
変数として用いることが許される。
参考 8 これは,ホストプログラムの初歩の構文解析によって,プリコンパイラ(翻訳プログラム)
がホスト変数定義を見つけ,それらの型を決定できるようにするために必要とされた。SQLJ
翻訳プログラムは,従来のプリコンパイラよりも優れた構文解析能力をもつために,Java の
可搬性及び利用可能なソフトウェア部品を活用するので,ホスト変数の定義をホストプログ
ラムの狭い範囲内に限定するための DECLARE SECTION を必要としない。
SQLJ は,Java ホスト式が SQL 文中に直接現れることを許すことによって,従来の埋込み機能を拡張している。
ホ
スト式は,コロン(:)を前に付けて,省略可能なパラメタモード識別子(IN,OUT,INOUT)をそれに続けて,
更に括弧で囲まれた式の句を続ける。
式の句は,
規則に合った Java 式を含み,
Java 式は,(IN 若しくは INOUT
モードの場合には,)単一の値,及び/又は(OUT 若しくは INOUT モードの場合には,)Java“左辺値式”の
場所のいずれかにならなければならない。
ホスト式の評価は,SQL エンジンでなく,Java VM によって評価されるので,Java プログラム中に副作
44
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
用を与える。ホスト式は,SQL エンジンに転送される前に,SQL 文内で左から右へ評価される。
4.22.6 <
埋込み例外宣言>
SQLJ 仕様は,<埋込み例外宣言>を定義しない。ISO/IEC 9075-5 中で,<埋込み例外宣言>は,次の形式
をもつ。
EXEC SQL WHENEVER exception_condition GOTO program_label;
EXEC SQL WHENEVER exception_condition CONTINUE;
Java 言語は,どんな形式の“go to”文も提供しない。したがって,Java への<埋込み例外宣言>の直接の
翻訳は,可能ではない。代わりに,ある例外が引き起こされるかもしれない Java ブロック中に,それらの
例外のためのハンドラを関連付ける try...catch 文を Java が提供する。
参考 9 さらに,Javaは,例外を宣言し処理するためのしっかり開発された規則をもつ。したがって,
<埋込み例外宣言>は,価値を付加しない。他のオブジェクト指向言語は,例外を宣言し処理
するための Java 中のこれらと同様な機能をもつ。
JDBC は,SQL から戻される例外の上位クラスとして,大域的に
java.sql.SQLExceptio
n と名付けら
れた例外を定義する。SQLJ 仕様は,SQLJ と JDBC との間の相互運用性を容易にするために,先例に従う。
4.22.7 <SQL
診断文>
SQLJ は,SQL の診断領域中の従来からの返却情報の処理に関して,Java の方法に従う。異常終了及び
ある実行時誤り(例えば,ナル可能でないデータ型への NULL の取出し)は,例外処理を用いて処理する。
他の状態情報(例えば,更新行数)は,コネクション文脈オブジェクト及び例外文脈オブジェクトに対する
メソッドを用いて処理する。
4.22.8
カーソル宣言
SQL 言語の<カーソル宣言>文は,ホストプログラム中に問合せ及びそれに関連付けられる結果集合に対
して単一の名前を宣言する。それに反して,SQLJ 仕様は,問合せとそれが戻す結果集合とを区別する。
問合せを含んでいる SQLJ 句が評価されるならば,それは,その問合せによって選択される行の結果集合
を含んでいる反復子オブジェクトを戻す。反復子オブジェクトの型は,結果集合中の列の数並びに型(及び
名前)を符号化する Java クラスとし,それは,反復子オブジェクトに関する操作についての型の検査を許
す。
SQLJ 反復子によって与えられる抽象化層の下で,SQL サーバがカーソルを作成し操作する。反復子 UC
の
暗黙カーソル
(implicit cursor)
は,
sqlj.runtime.ResultSetIterato
r を実装する型のオブジェクトの対
応するインスタンスに対してメソッドが呼び出されるとき,SQL サーバによって操作されるカーソルとす
る。反復子 UC の
暗黙
<
カーソル宣言
> (implicit <declare cursor>)
は,その<代入指定句>が<問合せ句>を直
に含む<代入句>の実行の結果として,SQL サーバによって実効的に実行される<カーソル宣言>とする。
<代入指定句>が<問合せ句>を直に含むとき,<問合せ句>は,<カーソル宣言>の<問合せ式>,及び省略
可能な<ORDER BY 句>を与える。<代入句>に直に含まれる<左辺値式> LV は,生成された反復子クラスの
オブジェクトか,
又は
sqlj.runtime.ResultSetIterato
r を実装する型のオブジェクトのいずれかを参照
する。LV が生成された反復子クラスのオブジェクトを参照するとき,関連する<反復子宣言句>の<宣言
WITH リスト>の,反復子の感度,スクロール可能性,保持可能性,戻り可能性及び更新列の指定は,それ
ぞれ,暗黙<カーソル宣言>の<カーソル感度>,<カーソルスクロール可能性>,<カーソル保持可能性>,<
カーソル戻り可能性>及び更新<列名リスト>の指定を与える。
4.22.9 SQL
文への入力パラメタ
SQLJ 仕様は,ホスト変数が現れることが許されているところならどこにでも,一般化されたホスト式
45
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
が現れることを許すことによって,SQL 文への入力パラメタに関する SQL 言語の指定方法を拡張する。
4.22.10 SQLJ
反復子からの列値の抽出
SQLJ は,反復子オブジェクトから列値をアクセスする二つの方法,すなわち,位置による方法及び名
前による方法を提供する。SQL の<FETCH 文>は,位置によってだけ列にアクセスする。次の例において,
行中の 1 番目の列は,var1 に,2 番目の列は,var2 に,3 番目の列は,var3 に代入される。
EXEC SQL FETCH cursor1 INTO :var1,:var2,:var3;
SQLJ は,FETCH 文の修正版も提供する。それは,列の名前及び型をもつ生成されたメソッドを通して,
名前による列にアクセスすることを提供する。
4.22.11 <OPEN
文> 及びカーソル
SQL には,問合せ及びその結果行の集合(すなわち,その
結果集合
(result set))
の両方を表現する名前付
きカーソルを開くか又は再び開くための<OPEN 文>がある。
EXEC SQL OPEN cursor1;
SQLJ 仕様は,反復子オブジェクトを開くか又は再び開くための OPEN 操作を提供しない。SQLJ は,静
的な問合せに名前を付けないし,それをデータとして扱うこともしない。代わりに,問合せは,データと
して操作する反復子オブジェクトを戻す。適用業務プログラムは,メソッドの本体中の SQLJ 句中に問合
せを書くことによって,事実上その問合せに名前を付けることができる。メソッドは,その名前によって
呼び出され,その値として反復子オブジェクトを戻すことができる。
5.
語い要素 ISO/IEC 9075-10:2000 の 5. Lexical elements による。
6.
スカラ式 ISO/IEC 9075-10:2000 の 6. Scalar expressions による。
7.
その他の共通要素 ISO/IEC 9075-10:2000 の 7. Additional common elements による。
8.
埋込み SQL ISO/IEC 9075-10:2000 の 8. Embedded SQL による。
9.
2
進可搬性 ISO/IEC 9075-10:2000 の 9. Binary portability による。
10. SQLJ
文法構成要素 ISO/IEC 9075-10:2000 の 10. SQLJ grammar constructs
11. <SQLJ
特有句>及び内容 ISO/IEC 9075-10:2000 の 11. <SQLJ specific clause> and contents による。
12.
その他の機能 ISO/IEC 9075-10:2000 の 12. Additional features による。
13.
パッケージ sqlj.runtime ISO/IEC 9075-10:2000 の 13. Package sqlj.runtime による。
14.
パッケージ sqlj.runtime.profile ISO/IEC 9075-10:2000 の 14. Package sqlj.runtime.profile による。
15. sqlj.runtime.profile.util.ProfileCustomizer
ISO/IEC 9075-10:2000 の 15. sqlj.runtime.profile.util.
ProfileCustomizer による。
46
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
16.
動的 SQL ISO/IEC 9075-10:2000 の 16. Dynamic SQL による。
17.
呼出しレベルインタフェース規定 ISO/IEC 9075-10:2000 の 17. Call-Level Interface specifications によ
る。
18.
定義スキーマ ISO/IEC 9075-10:2000 の 18. Definition Schema による。
19.
状態コード ISO/IEC 9075-10:2000 の 19. Status codes による。
20.
適合性 ISO/IEC 9075-10:2000 の 20. Conformance による。
附属書 A(参考) SQL 適合性の要約 ISO/IEC 9075-10:2000 の Annex A(informative) SQL Conformance
Summary による。
附属書 B(参考) 処理系定義要素 ISO/IEC 9075-10:2000 の Annex B(informative) Implementation-defined
elements による。
附属書 C(参考) 処理系依存要素 ISO/IEC 9075-10:2000 の Annex C(informative) Implementation-dependet
elements による。
附属書 D(参考) 削除予定機能 ISO/IEC 9075-10:2000 の Annex D(informative) Deprecated features による。
附属書 E(参考) 代表的なヘッダファイル ISO/IEC 9075-10:2000 の Annex E(informative) Typical header
files による。
附属書 F(参考) SQL の機能の分類 ISO/IEC 9075-10:2000 の Annex F(informative) SQL Feature Taxonomy
による。
附属書 G(参考) SQLJ 入門 ISO/IEC 9075-10:2000 の Annex G(informative) SQLJ tutorial による。
47
X 3005-10
:2003 (ISO/IEC 9075-10:2000)
附属書 1(参考)
ISO/IEC 9075-10:2000
,Information technology ―Database languages ―
SQL
― Part 10: Object Language Bindings(SQL/OLB)
この附属書(参考)は,本体及び附属書(規定)に関連する事柄を補足するもので,規定の一部ではな
い。