JIS X 3005-1:2014 データベース言語SQL 第1部:枠組(SQL/Framework) | ページ 6

20
X 3005-1 : 2014 (ISO/IEC 9075-1 : 2011)
SQLトランザクションのトランザクション隔離性水準 (transaction isolation level) は,SQL環境中の別の
SQLエージェントによる動作の効果がそのSQLトランザクション内で認識される程度を指定する。
どのトランザクション隔離性水準も,全てのSQLトランザクションが実行されることを保証する。完全
に実行されないSQLトランザクションは,完全に失敗する。どのトランザクション隔離性水準も,更新が
失われないことを保証する。最も高いトランザクション隔離性水準であるSERIALIZABLEは,時刻で重
なるSQLトランザクションの効果が,それらが時刻で重ならなかった場合に与えることになった効果と同
じであることを意味する直列化可能 (serializable) 実行を保証する。他のトランザクション隔離性水準であ
るREPEATABLE READ,READ COMMITTED及びREAD UNCOMMITTEDは,順に,より低い水準の隔
離性を保証する。

4.9 モジュール

  3種類のモジュールが存在し,それらのそれぞれは,幾つかの特性をもち,(モジュール内容としても知
られている)様々な種類のモジュールオブジェクトを含む。主要なモジュールオブジェクトは,一つ以上
のルーチンとする(“4.10 ルーチン”参照)。
モジュールは,次のうちの一つとする。
− 外部呼出し手続だけを含むSQLクライアントモジュール。
− SQL呼出しルーチンだけを含むSQLサーバモジュール。

4.10 ルーチン

4.10.1 ルーチン一般情報

  表1“外部呼出しルーチンとSQL呼出しルーチンとの間の関係”は,SQLから呼び出されるルーチン及
び別の言語から呼び出されるルーチンだけでなく,SQLで書かれたルーチン及び別の言語で書かれたルー
チンとの可能な様々な組合せに対して用いる用語を示す。
表1−外部呼出しルーチンとSQL呼出しルーチンとの間の関係
SQLで書かれたルーチン SQL以外の言語で書かれたルーチン
SQLから呼び出されるルーチン SQL関数及びSQL手続 外部関数及び外部手続
SQL以外の言語から呼び出されるルーチン 外部呼出し手続 (SQLに関連しない。)
SQL呼出しルーチン (SQL-invoked routine) は,SQLから呼び出すことができるルーチンとする。それは,
関数又は手続のいずれかとする。幾つかの関数は,メソッド (method) としてそれらを特徴付ける特別な
特性をもつ。
SQL呼出しルーチンは,スキーマオブジェクトか,又は(それ自体がスキーマオブジェクトである)SQL
サーバモジュールの構成要素のいずれかとする。
SQL呼出し手続 (SQL-invoked procedure) は,SQLのCALL文によって呼び出される手続とする。SQL
呼出し関数 (SQL-invoked function) は,任意の値式中のルーチン呼出しによって呼び出される。
外部ルーチン (external routine) は,指定されるプログラム言語の,SQL環境外にある翻訳単位を参照す
るSQL呼出しルーチンとする。そのような参照の結合の方法及び時期は,処理系定義とする。
SQLルーチン (SQL routine) は,ルーチン本体がSQLで書かれたSQL呼出しルーチンとする。
SQL呼出しルーチンの名前は,一意である必要がない。二つ以上のルーチンが同じ名前を共有するなら
ば,その名前は,オーバロードされ (overloaded) るといい,その名前の呼出しは,署名が呼出しの引数と
最も一致するルーチンの実行を引き起こす。通常,最も一致することを決定するときに,引数値を示す式

――――― [JIS X 3005-1 pdf 26] ―――――

                                                                                             21
X 3005-1 : 2014 (ISO/IEC 9075-1 : 2011)
の宣言型だけが考慮されるが,固有の構文を用いて呼び出すメソッドの場合には,引数の一つの最特定型
が考慮される。

