構文図では、キーワードは大文字で表示されます。対話型SQLでは、キーワードの短縮形が構文的に認められている選択肢を一意に示している場合、キーワードを短縮できます。ホスト言語プログラム(プリコンパイルされたモジュール言語または動的SQL)で使用されるSQL文では、キーワードを短縮できません。
キーワードには、次の2つのタイプがあります。
SQL文は、SQL文を発行する環境によってその終了方法が異なります。
SQL> SELECT col1 - - cont> col2 FROM my_table; |
前述の例では、1つ目のハイフンがマイナス演算子、2つ目のハイフンが行継続文字として解釈されます。
SETをCONTINUE CHARACTER引数とともに使用して、対話型SQLの継続文字を定義することもできます。詳細は、「SET文」を参照してください。
文の終了記号と同様に、SQLによって指示コメントとして認識される表記法は環境によって異なります。
Oracle Rdbでは、コメント文字にダブル・ハイフン(-)を使用することをお薦めします。これにより、対話型SQL文をSQLモジュール言語プログラムに移植でき、ANSI/ISO規格に準拠することにもなります。 |
ネストしたコメントは、ORACLE LEVEL1またはORACLE LEVEL2の言語ではサポートされていません。 |
SQL> -- show that text is hidden SQL> show /* current */ version Current version of SQL is: Oracle Rdb SQL V8.0-00 SQL> SQL> /* ***> ********************************** ***> The following query fetches the ***> JOB_HISTORY row for the current job ***> of employee 164 (aka Alvin Toliver) ***> *********************************** ***> */ SQL> select department_code, cont> job_start /*, employee_id*/ cont> from JOB_HISTORY cont> where employee_id = '00164' cont> and job_end is null; DEPARTMENT_CODE JOB_START MBMN 21-Sep-1981 1 row selected SQL> SQL> /* disable this CREATE VIEW ***> create view V_00164 ***> as select e.last_name, /* e.middle_initial, */ e.first_name, ***> sh.salary_amount ***> from EMPLOYEES e, SALARY_HISTORY sh ***> where e.employee_id = '00164' ***> and sh.employee_id = e.employee_id; ***> ***> select * from V_00164; ***> select count/*all*/(*) from V_00164; ***> */ SQL> |
Oracle Rdbでは、マルチベンダー統合アーキテクチャ(MIA)がサポートされています。このサポートには、次の項目が含まれています。
また、SQLでは、SQLプリコンパイルされたCプログラム、COBOLプログラムおよびFORTRANプログラム内の新しい文字データ型変数もサポートされています。データ型の詳細は、第4.4.3項、第4.4.4項および第4.4.5項を参照してください。
SQLでは、SQLモジュール言語内の仮パラメータに特定のキャラクタ・セットまたは各国語キャラクタ・セットを指定することもできます。詳細は、第3.2節および「DECLARE MODULE文」を参照してください。
MCS以外のキャラクタ・セットを使用する場合は、キャラクタ・セットが次の要素に及ぼす影響に注意してください。
インストール時に、SQLによって様々な言語の多数のサンプル・プログラムがインストールされます。これらのプログラムは、システムのサンプル・ディレクトリにインストールされます。各プログラムについての簡単な説明は、サンプル・ディレクトリ内にあるファイルabout_sql_examples.txtに記載されています。これらのプログラムの1つであるMIA_CHAR_SETでは、MIAに準拠するために必要な別のキャラクタ・セットを使用するデータベースが作成されます。
SQLでは、多くの文に共通の基本構文要素および言語要素が使用されます。これらの要素は、詳細な説明なしに構文図で言及されます。この章では、次の要素について説明します。
SQL文を作成して特定のタスクを実行する方法の詳細は、『Oracle Rdb7 Introduction to SQL』および『Oracle Rdb7 Guide to SQL Programming』を参照してください。
2.1 サポートされているキャラクタ・セット
Oracle Rdbでは複数のキャラクタ・セットがサポートされており、1つのデータベースで複数のキャラクタ・セットを使用できます。
表2-1は、サポートされているキャラクタ・セット、SQL文でキャラクタ・セットを指定する場合の名前およびキャラクタ・セットの説明を示しています。
キャラクタ・セット1 | 説明 |
---|---|
AL24UTFFSS | Unicode標準1.1に基づくUTF-8エンコーディング |
ASCII | 7ビットASCII文字 |
ARABIC | ISO9036標準で規定されているアラビア文字 |
BIG5 | 台湾の情報産業で使用されているキャラクタ・セット |
DEC_HANYU | 台湾で使用されている標準CNS11643:1986規格の繁体字中国語文字(繁体)、DTSCCおよびASCIIで規定されている補助文字 |
DEC_HANZI | 標準GB2312:1980およびASCII文字で規定されている中国語(Bopomofo)文字 |
DEC_KANJI | JIS X0208:1990標準で規定されている日本語文字、JIS X0201:1976で規定されている半角カタカナ文字(SS2(8E hex)の接頭辞が付く)、ユーザー定義文字およびASCII文字 |
DEC_KOREAN | 標準KS C5601:1987およびASCII文字で規定されている韓国語文字 |
DEC_MCS | 国際英数字(発音区別符号を含む) |
DEC_SICGCC | 台湾で使用されている標準CNS11643:1986およびASCII規格の繁体字中国語文字(繁体) |
DEVANAGARI | ISCII:1988標準で規定されているデーバナーガリー文字 |
DOS_LATIN1 | DOS Latin 1コード |
DOS_LATINUS | DOS Latin USコード |
GB18030 | 中華人民共和国(PRC)で使用されているGB18030-2000標準規格の簡体字中国語文字 |
HANYU | 台湾で使用されている標準CNS11643:1986規格の繁体字中国語文字(繁体) |
HANZI | 標準GB2312:1980で規定されている中国語(Bopomofo)文字 |
HEX | テキスト・データと16進データの相互変換 |
ISOLATIN1 | ISO/IEC 8859-1:1987標準規格の拡張西ヨーロッパ言語文字 |
ISOLATIN9 | ユーロ文字のコードポイントを含むISO/IEC 8859-15標準規格の拡張西ヨーロッパ言語文字 |
ISOLATINARABIC | ISO/IEC 8859-6:1987標準規格のアラビア文字 |
ISOLATINCYRILLIC | ISO/IEC 8859-5:1987標準規格のキリル文字 |
ISOLATINGREEK | ISO/IEC 8859-7:1987標準規格のギリシャ文字 |
ISOLATINHEBREW | ISO/IEC 8859-8:1987標準規格のヘブライ文字 |
KANJI | JIS X0208:1990標準規格の日本語文字およびユーザー定義文字 |
KATAKANA | 標準JIS X0201:1976で規定されている日本語音標文字(半角カタカナ) |
KOREAN | 標準KS C5601:1987で規定されている韓国語文字 |
SHIFT_JIS | Shift_JIS固有のコード体系を使用し、JIS X0208:1990標準で規定されている日本語文字、JIS X0201:1976で規定されている半角カタカナ文字およびASCII文字 |
TACTIS | TACTIS(タイAPIコンソーシアム/タイ業界標準)で、ISO 646-1983標準とTIS 620-2533標準の組合せに基づくタイ語文字 |
UNICODE | Unicode標準およびISO/IEC 10646変換形式UTF-16で規定されているUnicode文字 |
UNSPECIFIED | 第2.1.10項を参照 |
UTF8 | Unicode標準およびISO/IEC 10646 UTFエンコーディング形式で規定されているUnicode文字 |
WIN_ARABIC | MS Windowsコード・ページ1256 8ビット・ラテン語/アラビア語 |
WIN_CYRILLIC | MS Windowsコード・ページ1251 8ビット・ラテン語/キリル語 |
WIN_GREEK | MS Windowsコード・ページ1253 8ビット・ラテン語/ギリシャ語 |
WIN_HEBREW | MS Windowsコード・ページ1255 8ビット・ラテン語/ヘブライ語 |
WIN_LATIN1 | MS Windowsコード・ページ1252 8ビット西ヨーロッパ言語 |
サポートされているキャラクタ・セットは、識別子キャラクタ・セットとしての指定を除き、指定されている場合はいつでも使用できます。識別子キャラクタ・セットの詳細は、第2.1.5項を参照してください。
各キャラクタ・セットは、文字をコーディングする方法が異なります。つまり、すべて1オクテットでコーディングされるキャラクタ・セットの文字もあれば、複数のオクテットでコーディングされるキャラクタ・セットの文字もあります。(オクテットとは、8ビットの集まりです。)
文字をコーディングする方法は、次のとおりです。
表2-2は、サポートされている各キャラクタ・セットが単一の文字をコーディングする場合に使用するオクテット数を示しています。
キャラクタ・セット | 各文字に使用されるオクテット数 |
---|---|
単一のオクテット・キャラクタ・セット | |
ASCII | 1オクテット |
DEC_MCS | 1オクテット |
DOS_LATIN1 | 1オクテット |
DOS_LATINUS | 1オクテット |
ISOLATINARABIC | 1オクテット |
ISOLATINHEBREW | 1オクテット |
ISOLATINCYRILLIC | 1オクテット |
ISOLATINGREEK | 1オクテット |
ISOLATIN1 | 1オクテット |
ISOLATIN9 | 1オクテット |
DEVANAGARI | 1オクテット |
KATAKANA | 1オクテット |
TACTIS | 1オクテット |
UNSPECIFIED | 1オクテット |
WIN_* | 1オクテット |
固定数の複数のオクテット・キャラクタ・セット | |
BIG5 | 2オクテット |
HEX | 2オクテット |
HANYU | 2オクテット |
HANZI | 2オクテット |
KANJI | 2オクテット |
KOREAN | 2オクテット |
UNICODE | 2オクテット |
混合数の複数のオクテット・キャラクタ・セット | |
AL24UTFFSS | 1〜3オクテット(UTF-8標準で指定) |
DEC_KOREAN | ASCII文字は1オクテット、韓国語文字は2オクテット |
DEC_SICGCC | ASCII文字は1オクテット、繁体文字は2オクテット |
DEC_HANYU | ASCII文字は1オクテット、繁体文字は2オクテット、補助文字は4オクテット |
DEC_HANZI | ASCII文字は1オクテット、簡体文字は2オクテット |
DEC_KANJI | ASCII文字は1オクテット、漢字は2オクテット、半角カタカナは2オクテット(SS2(8E hex)の接頭辞と単一のオクテットJIS X0201文字) |
SHIFT_JIS | ASCII文字は1オクテット、半角カタカナは1オクテット、SHIFT_JISエンコーディングを使用する漢字は2オクテット |
UTF8 | 1〜3オクテット(UTF-8標準で指定) |
複数のオクテット文字は、編集文字列、ファイル名、リポジトリ・パス名またはデータベース名に使用できません。
2.1.1 自動変換
Oracle Rdbでは、テキスト列へのリテラルの代入や2つの文字列変数の比較などのテキスト・データの操作中に、操作が確実に実行されるよう、キャラクタ・セットの互換性チェックが実行されます。
ほとんどの場合、2つのテキスト・オブジェクトは操作を実行する前に同一キャラクタ・セットにしておく必要があるため、自動変換が有効になっていない場合、このチェックはかなり限定的なものになります。
自動変換機能を使用すると、キャラクタ・セットのチェックを限定的にするかどうか、Rdbでキャラクタ・セットの変換を行うかどうかを選択できます。この機能は、代入や比較の前に実行するTRANSLATEファンクションに類似しています。
自動変換を有効にすると、以前は明示的に実行するために追加の変換手順が必要だった操作を簡単に実行できます。
自動変換を有効にする方法は、次のとおりです。
SQL$AUTOMATIC_TRANSLATION
論理名SQL$AUTOMATIC_TRANSLATIONを使用すると、SQLユーザーは、デフォルトで自動変換が有効になるよう指定できます。
論理名SQL$AUTOMATIC_TRANSLATIONは、クライアントSQLプロセスにアクセス可能な論理名の表に配置できます。
SQLを起動する前に論理名が文字列TRUEまたは値Tのいずれかに設定されている場合、自動変換はデフォルトで有効になっています。その他の値の場合は、SQL内で自動変換が無効になります。