4.10.2 型保持関数

  RESULTを指定するパラメタをSQL呼出し関数がもつならば,そのパラメタは,結果パラメタ (result
parameter) として知られ,結果パラメタのデータ型と結果のデータ型とが同じ利用者定義型ならば,その
関数は,型保持関数 (type preserving function) という。型保持関数の結果は,結果パラメタの値とし,潜在
的に変異する。
どの変異関数も,型保持関数とする。

4.11 SQL文

4.11.1 SQL文の種類

  SQL文は,JIS X 3005 (ISO/IEC 9075) 規格群の規格で規定する形式及び構文規則に適合する文字列とす
る。
ほとんどのSQL文は,SQLクライアントモジュールで,実行のために準備し,実行することができる。
この場合には,SQL文が準備されるときに単一のSQL文をもつ外部呼出し手続が作成され,準備された
SQL文が実行されるときにはいつでも,その外部呼出し手続が暗に呼び出される。
SQL文の分類方法には,少なくとも次の五つの方法がある。
− 永続オブジェクト(すなわち,SQLデータ,SQLスキーマ及びそれらの内容,若しくはSQLクライ
アントモジュール)か,又は(SQLセション及びその他のSQL文のような)一時オブジェクトかに
かかわらず,SQLオブジェクトに対する効果による方法。
− SQLトランザクションが動作中でないときに,SQLトランザクションを開始するかどうか,又は実行
できるか若しくは実行しなければならないかどうかによる方法。
− ホスト言語で書かれたプログラム中に埋め込んでもよいかどうかによる方法。
− 直接起動してもよいかどうかによる方法。
− 動的に準備し,実行してもよいかどうかによる方法。
JIS X 3005 (ISO/IEC 9075) 規格群は,これらのカテゴリのいずれかに分類できる処理系定義の追加の文
を処理系が提供することを許す。

4.11.2 機能によって分類されたSQL文

  SQL文の大まかな種類を,次に示す。
− スキーマ及びスキーマオブジェクトの作成,変更及び破壊のために用いることができるSQLスキーマ
文。
− 表に対する問合せ,並びに挿入,更新及び削除の操作を実行するSQLデータ文。SQLデータ文の実
行は,二つ以上の表の二つ以上の行に効果を与えることができる。
− トランザクションに対するパラメタを設定する,又はトランザクションを開始若しくは終了させる
SQLトランザクション文。
− SQL文の並びの実行を制御するために用いてもよいSQL制御文。
− コネクションを開始若しくは終了するSQLコネクション文,又はSQLクライアントが,あるSQLサ
ーバのSQLセションから別のSQLサーバのSQLセションに切り替えることを可能にするSQLコネ
クション文。
− SQLセションの幾つかの既定値及びその他のパラメタを設定するSQLセション文。

――――― [JIS X 3005-1 pdf 27] ―――――

22
X 3005-1 : 2014 (ISO/IEC 9075-1 : 2011)
− (診断領域から)診断情報を取得する,又はSQLルーチン中で例外を信号として送るSQL診断文。
− 動的に生成されたSQL文の準備及び実行,並びにそれらについての情報の取得機能を提供する動的
SQL文。

5 JIS X 3005 (ISO/IEC 9075) 規格群の規格

5.1 概要

  この枠組 (Framework) 規格は,他の規格が基にする基本概念及びそれらで用いる表記法を記述するので,
他の全ての規格に必要不可欠なものとする。
[ISO9075-2],すなわち,基本機能 (Foundation) は,SQL文の構造及びそれらの実行の効果を規定する。
第1部及び第2部以外のJIS X 3005 (ISO/IEC 9075) 規格群のどの規格も,JIS X 3005 (ISO/IEC 9075) 規
格群の他の規格に対する追補として規定する[詳細は,“6.3.5 JIS X 3005 (ISO/IEC 9075) 規格群の規格の
関係”参照]。
[ISO9075-3],すなわち,呼出しレベルインタフェース (Call-level interface) は,SQLエージェントとSQL
処理系との間の通信の別の機構を規定する。
[ISO9075-4],すなわち,永続格納モジュール (Persistent Stored Modules) は,SQLを計算完備にするSQL
自体の重要な追加を規定する。
[ISO9075-9],すなわち,外部データ管理 (Management of External Data) は,SQL環境中のSQLサーバの
制御下にないデータにSQLエージェントがアクセスすることを許すためのSQLの重要な追加を規定する。
[ISO9075-10],すなわち,オブジェクト言語結合 (Object Language Bindings) は,SQL文をJavaプログ
ラムに埋め込むことを可能にする方法を規定する。
[ISO9075-11],すなわち,情報スキーマ及び定義スキーマ (Information and Definition Schemas) は 表,
ビュー,列などの永続的なデータベースオブジェクトの名前を適用業務が知ることができるビューを規定
する。
[ISO9075-13],すなわち,Javaプログラム言語を用いるSQLルーチン及び型 (SQL Routines and Types
Using the Java Programming Language) は,Javaプログラム言語で書いた静的メソッドをSQL呼出しルー
チンとして呼び出す機能,及びJavaプログラム言語で定義したクラスをSQLの構造型として用いる機能
を規定する。
[ISO9075-14],すなわち,XML関連仕様 (XML-Related Specifications) は,データベース言語SQLをXML
と連携して用いる方法を規定する。
各規格の内容は,次の細分箇条で示す。

5.2 JIS X 3005-1 : 枠組 (SQL/Framework)

  この規格は,次の記述を含む。
− SQL環境の記述,及びJIS X 3005 (ISO/IEC 9075) 規格群で用いる概念の簡潔な記述。
− 各規格の内容の簡潔な記述。これらの記述は,純粋に参考であり,要件にならない。
− JIS X 3005 (ISO/IEC 9075) 規格群の全て又はほとんどの規格に適用する表記法及び規約。他の規格は,
必要に応じて規約を更に規定する。

5.3 ISO/IEC 9075-2 : 基本機能 (SQL/Foundation)

  [ISO9075-2] は,SQLの次の機能を規定する。

5.3.1 [ISO9075-2] で規定するデータ型

  [ISO9075-2] は,次のデータ型を規定する。

――――― [JIS X 3005-1 pdf 28] ―――――

                                                                                             23
X 3005-1 : 2014 (ISO/IEC 9075-1 : 2011)
− 全ての数型及びデータ列型。
− ブール型。
− 全ての日時型及び時間隔型。
− 行型。
− 集まり型。
− 利用者定義型。
− 定義域。
− 参照型。

5.3.2 表

  表の関数従属性及び候補キーの決定規則を定義する。

5.3.3 結合方法

  [ISO9075-2] は,SQLエージェントをSQL処理系と結合する三つの方法を規定する。

5.3.3.1 埋込みSQL

  埋込みSQLは,ホスト言語 (host language) として知られている特定のプログラム言語の規則に従って
書かれる翻訳単位中にSQL文を埋め込む方法とする。それは,ホスト言語での完全に等価な翻訳単位をど
のようにして導出することができるかを規定する。その等価な翻訳単位では,各埋込みSQL文は,SQL
文を含むデータベース言語手続を呼び出す一つ以上の文に置き換えられる。

5.3.3.2 動的SQL

  動的SQLは,埋込みSQLの拡張とする。規定する機能は,次による。
− SQL処理系とSQLエージェントとの間での通信のために用いる記述子領域の割当て及び解放。
− 後に続く実行のための文の準備を含む,SQL文の実行。

5.3.3.3 SQLの直接起動

  SQLの直接起動は,SQL文を直接実行する方法とする。SQLの直接起動では,次の方法は,処理系定義
とする。
− SQL文の呼出し方法。
− そのような文の実行の結果として生じる条件を引き起こす方法。
− そのような文の実行の結果として生じる診断情報にアクセスする方法。
− 結果を戻す方法。

5.3.4 [ISO9075-2] で規定するSQL文

  [ISO9075-2] で規定するSQL文の種類を,次に示す。
− [ISO9075-2] で規定するスキーマ及びスキーマオブジェクトの作成,変更及び破壊のために用いるこ
とができるSQLスキーマ文。
− 表に対する問合せ,並びに挿入,更新及び削除の操作を実行するために用いることができるSQLデー
タ文。幾つかのSQLデータ文は,それらの名前に“動的 (dynamic)”という語を含む。それらを動的
SQL文と混同してはならない。
− トランザクションの特性を設定するため,及びトランザクションを開始又は終了するために用いるこ
とができるSQLトランザクション文。
− 手続を呼び出すため,及び関数によって戻される値を指定するために用いることができる二つのSQL
制御文(それぞれ,CALL及びRETURN)。
− コネクションを開始又は終了するため,及びSQLクライアントに,あるSQLサーバのSQLセション

――――― [JIS X 3005-1 pdf 29] ―――――

24
X 3005-1 : 2014 (ISO/IEC 9075-1 : 2011)
から別のSQLサーバのSQLセションに切り替えさせるために用いることができるSQLコネクション
文。
− SQLセションの幾つかの既定値及びその他の特性を設定するために用いることができるSQLセショ
ン文。
− (診断領域から)診断情報を取得するSQL診断文。
− 動的に生成されるSQL文の準備及び実行,並びにそれらについての情報の取得のための機能を提供す
る動的SQL文。
− ホスト言語の文に変換されるSQL埋込み例外宣言。
[ISO9075-2] は,規定する各SQL文に対して,トランザクションが動作中でないときに実行されるなら
ば,どのSQL文がトランザクションを開始し,どのSQL文が開始しないかを規定する。
[ISO9075-2] は,各SQLに対して,次のことを規定する。
− ホスト言語中に埋め込んでもよいかどうか。
− 動的に準備し,実行してもよいかどうか。データを記述子領域に取り出す場合を除いて,どの準備可
能SQL文も,即時実行することができる。
− 直接起動してもよいかどうか。

5.4 ISO/IEC 9075-3 : 呼出しレベルインタフェース (SQL/CLI)

  [ISO9075-3] は,多くのプログラム言語のうちの一つで書かれたプログラムとSQL処理系との間の結合
方法を規定する。その効果は,[ISO9075-2] で規定する動的SQLと機能的に等価とする。
次の用途で用いることができる手続(ルーチン)を規定する。
− 資源(記述子又は通信領域)の割当て及び解放。
− SQLクライアントとSQLサーバとの間のSQLコネクションの開始,制御及び終了。
− 後に続く実行のための文の準備を含む,SQL文の実行。
− 診断情報の取得。
− SQL処理系についての情報の取得。例えば,SQLクライアントが接続可能なSQLサーバ。
CLIと結合との重要な差異は,CLIの文脈では多くのSQL環境を独立に開始及び管理することができる
のに対して,後者の文脈ではSQL環境が一つしか存在しないことにある。結果的に,SQL環境は,単純
に,様々な機能をもつ環境の集合であると定義されるが,この用語は,CLIでは,たくさんあるかもしれ
ないうちの一つのSQL環境の現在の状態(記述子)を参照するために用いる。したがって,この用語は,
適用業務(SQLエージェント)とSQLクライアントとの間のセション(SQLクライアントとSQLサーバ
との間の,SQLコネクションとしてCLIで参照されるSQLセションと混同してはならない。)の意味で用
いる。

5.5 ISO/IEC 9075-4 : 永続格納モジュール (SQL/PSM)

  [ISO9075-4] は,追加のSQL文の構文及び意味を規定することによって,SQLを計算完備にする。
SQLを計算完備にするものは,次の機能を含む。
− 制御の流れを指示するための文の指定。
− 変数及びパラメタへの式の結果の代入。
− 実行中に引き起こされるかもしれない様々な条件を複合文で扱うことを可能にする条件ハンドラの指
定。

――――― [JIS X 3005-1 pdf 30] ―――――

次のページ PDF 31

JIS X 3005-1:2014の引用国際規格 ISO 一覧

  • ISO/IEC 9075-1:2011(IDT)

JIS X 3005-1:2014の国際規格 ICS 分類一覧

JIS X 3005-1:2014の関連規格と引用規格一覧