...

IBM Informix SQL リファレンス・ガイド リファレンス・ガイド (

by user

on
Category: Documents
96

views

Report

Comments

Transcript

IBM Informix SQL リファレンス・ガイド リファレンス・ガイド (
IBM Informix
SQL
リファレンス・ガイド (上巻
(上巻)
上巻)
バージョン 5.2
Part No. CT1YLJA
GB88-8617-00
( 英文原典:G251-0405-00)
お願い
本書および本書で紹介する製品をご使用になる前に、特記事項に記載されている情報をお読みくださ
い。
本マニュアルに関するご意見やご感想は、次の URL からお送りください。今後の参考にさせていただきま
す。
http://www.ibm.com/jp/manuals/main/mail.html
なお、日本 IBM の発行のマニュアルはインターネット経由でもご購入いただけます。詳しくは
http://www.ibm.com/jp/manuals/ の「ご注文について」をご覧ください。
(URL は変更になる場合があります)
原典 :
G251-0405-00
IBM Informix
Guide for SQL
発行 :
日本アイ・ビー・エム株式会社
担当 :
ナショナル・ランゲージ・サポート
第 1 刷 2002.12
© Copyright International Business Machines Corporation 1996, 2002. All rights reserved.
Translation@Copyright IBM Japan 2002
目次
目次
概要
はじめに . . . . . . . . . . . . . . . . . . . . .
本書について . . . . . . . . . . . . . . . . . . . .
本書の構成 . . . . . . . . . . . . . . . . . . . .
SQL を使用する IBM Informix 製品 . . . . . . . . . . . .
本書で扱う製品 . . . . . . . . . . . . . . . . . . .
デモンストレーション・データベース . . . . . . . . . . .
IBM Informix OnLine でのデモンストレーション・データ
ベースの作成 . . . . . . . . . . . .
IBM Informix SE でのデモンストレーション・データベース
の作成 . . . . . . . . . . . . . .
IBM Informix Server 製品、バージョン 5.x の新規機能 . . . . . .
ドキュメント規則 . . . . . . . . . . . . . . . . . .
文字の表記 . . . . . . . . . . . . . . .
構文規則 . . . . . . . . . . . . . . . .
コード規則の例 . . . . . . . . . . . . . .
関連マニュアル . . . . . . . . . . . . . . . . . . .
オンライン・マニュアル . . . . . . . . . . .
エラー・メッセージ・ファイル . . . . . . . . .
ドキュメント・ノート、リリース・ノート、マシン・ノート .
業界標準の準拠 . . . . . . . . . . . . . . . . . . .
資料・製品についてのご意見 . . . . . . . . . . . . . .
第 1 章
3
3
4
5
5
6
7
8
9
11
12
13
18
19
20
21
23
24
24
stores5 データベース
本章の内容 . .
表の構造 . . .
customer 表.
orders 表 .
items 表. .
stock 表 . .
. . .
. . .
. . .
. . .
. . .
. . .
.
.
.
.
.
.
. .
. .
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
.
.
.
.
.
.
. . .
. . .
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
.
.
.
.
1-3
1-4
1-5
1-6
1-6
1-8
catalog 表 . . . . . .
cust_calls 表 . . . . .
call_type 表 . . . . .
manufact 表 . . . . .
state 表 . . . . . .
stores5 データベース・マップ .
主キーと外部キーの関係 . .
customer 表と orders 表 . .
orders 表と items 表 . . .
items 表と stock 表 . . .
stock 表と catalog 表. . .
stock 表と manufact 表 . .
cust_calls 表と customer 表 .
call_type 表と cust_calls 表 .
state 表と customer 表 . .
stores5 データベース内のデータ
第 2 章
.
.
.
.
.
.
.
.
.
.
. . .
. . .
. .
. .
. .
. .
. .
. .
. .
. .
. . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . . .
. . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
.
.
.
.
.
.
.
.
. .
1-9
1-10
1-10
1-11
1-11
1-11
1-13
1-14
1-15
1-16
1-17
1-18
1-19
1-20
1-21
1-21
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2-3
2-4
2-8
2-9
2-9
2-10
2-11
2-11
2-12
2-13
2-16
2-17
2-18
2-18
2-22
2-24
2-25
2-26
2-27
2-28
2-28
2-29
システム・カタログ
本章の内容 . . . . . . . . . . .
システム・カタログの使用 . . . . . .
システム・カタログへのアクセス .
システム・カタログ・データの更新 .
システム・カタログの構造 . . . . . .
SYSBLOBS . . . . . . . . . .
SYSCHECKS . . . . . . . . .
SYSCOLAUTH . . . . . . . .
SYSCOLDEPEND. . . . . . . .
SYSCOLUMNS . . . . . . . .
SYSCONSTRAINTS . . . . . . .
SYSDEFAULTS . . . . . . . .
SYSDEPEND . . . . . . . . .
SYSINDEXES . . . . . . . . .
SYSOPCLSTR . . . . . . . . .
SYSPROCAUTH . . . . . . . .
SYSPROCBODY . . . . . . . .
SYSPROCEDURES . . . . . . .
SYSPROCPLAN . . . . . . . .
SYSREFERENCES . . . . . . .
SYSSYNONYMS . . . . . . . .
SYSSYNTABLE . . . . . . . .
iv IBM Informix SQL リファレンス・ガイド
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . .
. . .
. .
. .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
SYSTABAUTH
SYSTABLES .
SYSUSERS .
SYSVIEWS .
. . . . . . . . . . . . . . . . . . 2-30
. . . . . . . . . . . . . . . . . . 2-31
. . . . . . . . . . . . . . . . . . 2-34
. . . . . . . . . . . . . . . . . . 2-34
システム・カタログ・マップ
第 3 章
. .
.
. .
.
. .
. .
.
. .
. 2-35
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
データ型
本章の内容 . . . . . . .
データベースのデータ型 . .
BYTE . . . . . . .
CHAR(n) . . . . . .
CHARACTER(n) . . .
DATE . . . . . . .
DATETIME . . . . .
DEC . . . . . . . .
DECIMAL[(p,s)] . . . .
DOUBLE PRECISION(n) .
FLOAT(n) . . . . . .
INT . . . . . . . .
INTEGER . . . . . .
INTERVAL . . . . .
MONEY(p,s) . . . . .
NUMERIC(p,s) . . . .
REAL . . . . . . .
SERIAL(n) . . . . .
SMALLFLOAT . . . .
SMALLINT . . . . .
TEXT . . . . . . .
VARCHAR(m,r) . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3-3
3-4
3-5
3-6
3-7
3-7
3-8
3-11
3-11
3-12
3-12
3-12
3-13
3-13
3-17
3-17
3-17
3-17
3-18
3-19
3-19
3-21
データ型変換 . . . . . . . . . . . . . . . . . . . . 3-22
数値から数値への変換 . . . . . . . . . . . . 3-23
数値と文字 (CHAR) 型との間の変換 . . . . . . . . 3-23
DATE と DATETIME 間の変換 . . . . . . . . . . 3-24
DATE、DATETIME、および INTERVAL を使用した演算の範囲 . . 3-24
DATETIME 値の操作 . . . . . . . . . . . . . 3-26
INTERVAL 値を持つ DATETIME の操作 . . . . . . . 3-26
DATETIME 値および INTERVAL 値を持つ DATE の操作. . . 3-27
INTERVAL 値の操作 . . . . . . . . . . . . . 3-29
INTERVAL 値の乗算または除算. . . . . . . . . . 3-30
目次
v
第 4 章
第 5 章
環境変数
本章の内容 . . . . . .
環境変数の設定 . . . . .
Informix 環境変数 . . . .
DBANSIWARN . . .
DBDATE . . . . . .
DBDELIMITER . . .
DBEDIT . . . . . .
DBFORMAT . . . .
DBLANG . . . . .
DBMENU . . . . .
DBMONEY . . . . .
DBNETTYPE . . . .
DBPATH . . . . . .
DBPRINT . . . . .
DBREMOTECMD. . .
DBSRC . . . . . .
DBTEMP . . . . .
DBTIME . . . . . .
INFORMIXCOB . . .
INFORMIXCOBDIR . .
INFORMIXCOBSTORE .
INFORMIXCOBTYPE .
INFORMIXDIR . . .
INFORMIXONLINEDIR
INFORMIXTERM. . .
NOSORTINDEX . . .
SQLEXEC . . . . .
SQLRM . . . . . .
SQLRMDIR . . . . .
TBCONFIG . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4-3
4-4
4-5
4-7
4-8
4-9
4-10
4-10
4-11
4-12
4-12
4-13
4-14
4-15
4-16
4-16
4-17
4-18
4-20
4-20
4-21
4-21
4-22
4-23
4-23
4-24
4-25
4-26
4-27
4-27
UNIX 環境変数 .
PATH . . .
TERM. . .
TERMCAP .
TERMINFO .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4-28
4-28
4-29
4-30
4-30
. .
.
. .
.
. .
. .
.
. .
5-3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
SQLCA を使用したエラー処理
本章の内容
.
.
vi IBM Informix SQL リファレンス・ガイド
. .
.
. .
IBM Informix 4GL 内の SQLCA レコード . . . .
IBM Informix ESQL/C 内の sqlca 構造体 . . . . .
IBM Informix ESQL/COBOL 内の SQLCA レコード .
第 6 章
.
.
.
. .
. .
. .
. 5-5
. 5-7
. 5-10
記述子の使用
本章の内容 . . . . . . . . . . . . . . .
ESQL/C のシステム記述子領域および sqlda 構造体 .
システム記述子領域の使用 . . . . . .
sqlda 構造体へのポインターの使用 . . . .
ESQL/COBOL でのシステム記述子領域 . . . . .
システム記述子領域の使用 . . . . . .
第 7 章
. .
. .
. .
. . .
. . .
. . .
. . .
. . .
. . .
. . . 6-3
. . . 6-4
. .
6-5
. .
6-9
. . . 6-13
. . 6-13
構文
本章の内容 . . . . . . . .
SQL 文 . . . . . . . . .
ALLOCATE DESCRIPTOR .
ALTER INDEX . . . . .
ALTER TABLE . . . . .
BEGIN WORK . . . . .
CHECK TABLE . . . . .
CLOSE . . . . . . .
CLOSE DATABASE . . .
COMMIT WORK . . . .
CREATE AUDIT . . . .
CREATE DATABASE . . .
CREATE INDEX . . . .
CREATE PROCEDURE . .
CREATE PROCEDURE FROM
CREATE SCHEMA . . . .
CREATE SYNONYM . . .
CREATE TABLE . . . .
CREATE VIEW . . . . .
DATABASE . . . . . .
DEALLOCATE DESCRIPTOR
DECLARE . . . . . .
DELETE . . . . . . .
DESCRIBE . . . . . .
DROP AUDIT . . . . .
DROP DATABASE . . . .
DROP INDEX . . . . .
DROP PROCEDURE . . .
DROP SYNONYM . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7-9
7-9
7-13
7-17
7-20
7-37
7-39
7-41
7-45
7-47
7-48
7-50
7-55
7-59
7-68
7-69
7-71
7-76
7-98
7-102
7-106
7-108
7-124
7-127
7-133
7-134
7-136
7-138
7-139
目次
vii
DROP TABLE . . . . . . .
DROP VIEW . . . . . . .
EXECUTE . . . . . . . .
EXECUTE IMMEDIATE . . .
EXECUTE PROCEDURE . . .
FETCH . . . . . . . . .
FLUSH . . . . . . . . .
FREE . . . . . . . . . .
GET DESCRIPTOR . . . . .
GRANT . . . . . . . . .
INFO . . . . . . . . . .
INSERT . . . . . . . . .
LOAD. . . . . . . . . .
LOCK TABLE . . . . . . .
OPEN . . . . . . . . . .
OUTPUT . . . . . . . . .
PREPARE . . . . . . . .
PUT . . . . . . . . . .
RECOVER TABLE . . . . .
RENAME COLUMN
. . . .
RENAME TABLE . . . . .
REPAIR TABLE . . . . . .
REVOKE . . . . . . . .
ROLLBACK WORK . . . . .
ROLLFORWARD DATABASE .
SELECT . . . . . . . . .
SET CONSTRAINTS . . . . .
SET DEBUG FILE TO . . . .
SET DESCRIPTOR . . . . .
SET EXPLAIN . . . . . . .
SET ISOLATION . . . . . .
SET LOCK MODE . . . . .
SET LOG . . . . . . . .
SET OPTIMIZATION. . . . .
START DATABASE . . . . .
UNLOAD . . . . . . . .
UNLOCK TABLE . . . . . .
UPDATE . . . . . . . . .
UPDATE STATISTICS . . . .
WHENEVER . . . . . . .
セグメント . . . . . . . . .
条件 . . . . . . . .
制約名 . . . . . . .
viii IBM Informix SQL リファレンス・ガイド
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7-141
7-143
7-144
7-149
7-152
7-155
7-164
7-167
7-172
7-178
7-188
7-192
7-202
7-207
7-210
7-219
7-221
7-234
7-243
7-246
7-248
7-250
7-252
7-259
7-261
7-263
7-294
7-296
7-298
7-306
7-312
7-316
7-319
7-321
7-323
7-325
7-329
7-331
7-341
7-343
7-349
7-350
7-365
データベース名 . . . .
データ型 . . . . . .
DATETIME フィールド修飾子
式 . . . . . . . .
識別子 . . . . . . .
インデックス名 . . . .
INTERVAL フィールド修飾子
リテラル DATETIME . . . .
リテラル INTERVAL . . . .
リテラル番号 . . . . .
プロシージャー名 . . . .
引用符付きストリング . .
関係演算子 . . . . . .
シノニム名 . . . . . . .
表名 . . . . . . . . .
ビュー名 . . . . . .
第 8 章
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
.
.
.
.
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
.
7-367
7-370
7-373
7-375
7-403
7-417
7-419
7-421
7-424
7-427
7-429
7-431
7-434
7-438
7-440
7-444
ストアード・プロシージャーおよび SPL
概要 . . . . . . . . . . . . . . . . . . .
ストアード・プロシージャーと SPL の概要 . . . . .
ストアード・プロシージャーの機能 . . . . .
SQL とストアード・プロシージャーの関係 . . .
ストアード・プロシージャーの作成と使用 . . . . .
DB-Access の使用によるプロシージャーの作成 . .
埋め込み言語製品の使用によるプロシージャーの作成
プロシージャーのコメント化とドキュメント化 . .
コンパイル時エラーの診断 . . . . . . . .
コンパイル時警告の表示 . . . . . . . . .
テキストまたはマニュアルの生成 . . . . . .
プロシージャーの実行 . . . . . . . . .
プロシージャーのデバッグ . . . . . . . .
プロシージャーの再作成 . . . . . . . . .
ストアード・プロシージャーに対するアクセス権 . . .
作成時のアクセス権 . . . . . . . . . .
実行時のアクセス権 . . . . . . . . . .
アクセス権の取り消し . . . . . . . . .
変数と式 . . . . . . . . . . . . . . . . .
変数 . . . . . . . . . . . . . . .
式 . . . . . . . . . . . . . . .
プログラムの流れの制御 . . . . . . . . . . . .
分岐 . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
目次
8-5
8-5
8-6
8-6
8-7
8-7
8-8
8-8
8-9
8-10
8-11
8-11
8-14
8-16
8-16
8-17
8-17
8-19
8-19
8-19
8-23
8-25
8-26
ix
ループ . . . . . . .
関数処理 . . . . . . .
プロシージャーとの情報のやり取り
結果の戻り . . . . . .
例外処理 . . . . . . . . . .
エラーのトラップと復旧 . .
ON EXCEPTION 文の制御範囲
ユーザー生成の例外 . . .
SPL 文の構文 . . . . . . . .
CALL . . . . . . . . . .
CONTINUE . . . . . . . .
DEFINE . . . . . . . . .
EXIT . . . . . . . . . .
FOR . . . . . . . . . .
FOREACH . . . . . . . .
IF . . . . . . . . . . .
LET . . . . . . . . . .
ON EXCEPTION . . . . . .
RAISE EXCEPTION . . . . .
RETURN. . . . . . . . .
SYSTEM . . . . . . . .
TRACE . . . . . . . . .
WHILE . . . . . . . . .
付録 A
特記事項
用語集
索引
x IBM Informix SQL リファレンス・ガイド
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . .
. . .
. . . .
. . .
. . . .
. . .
. . .
. . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
8-26
8-28
8-29
8-29
8-32
8-32
8-33
8-34
8-36
8-37
8-40
8-41
8-49
8-51
8-55
8-59
8-63
8-66
8-72
8-74
8-77
8-79
8-83
概要
概要
はじめに . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
本書について
. . . . . . . . . . . . . . . . . . . . . . . . . . . 3
本書の構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
SQL を使用する IBM Informix 製品 . . . . . . . . . . . . . . . . . . 5
本書で扱う製品 . . . . . . . . . . . . . . . . . . . . . . . . . . 5
デモンストレーション・データベース . . . . . . . . . . . . . . . . 6
IBM Informix OnLine でのデモンストレーション・データベースの作成 7
IBM Informix SE でのデモンストレーション・データベースの作成 . . 8
IBM Informix Server 製品、バージョン 5.x の新規機能 . . . . . . . . 9
ドキュメント規則
文字の表記 . .
構文規則 . . .
コード規則の例
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
11
12
13
18
関連マニュアル . . . . . . . . . . . . . . . . . . . . .
オンライン・マニュアル . . . . . . . . . . . . . . . .
エラー・メッセージ・ファイル . . . . . . . . . . . . .
finderr スクリプト . . . . . . . . . . . . . . . .
rofferr スクリプト . . . . . . . . . . . . . . . .
ドキュメント・ノート、リリース・ノート、マシン・ノート
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
19
20
21
22
22
23
業界標準の準拠 . . . . . . . . . . . . . . . . . . . . . . . . . . 24
資料・製品についてのご意見 . . . . . . . . . . . . . . . . . . . . 24
2 IBM Informix SQL リファレンス・ガイド
はじめに
はじめに
この章では、本書の概要と本書で使用している規則について説明します。
本書について
IBM Informix SQL リファレンス・ガイド は、IBM Informix SQL チュートリアル・
ガイド の姉妹編として使用するように編集されています。IBM Informix SQL
チュートリアル・ガイド と同様に、本書は、コンピューターの使い方が分
かり、日常作業でコンピューターを活用している方々を対象にしています。
IBM Informix SQL チュートリアル・ガイド がリレーショナル・データベース
の背後にある考え方と概念を説明しているのに対し、本書は、IBM Informix
SQL チュートリアル・ガイド を読了し演習を済ませた後で日常的に使用で
きる参照資料として作成されています。
概要
3
本書の構成
本書の構成
IBM Informix SQL リファレンス・ガイド には、以下の章が組み込まれていま
す。
!
第 1 章、
『stores5 データベース』では、すべての IBM Informix アプリ
ケーション開発支援ツールにインストールされている stores5 とい
うデモンストレーション・データベースの構造と内容について説明
しています。本章では、このデータベースに含まれている 9 つの表
のマップを取り上げ、それらを結合する列を示し、それらの内容を
表示しています。
!
第 2 章、
『システム・カタログ』では、Informix システム・カタログ
の詳細について説明しています。このシステム・カタログ
は、stores5 データベースの構造を記述する 21 個のシステム・カタ
ログ表のコレクションです。本章では、システム・カタログの統計
のアクセスおよび更新方法説明し、システム・カタログの構造を示
し、各表内の各列の名前とデータ型をリストしています。
!
第 3 章、
『データ型』では、IBM Informix 製品によってサポートされ
る列データ型を定義し、異なるデータ型間の変換方法を述べ、特定
の値を算術式と関係型式で使用する方法について説明しています。
!
第 4 章、
『環境変数』では、IBM Informix 製品を正しく使用するため
に設定できる、または設定する必要があるさまざまな環境変数につ
いて説明しています。これらの変数は、ユーザーが使用する端末を
識別し、使用するソフトウェアの位置を指定し、使用する製品動作
環境の他のパラメーターを定義します。
!
第 5 章、
『SQLCA を使用したエラー処理』では、エラーの処理方法
を説明し、IBM Informix 4GL、IBM Informix ESQL/C、または
IBM Informix ESQL/COBOL を使用する場合の、SQL CommunicationsArea (SQLCA) の内容を検査する方法を述べています。
!
第 6 章、
『記述子の使用』では、動的 SQL 文のデータに関する記述
情報を保持している、システム記述子領域と SQL DescriptorArea
(sqlda) について説明しています。
!
第 7 章、
『構文』では、IBM Informix 製品によってサポートされるす
べての SQL 文の働きについて説明しています。詳細なダイアグラ
ムが、各 SQL 文のすべての節を詳しく説明しています。SQL ピク
チャーは、使用法の指示、関連した例、および参考資料からなって
ます。
4 IBM Informix SQL リファレンス・ガイド
SQL を使用する IBM Informix 製品
!
第 8 章、
『ストアード・プロシージャーおよび SPL』では、ストアー
ド・プロシージャーの作成および使用方法について説明していま
す。本章では、ストアード・プロシージャー言語 (SPL) 文の構文も
示しています。
!
付録の『特記事項』では、IBM 製品、機能、およびサービスにつ
いて説明しています。
!
本書の末尾に共通データベース用語の『用語集』が設けられてお
り、また包括的なインデックスを利用すれば、探したい領域を素早
く参照することができます。
SQL を使用する IBM Informix 製品
IBM では、SQL を使用する多くのアプリケーション開発支援ツールと CASE
ツールを作成しています。現在提供しているアプリケーション開発支援
ツールには、IBM Informix SQL、IBM Informix 4GL、および IBM Informix 4GL
Interactive Debugger の各製品、および、IBM Informix ESQL/C などの
IBM Informix 埋め込み言語製品があります。
IBM Informix 製品は、IBM Informix OnLine または IBM Informix SE のいずれかの
データベース・サーバーで作動します。ネットワークでアプリケーション
を実行する場合は、IBM Informix NET や IBM Informix STAR などの IBM Informix
クライアント / サーバー製品を使用します。IBM Informix NET は、複数の
IBM Informix SE データベース・サーバーで使用する通信機能です。
IBM Informix STAR では、複数の IBM Informix OnLine データベース・サーバー
への分散データベース・アクセスが可能です。また、クライアントで
IBM Informix NET を使用して、リモートの OnLine データベース・サーバー
にアクセスすることもできます ( ただし、同一データベース・サーバー上
に、IBM Informix STAR が OnLine でインストールされている場合 )。
本書で扱う製品
本書に記載する内容は、以下の製品およびバージョンに有効です。該当す
る場合は、SQL の使用上の違いを示しています。
!
IBM Informix 4GL (C コンパイラー・バージョンおよび Rapid Development System バージョン ) バージョン 4.1
概要
5
デモンストレーション・データベース
!
IBM Informix SQL バージョン 4.1
!
IBM Informix ESQL/C バージョン 5.2
!
IBM Informix ESQL/COBOL バージョン 5.0
!
IBM Informix SE バージョン 5.0
!
IBM Informix NET バージョン 5.2
!
IBM Informix OnLine バージョン 5.2
!
IBM Informix STAR バージョン 5.2
IBM Informix TP/XA User Manual では、SQL 文を IBM Informix TP/XA で使用する
際に知っておかなければならない特別の考慮事項について説明しています。
デモンストレーション・データベース
DB-Access ユーティリティー (IBM Informix データベース・サーバー製品と一
緒に提供される ) には、架空のスポーツ用品卸売業者に関する情報が入っ
ている stores5 というデモンストレーション・データベースが組み込まれて
います。デモンストレーション・アプリケーションを構成するサンプル・
コマンド・ファイルも組み込まれています。
本書で取り上げている例は、ほとんどがこの stores5 デモンストレーショ
ン・データベースに基づいています。stores5 データベースの詳細説明とそ
の内容のリストが、第 1 章、
『stores5 データベース』に示されています。
このデモンストレーション・データベースをインストールするために使用
するスクリプトは dbaccessdemo5 と呼ばれ、$INFORMIXDIR/bin ディレク
トリーに入っています。ユーザーが指定するデータベース名がデモンスト
レーション・データベースの名前になります 。データベース名を指定しな
いと、その名前は、デフォルトで、stores5 になります。データベースを命
名するためのルールは次のとおりです。
!
データベースの名前は最高 10 文字の長さにすることができる。
!
名前の先頭文字は文字 ( 数字や符号ではない ) でなければならない。
!
名前の残りの部分には、文字 ( 数字や符号を含まない )、文字 ( 数字
や符号を含む )、およびアンダースコアー (_) を使用することがで
きる。
!
DB-Access は大文字と小文字の区別をしない。
!
データベース名は一意でなければならない。
6 IBM Informix SQL リファレンス・ガイド
IBM Informix OnLine でのデモンストレーション・データベース
dbaccessdemo5 を実行するときは、データベースの作成者が、データベー
スの所有者兼データベース管理者 (DBA) です。
IBM Informix データベース・サーバー製品がインストール手順に従ってイン
ストールされていれば、デモンストレーション・データベースを構成する
ファイルが保護されているため、オリジナルのデータベースに対する変更
は一切行えません。
新規のデモンストレーション・データベースを使用したい場合は、いつで
も dbaccessdemo5 スクリプトを再実行することができます。このスクリプ
トは、データベースの作成が完了するとプロンプトを出し、サンプル・コ
マンド・ファイルを現行ディレクトリーにコピーするかどうかを尋ねます。
サンプル・ファイルに対する変更が完了し、それらのサンプル・ファイル
をオリジナルのバージョンと置き換えたくない場合は、プロンプトに対し
て “N” と答えます。サンプル・コマンド・ファイルをコピーしたい場合は、
プロンプトに対して “Y” と答えます。
IBM Informix OnLine でのデモンストレーション・
データベースの作成
IBM Informix OnLine 環境でデモンストレーション・データベースを構築する
には、次の手順を実行します。
1.
IBM Informix 製品をインストールするディレクトリーの名前を入れ
るための INFORMIXDIR 環境を設定します。SQLEXEC を $INFORMIXDIR/lib/sqlturbo に設定します。( 環境変数の詳しい説明につい
ては、第 4 章、
『環境変数』を参照してください。)
2.
SQL コマンド・ファイル用の新規ディレクトリーを作成します。こ
のディレクトリーを作成するには、次のように入力します。
mkdir dirname
3.
新規ディレクトリーを現行ディレクトリーにするには、次のように
入力します。
cd dirname
4.
デモンストレーション・データベースを作成し、サンプル・コマン
ド・ファイルをコピーするには、次のように入力します。
dbaccessdemo5 dbname
データベース用のデータがルート DB 領域に入ります。
概要
7
IBM Informix SE でのデモンストレーション・データベースの作成
このデータにアクセスするための SQL アクセス権をだれかに与えるには、
GRANT および REVOKE 文を使用します。GRANT および REVOKE 文につい
ての説明は、第 7 章にあります。
ディレクトリーにコピーしたコマンド・ファイルを使用するには、
dbaccessdemo5 スクリプトを実行したディレクトリーのパス名に含まれる
各ディレクトリーに関する権限を UNIX に読み取らせ、実行させる必要が
あります。ディレクトリーのコマンド・ファイルへのアクセス権限を他の
ユーザーに与えるには、UNIX chmod コマンドを使用します。
IBM Informix SE でのデモンストレーション・データ
ベースの作成
IBM Informix SE 環境でデモンストレーション・データベースを構築するに
は、次の手順を実行します。
1.
IBM Informix 製品をインストールするディレクトリーの名前を入れ
るための INFORMIXDIR 環境を設定します。SQLEXEC を $INFORMIXDIR/lib/sqlexec に設定します。( 環境変数の詳しい説明について
は、第 4 章を参照してください。)
2.
デモンストレーション・データベース用の新規ディレクトリーを作
成します。このディレクトリーには、デモンストレーション・デー
タベースが組み込まれたサンプル・コマンド・ファイルが入りま
す。このディレクトリーを作成するには、次のように入力します。
mkdir dirname
3.
新規ディレクトリーを現行ディレクトリーにするには、次のように
入力します。
cd dirname
4.
デモンストレーション・データベースを作成し、サンプル・コマン
ド・ファイルをコピーするには、次のように入力します。
dbaccessdemo5 dbname
dbaccessdemo5 スクリプトを実行すると、現行ディレクトリーに
dbname.dbs というサブディレクトリーが作成され、stores5 と関連するデー
タベース・ファイルがそこに入れられます。dbname.dbs ディレクトリーに
はデータ・ファイルとインデックス・ファイルの両方が入ります。
8 IBM Informix SQL リファレンス・ガイド
IBM Informix Server 製品、バージョン 5.x の新規機能
データベース、およびディレクトリーにコピーしたコマンド・ファイルを
使用するには、dbaccessdemo5 スクリプトを実行したディレクトリーのパ
ス名に含まれる各ディレクトリーに関する権限を UNIX に読み取らせ、実
行させる必要があります。ディレクトリーのコマンド・ファイルへのアク
セス権限を他のユーザーに与えるには、UNIX chmod コマンドを使用しま
す。オペレーティング・システム・ファイルとディレクトリー権限に関す
る詳しい内容については、システム管理者にお聞きください。UNIX 権限の
説明は、IBM Informix SE Administrator’s Guide にあります。
作成したデータベースへのアクセス権を他のユーザーに与えるには、
DB-Access で GRANT 文を使用して該当するアクセス権を付与します。アク
セス権を削除するには、REVOKE 文を使用します。GRANT および REVOKE
文の説明は、第 7 章にあります。
IBM Informix Server 製品、バージョン 5.x の
新規機能
このセクションでは、IBM Informix サーバー製品のバージョン 5.x にインプ
リメントされている主要な新規機能について説明します。
!
拡張接続 (IBM Informix OnLine のみ )
バージョン 5.2 IBM Informix OnLine データベース・サーバーを使用す
れば、同一マシンにサーバーとクライアントの両方がインストール
されているときに、バージョン 7.x クライアント・アプリケーショ
ン開発支援ツールに接続することができます。
!
チャンク・オフセットに対する拡張サポート (IBM Informix OnLine の
み)
バージョン 5.2 IBM Informix OnLine データベース・サーバーは、最高
2 テラバイトのチャンク・オフセット値をサポートします。
!
参照整合性とエンティティー整合性
新規のデータ整合性制約を使用すれば、表を作成したときに、列
( 複数の場合もある ) を表の 主キー または外部キー として表すよ
うに指定したり、2 つの表の間の依存関係を設定したりできます。
いったん指定すると、2 つの表の間の親子関係は、データベース・
サーバーによって管理されます。その他の制約を使用すると、列の
デフォルト値を指定したり、挿入値が合致しなければならない列の
条件を指定したりできます。
概要
9
IBM Informix Server 製品、バージョン 5.x の新規機能
!
ストアード・プロシージャー
ストアード・プロシージャーは、ユーザーが SQL 文とストアード・
プロシージャー言語 (SPL) を組み合わせて使用して作成した関数で
す。いったん作成すると、プロシージャーはオブジェクトとしてコ
ンパイル済みの最適化されたフォームでデータベースに格納され、
該当するアクセス権を持つ他のユーザーがそれを使用できるように
なります。クライアント / サーバー環境の場合、ストアード・プロ
シージャーを使用すると、ネットワーク・トラフィックを大幅に削
減することができます。
!
動的 SQL
システム記述子領域を使用して、動的 SQL の X/Open インプリメン
テーションに対するサポートが提供されます。このサポートでは、
新規の SQL 文 ALLOCATE DESCRIPTOR、DEALLOCATE DESCRIPTOR、
GET DESCRIPTOR、および SET DESCRIPTOR が使用されるほか、既存
の動的管理文の構文の変更も行われます。
!
オプティマイザー機能強化
新規の SET OPTIMIZATION 文を使用して、高レベルまたは低レベル
の照会最適化を選択するようデータベース・サーバーに指示するこ
とができます。デフォルトのレベル HIGH を使用すると、データ
ベース・サーバーは、可能なすべての最適化ストラテジーを調べ
て、その中から最適のストラテジーを選択することができます。こ
のレベルの最適化は、照会によっては、希望の最適化時間より長く
かかることがあるため、LOW の最適化レベルを設定するオプショ
ンが用意されています。
!
リレー・モジュール (IBM Informix NET のみ )
IBM Informix NET の新規のリレー・モジュール・コンポーネントは、
分散型データ処理環境のクライアント・マシン上に常駐し、アプリ
ケーション開発支援ツールと IBM Informix OnLine または IBM Informix
SE データベース・サーバー間で、ネットワーク・インターフェー
スを介してメッセージを中継 します。リレー・モジュールを使用
すれば、クライアントで Informix データベース・サーバー・プロセ
スを実行することなく、バージョン 5.0 アプリケーション開発支援
ツールとリモート・データベース・サーバーを接続することができ
ます。
10 IBM Informix SQL リファレンス・ガイド
ドキュメント規則
!
2 相コミット (IBM Informix STAR のみ )
新規の 2 相コミット・プロトコルを使用すれば、複数データベース
のデータを、単一トランザクション内の複数の OnLine データベー
ス・サーバーで操作することができます。2 相コミット・プロトコ
ルは、複数の OnLine データベース・サーバーにまたがるトランザ
クションが全か無かの選択でコミットされます。
!
XA 環境におけるトランザクション処理のサポート (IBM Informix
TP/XA のみ )
IBM Informix TP/XA を使用すれば、
「 X/OpenPreliminary Specification
(April 1990), Distributed Transaction Processing:The XA Interface」に順
応して OnLine データベース・サーバーをリソース・マネージャー
として使用することができます。IBM Informix TP/XA User Manual は、
X/Open 環境でトランザクションを管理する既存の SQL 文の動作の
変更について説明しています。
ドキュメント規則
本書では、IBM Informix OnLine をデータベース・サーバーとして使用するこ
とを前提にしています。本書では、IBM Informix SE 特有の機能や動作は注記
がしてあります。
概要
11
文字の表記
文字の表記
IBM Informix 製品マニュアルでは、標準セットの規則を使用して、新規項目
の紹介、画面表示の説明、コマンド構文の記述、などを行っています。本
書では、以下の文字表記を使用しています。
規則
意味
KEYWORD
プログラム言語文のすべての主エレメント ( キーワード ) は、
serif フォントの大文字で表示されます。
イタリック体
イタリック体
テキスト内では、新規用語と強調語はイタリック体で表示さ
れます。
ボールド体
プログラム・エンティティー ( クラス、イベント、表など )、
環境変数、ファイルおよびパス名、およびインターフェース・
エレメント ( アイコン、メニュー項目、ボタンなど ) の名前は
ボールド体で表示されます。
ボールド体
モノスペース
モノスペース
製品が表示する情報とユーザーが入力する情報はモノスペー
ス体で表示されます。
キー・ストローク
ユーザーが押すキーは、sans serif フォントの大文字で表示さ
れます。
♦
この記号は、製品固有の情報またはプラットフォーム固有の
情報の終わりを示します。
各表の一意な識別子 ( 主キー ) を示します。
ヒント : 文字の「入力」またはコマンドの「実行」を指示されたときは、
入力した後直ちに Enter を押してください。テキストの「タイプ入力」また
はその他のキーの「押し」を指示されたときは、Enter を押す必要はありま
せん。
12 IBM Informix SQL リファレンス・ガイド
構文規則
構文規則
構文ダイアグラムは、文の代替フォーム、必須およびオプションの文の一
部など、SQL 文またはコマンドのフォーマットを記述します。構文ダイア
グラムは独自の規則を持っています。このセクションでは、それらの規則
について詳しく説明し、図解を示します。SQL 文全体を、第 7 章、『構文』
にリストしています。ただし、一部の文は他のマニュアルで説明していま
す。
各構文ダイアグラムは、文で有効な必須およびオプションのエレメントの
シーケンスを表示します。つまり、
!
識別しやすくするために、キーワードは、そのとおりに入力する必
要がなくても、すべて大文字で示されています。
!
値を提供しなければならない単語はイタリック体になっています。
ダイアグラムは、左上のキーワードから始まり、右上の垂直方向縦線で終
わります。この 2 つのポイント間では、停止したり上へ戻ったりしない任
意のパスをトレースすることができます。それぞれのパスは、文の有効な
フォームを記述しています。
パスに沿っていけば、次のエレメントに出会う場合があります。
エレメント
説明
KEYWORD
単語は、示されているとおりに正確に大文字でつづらなけれ
ばなりません。ただし、それを入力するときは、大文字また
は小文字のいずれかを使用することができます。
(.,;+*-/)
句読点と算術表記は、示されているとおりに正確に入力しな
ければならないリテラル記号です。
" "
二重引用符は、示されているとおりに正確に入力しなければ
ならないリテラル記号です。必要であれば、二重引用符のペ
アを一重引用符のペアと置き換えることができます。二重引
用符と一重引用符を混合することはできません。
< 変数 >
山形かっこ (<>) で囲まれている語句は、指定する必要がある
値を表します。変数がボックスで示されていない限り、その
値の特性が構文ダイアグラムのすぐ後で説明されています。
その場合は、詳細説明のページ番号が変数名の後に示されて
います。
(3 の 1)
概要 13
構文規則
エレメント
ADD 節
7-14 ページ
関係演算子
SQLR 参照
I4GL
I4GL
説明
ボックス内の参照は、同じページまたは他のページのサブダ
イアグラムを表します。このポイントで、サブダイアグラム
がメイン・ダイアグラムに接合されていると想像してくださ
い。
別のマニュアルでの SQLR の参照は、第 7 章、
『構文』で説明
されている SQL 文またはセグメントを表します。このポイン
トで、その文またはセグメントがメイン・ダイアグラムに接
合されていると想像してください。
アイコンのコードは、このパスが一部の製品または特定の条
件でしか有効でないことを警告するシグナルです。このコー
ドは、このパスをサポートする製品または条件を示します。
次のコードが使用されています。
SE
SE
このパスは、IBM Informix SE でのみ有効です。
OL
OL
このパスは、IBM Informix OnLine でのみ有効です。
STAR
STAR
このパスは、IBM Informix STAR でのみ有効です。
STAR
INET
このパスは、IBM Informix NET でのみ有効です。
I4GL
I4GL
このパスは、IBM Informix 4GL でのみ有効です。
ISQL
ISQL
このパスは、IBM Informix SQL でのみ有効です。
ESQL
ESQL
このパスは、埋め込み言語製品 IBM Informix
ESQL/C または IBM Informix ESQL/COBOL の SQL
文でのみ有効です。
E/C
E/C
このパスは、IBM Informix ESQL/C でのみ有効です。
E/C
E/CO
このパスは、IBM Informix ESQL/COBOL でのみ有
効です。
E/C
DB
このパスは、DB-Access でのみ有効です。
STAR
SPL
このパスは、Informix ストアード・プロシージャー
言語 (SPL) を使用する場合にのみ有効です。
(3 の 2)
14 IBM Informix SQL リファレンス・ガイド
構文規則
エレメント
説明
++
このパスは、ANSI 標準 SQL の Informix 拡張機能で
す。Informix 拡張機能の検査を開始し、この構文分
岐をインクルードすると、警告が出ます。
DBANSIWARN 環境変数を設定すると、実行時に警
告が出ます。コンパイル時に警告が出るようにする
には、-ansi フラグを指定してコンパイルしてくだ
さい。
網掛けオプションはデフォルトです。このオプションを明示
的にタイプ入力しなくても、他のオプションを選択しなけれ
ば、有効です。
ALL
矢印のペアで囲まれた構文は、それがサブダイアグラムであ
ることを示します。
垂直方向縦線は終端記号であり、その文が完了していること
を示します。
メイン行の下の分岐はオプションのパスを示します。
IN
NOT
,
ループは反復可能なパスを示します。
< 変数 >
オプションの中のゲート ( 1 ) は、そのオプションが大きな
ループの中にあっても、一回しか使用できないことを示しま
す。
1
列
キー
(3 の 3)
概要 15
構文規則
第 7 章 では、左マージンに現れるアイコンは、付随している網掛けテキス
トが一部の製品または特定の条件でのみ有効であることを示します。前掲
のリストに示されているアイコンに加え、左マージンには次のアイコンも
現れます。
E/C
ANSI
このアイコンは、網掛けテキストに記述されている機能が有
効であるのは、データベースが ANSI 標準準拠である場合だ
けであることを示します。
E/C
X/O
このアイコンは、網掛けテキストに記述されている機能が、
動的 SQL 用の X/Open 標準に準拠していることを示します。
この機能は、-xopen フラグを指定して埋め込み言語アプリ
ケーションをコンパイルするときに使用できます。
図 1 は、CREATE DATABASE 文の構文ダイアグラムのエレメントを示してい
ます。
16 IBM Informix SQL リファレンス・ガイド
構文規則
図 1
構文ダイアグラムのエレメント
参照ボックス
参照ボックス
終端記号
シグナル
CREATE DATABASE < データベース名 >
IN <DB 領域 >
OL
変数
キーワード
SE
SE Log 節
OL
OL Log 節
句読点
SE Log 節
WITH
LOG IN
"< パス名 >"
MODE ANSI
サブダイアグラム
OL Log 節
LOG
WITH
BUFFERED
LOG MODE ANSI
このダイアグラムを使用して文を構築するには、左上の CREATE DATABASE
キーワードから開始します。次に、ダイアグラムを右へたどり、必要なオ
プションを通ります。ダイアグラムは、以下の情報を送ります。
1.
単語 CREATE DATABASE をタイプ入力してください。
2.
< データベース名 > を指定してください。
3.
終端記号への直接経路を取って停止するか、または 1 つ以上のオプ
ションのパスを取ることもできます。
4.
必要な場合は、単語 IN と DB 領域名をタイプ入力して DB 領域を指
定することができます。
概要 17
コード規則の例
5.
6.
必要であれば、ロギングを指定することができます。この場合、
ユーザーは使用するデータベース・サーバーによって制限を受けま
す。
!
IBM Informix OnLine を使用している場合は、OL Log 節 というサ
ブダイアグラムへ進んでください。キーワード WITH をタイプ
入力し、次に、LOG、BUFFERED LOG、または LOG MODE ANSI
のいずれかを選択しタイプ入力して、サブダイアグラムをたど
ります。次に、矢印をたどってメイン・ダイアグラムに戻りま
す。
!
IBM Informix SE を使用している場合は、SE Log 節 というサブダ
イアグラムへ進んでください。キーワード WITH LOG IN をタイ
プ入力し、二重引用符をタイプ入力し、パス名を提供し、引用
符をクローズして、サブダイアグラムをたどります。次に、行
の下の MODE ANSI オプションを選択するか、または引き続き
行をたどることができます。
いったんメイン・ダイアグラムに戻ると、終端記号に到達します。
CREATE DATABASE 文が完了しました。
コード規則の例
本書では、SQL コードの例が示されます。注記がある場合を除き、コード
は、いずれかの単一の IBM Informix アプリケーション開発支援ツールに特有
なものではありません。SQL 文のみがリストされる場合は、それらはセミ
コロンによって描かれません。この SQL コードを特定の製品で使用するに
は、その製品の構文規則を適用しなければなりません。たとえば、
DB-Access または IBM Informix SQL を使用している場合は、文をセミコロン
で描かなければなりません。埋め込み言語を使用している場合は、EXEC
SQL とセミコロン ( または他の適切な区切り記号 ) をそれぞれ、各文の先頭
と末尾に使用しなければなりません。
18 IBM Informix SQL リファレンス・ガイド
関連マニュアル
たとえば、次のようなコード例があります。
DATABASE stores
.
.
.
DELETE FROM customer
WHERE customer_num = 121
.
.
.
COMMIT WORK
CLOSE DATABASE
DB-Access または IBM Informix SQL を使用している場合は、各文の末尾にセ
ミコロンを追加してください。IBM Informix 4GL を使用している場合は、
コードが現れたとおりに使用してください。IBM Informix ESQL/C を使用して
いる場合は、各行の先頭に EXEC SQL またはドル記号 ($) を追加し、各行を
セミコロンで終了してください。SQL 文を特定のアプリケーション開発支
援ツールで使用する場合の詳細な指示については、使用している製品のマ
ニュアルを参照してください。
また、例示のドットは、完全なアプリケーションではさらにコードが追加
されることを示しますが、検討対象の概念を説明するにはそこまで示す必
要はありません。
関連マニュアル
補足説明については、次のタイプのマニュアルを参照してください。
!
オンライン・マニュアル
!
エラー・メッセージ・ファイル
!
ドキュメント・ノート、リリース・ノート、およびマシン・ノート
概要 19
オンライン・マニュアル
オンライン・マニュアル
マニュアルを電子フォーマットで収録している CD が IBM Informix 製品と一
緒に提供されます。マニュアルは、インストールすることも、CD から直接
アクセスすることもできます。オンライン・マニュアルのインストール、
読み取り、および出力については、CD に付随しているインストール説明書
を参照してください。同じオンライン・マニュアルは、IBM Informix オンラ
イン・マニュアル・サイト
http://www-3.ibm.com/software/data/informix/pubs/library/ からも入手できま
す。
IBM Informix SQL リファレンス・ガイド を補完する、以下のような多くの
IBM Informix 関連マニュアルを参照することができます。
!
SQL Quick Syntax Guide には、本書で説明するすべての文とセグメン
トが収録されています。
!
当リファレンス・ガイドの姉妹編 IBM Informix SQL チュートリアル・
ガイド には、IBM Informix 製品によってインプリメントされた SQL
に関するチュートリアルが含まれています。本書は、リレーショナ
ル・データベースを計画し、インプリメントするときに使用する、
基本的な考え方と用語を解説しています。本書は、データベースか
ら情報を抽出する方法、データベースを修正する方法、データベー
ス情報を抽出し、データベースを修正するためのプログラムを作成
する方法についても解説しています。
!
ユーザーまたは IBM Informix 製品をインストールする人は、
IBM Informix 製品を使用する前に、特定のリリース用の UNIX Products
インストール・ガイド を参照して、その製品が正しくセットアッ
プされていることを確認する必要があります。
!
ネットワークを介して IBM Informix 製品を使用している場合は、
IBM Informix NET and IBM Informix STAR インストールおよび構成のガイド
も参照する必要があります。
!
使用しているデータベース・サーバーに応じて、ユーザーまたはシ
ステム管理者は、IBM Informix OnLine 管理者ガイド または
IBM Informix SE Administrator’s Guide のいずれかを参照する必要があり
ます。
20 IBM Informix SQL リファレンス・ガイド
エラー・メッセージ・ファイル
!
エラーが発生した場合は、それらのマニュアルを番号でルックアッ
プし、エラーの原因と解決策を IBM Informix Error Messages マニュア
ルで調べることができます。必要であれば、次の「エラー・メッ
セージ・ファイル」セクションで示されているオンライン・メッ
セージ・ファイルでエラー・メッセージをルックアップすることが
できます。
エラー・メッセージ・ファイル
IBM Informix ソフトウェア製品は、すべてのエラー・メッセージとその修正
処置を収めた ASCII ファイルを備えています。これらのエラー・メッセー
ジの詳細については、IBM Informix Error Messages マニュアル (IBM Informix
Online マニュアル・サイト
http://www-3.ibm.com/software/data/informix/pubs/library/) を参照してくださ
い。
また、ASCII エラー・メッセージ・ファイルから直接、エラー・メッセー
ジにアクセスするには、次の 2 つの方法があります。
!
finderr スクリプトを使用して、1 つ以上のエラー・メッセージを端
末画面に表示する。
!
rofferr スクリプトを使用して、単一のエラー・メッセージまた
はエラー・メッセージ範囲を出力する。
これらのスクリプトは $INFORMIXDIR/bin ディレクトリーに入っています。
ASCII ファイルのパスは次のとおりです。
$INFORMIXDIR/msg/errmsg.txt
エラー・メッセージ番号の範囲は -1 ~ -33000 です。これらの番号を
finderr または rofferr スクリプトで指定するときは、負符号 (-) を省略する
ことができます。一部のメッセージは正の番号になっています。あまり起
こらないケースですが、それらの番号を表示したい場合は、メッセージ番
号の前に + サインを付けてください。
-1 ~ -100 のメッセージ番号はプラットフォーム依存型の場合があります。
この範囲のメッセージのメッセージ・テキストがユーザーのプラット
フォームに適用されない場合は、オペレーティング・システム・マニュア
ルを参照して、メッセージ番号の正確な意味を調べてください。
概要 21
エラー・メッセージ・ファイル
finderr スクリプト
finderr スクリプトを使用して、1 つ以上のエラー・メッセージとその修正
処置を端末画面に表示します。finderr スクリプトの構文は次のとおりで
す。
finderr
msg_num
+
1 つの finderr コマンドで任意の数のエラー・メッセージを指定することが
できます。finderr コマンドは、指定されたすべてのメッセージとその修正
処置を標準出力にコピーします。
たとえば、-359 エラー・メッセージを表示するには、次のコマンドを入力
して下さい。
finderr -359
次の例は、エラー・メッセージのリストを指定する方法を示したものです。
またこの例は、出力を UNIX more コマンドにパイプして表示を制御してい
ます。また、出力を別のファイルにリダイレクトして、エラー・メッセー
ジを保存したり出力したりできます。
finderr 233 107 113 134 143 144 154 | more
rofferr スクリプト
rofferr スクリプトを使用して、1 つのエラー・メッセージ、または 1 つの
エラー・メッセージ範囲を出力するための書式設定を行います。デフォル
トでは、rofferr は出力を画面に表示します。出力を nroff に送信して書式
設定コマンドを解釈してから、プリンターへ送信するか、または nroff 出力
が格納されているファイルへ送信して出力が可能になるまで待機する必要
があります。その後で、ファイルを出力します。nroff の使用方法および
ファイルの出力方法については、UNIX マニュアルを参照してください。
22 IBM Informix SQL リファレンス・ガイド
ドキュメント・ノート、リリース・ノート、マシン・ノート
rofferr スクリプトの構文は次のとおりです。
start_msg
rofferr
end_msg
+
+
次の例はエラー・メッセージ -359 を書式設定します。この例は、書式設定
されたエラー・メッセージを nroff にパイプし、nroff の出力をデフォル
ト・プリンターに送信します。
rofferr 359 | nroff -man | lpr
次の例は、-1300 ~ -4999 の範囲のすべてのエラー・メッセージを書式設定
してから出力します。
rofferr -1300 -4999 | nroff -man | lpr
ドキュメント・ノート、リリース・ノート、マシン・
ノート
IBM Informix のマニュアル・セットに加え、以下のオンライン・ファイル
($INFORMIXDIR/release ディレクトリーに入っている ) も、IBM Informix SQL
リファレンス・ガイド の内容を補足します。
オンライン・ファイル
目的
SQLRDOC_5.txt
ドキュメント・ノート・ファイルは、マニュアルに記載
されていない機能、またはその発行以降に変更された機
能を記述しています 。
ENGREL_5.txt
リリース・ノート・ファイルは、以前のバージョンの
IBM Informix 製品との機能上の違い、およびこれらの違
いが現行製品にどのような影響を与えているかを記述し
ています。このファイルには、すべての既知の問題とそ
の対応策に関する情報が含まれています。
ONLINE_5.txt
マシン・ノート・ファイルは、IBM Informix 製品をコン
ピューターで構成し、使用するために実行しなければな
らないアクションを記述しています。マシン・ノートは、
記述する製品ごとに指定されます。
概要
23
業界標準の準拠
これらのファイルにはアプリケーションおよびパフォーマンス問題に関す
る情報が含まれていますので、その中身をよく調べてください。
多くの IBM Informix 製品は、各メニュー・オプションをウォークスルーする
オンライン・ヘルプ・ファイルも提供します。ヘルプ機能を起動するには、
IBM Informix 製品の任意の場所で CTRL-W を押してください。
業界標準の準拠
米国規格協会 (ANSI) は、SQL の業界標準セットを確立しました。
IBM Informix SQL-based 製品は、SQL-92 EntryLevel (ANSI X3.135-1992 として
発行 ) (ISO 9075:1992 と同じもの ) に完全に準拠しています。さらに、
Informix データベース・サーバーの多くの機能も、SQL-92 Intermediate and
Full Level および X/Open SQL CAE ( 共通アプリケーション環境 ) 標準に準拠
しています。
資料・製品についてのご意見
本マニュアルに関するご意見やご感想は、次の URL からお送りください。
今後の参考にさせていただきます。
http://www.ibm.com/jp/manuals/main/mail.html
製品に関する情報などについては、日本アイ・ビー・エムの担当者にご連
絡ください。
24 IBM Informix SQL リファレンス・ガイド
stores5 データベース
本章の内容 .
. .
第
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 1-3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
stores5 データベース・マップ .
.
.
.
.
.
.
.
.
.
.
. 1-11
主キーと外部キーの関係 . . .
customer 表と orders 表 . .
orders 表と items 表 . . .
items 表と stock 表 . . .
stock 表と catalog 表. . .
stock 表と manufact 表 . .
cust_calls 表と customer 表.
call_type 表と cust_calls 表
state 表と customer 表 . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
stores5 データベース内のデータ .
.
.
.
.
.
.
.
.
.
. 1-21
表の構造
. .
customer 表.
orders 表 .
items 表. .
stock 表. .
catalog 表 .
cust_calls 表
call_type 表
manufact 表.
state 表. .
.
.
.
.
.
.
.
.
.
.
1-4
1-5
1-6
1-6
1-8
1-9
1-10
1-10
1-11
1-11
1-13
1-14
1-15
1-16
1-17
1-18
1-19
1-20
1-21
1
章
1-2 IBM Informix SQL リファレンス・ガイド
本章の内容
stores5 データベースには、想像上のビジネスを説明する表のセットが含ま
れています。本書に記載されている例は、このデータベースに基づいてい
ます。stores5 データベースは ANSI 対応ではありません。stores5 データ
ベースの作成に関する情報は、本書の「はじめに」の部分に記載してあり
ます。
本章には、次の 4 つの節があります。
!
最初の節では、stores5 データベース内での表の構造について説明
します。ここでは、各表の主キーを識別し、各列の名前とデータ型
をリストし、列にデフォルト値を入れるのか、チェック制約を入れ
るのかを指示します。列のインデックスは、一意のものとして識別
および分類されるほか、重複値に対応するものとしても識別および
分類されます。
!
2 番目の節には、stores5 データベース内の表のグラフィック・マッ
プを示し、列間の関係を指示します。
!
3 番目の節では、表の列間での主キーと外部キーの関係について説
明します。
!
最後の節では、stores5 データベースの各表に含まれるデータを示
します。
stores5 データベース 1-3
表の構造
表の構造
stores5 データベースには、米国西部で店舗を展開している架空のスポーツ
用品ディストリビューターに関する情報が入っています。このデータベー
スには、次の表が含まれています。
!
customer
!
orders
!
items
!
stock
!
catalog
!
cust_calls
!
call_type
!
manufact
!
state
以下の節で、各表について説明します。各表の固有 ID ( 主キー ) は網かけ
になっており、鍵の記号で表されます。
1-4 IBM Informix SQL リファレンス・ガイド
customer 表
customer 表
customer 表には、当該ディストリビューターに発注した小売店に関する情
報が含まれています。customer 表の列は、次のものです。
列名
データ型
説明
customer_num
SERIAL(101)
システム生成顧客番号
fname
CHAR(15)
保管担当者のファーストネーム
lname
CHAR(15)
保管担当者のラストネーム
company
CHAR(20)
店舗の名前
address1
CHAR(20)
店舗住所の先頭行
address2
CHAR(20)
店舗住所の 2 番目の行
city
CHAR(15)
市
state
CHAR(2)
州 (state 表への外部キー)
zipcode
CHAR(5)
郵便番号
phone
CHAR(18)
電話番号
zipcode 列は、インデックス付けされており、重複値に対応できます。
stores5 データベース 1-5
orders 表
orders 表
orders 表には、ディストリビューターの顧客が発行した注文に関する情報
が含まれています。orders 表の列は、次のものです。
列名
データ型
説明
order_num
SERIAL(1001)
システム生成注文番号
order_date
DATE
注文入力日付
customer_num
INTEGER
顧客番号 (customer 表への外部
キー )
ship_instruct
CHAR(40)
特別な配送指示
backlog
CHAR(1)
項目がバックログされているため
に注文に応じられないことを示し
ます。
y = yes
n = no
po_num
CHAR(10)
顧客購入注文番号
ship_date
DATE
配送日付
ship_weight
DECIMAL(8,2)
配送重量
ship_charge
MONEY(6)
配送料
paid_date
DATE
注文支払い日付
items 表
1 つの注文に、1 つまたは複数の項目を組み込むことができます。1 つの注
文の各項目の items 表に列が 1 つあります。items 表の列は、次のもので
す。
1-6 IBM Informix SQL リファレンス・ガイド
items 表
列名
データ型
説明
item_num
SMALLINT
注文について順次に割り当てられ
た項目番号
order_num
INTEGER
注文番号 (orders 表への外部キー )
stock_num
SMALLINT
項目の在庫番号 (stock 表への外部
キー )
manu_code
CHAR(3)
注文された項目のメーカー・コー
ド (manufact 表への外部キー )
quantity
SMALLINT
注文された数量 ( 値は > 1 でなけれ
ばなりません )
total_price
MONEY(8)
注文された数量 × 単価 = 項目の合
計価格
stores5 データベース 1-7
stock 表
stock 表
当該ディストリビューターは、各種メーカーの 41 種の異なるタイプのス
ポーツ用品を扱っています。複数のメーカーがスポーツ用品を提供できま
す。たとえば、ディストリビューターは、2 つのメーカーからのレーサー
用ゴーグルと、6 つのメーカーからのランニング・シューズを提供します。
stock 表は、ディストリビューターが販売する項目のカタログです。stock
表の列は、次のものです。
列名
データ型
説明
stock_num
SMALLINT
項目のタイプを識別する在庫番号
manu_code
CHAR(3)
メーカー・コード (manufact 表へ
の外部キー )
discription
CHAR(15)
項目の説明
unit_price
MONEY(6,2)
単価
unit
CHAR(4)
項目が注文される単位
each
pair
case
box
unit_descr
CHAR(15)
単位の説明
1-8 IBM Informix SQL リファレンス・ガイド
catalog 表
catalog 表
catalog 表は、在庫にある各項目について説明します。小売店は、ディスト
リビューターに発注する際にこの表を使用します。catalog 表の列は、次の
ものです。
列名
データ型
説明
catalog_num
SERIAL(10001)
システム生成カタログ番号
stock_num
SMALLINT
ディストリビューター在庫番号
(stock 表への外部キー )
manu_code
CHAR(3)
メーカー・コード (manufact 表へ
の外部キー )
cat_descr
TEXT
項目の説明
cat_picture
BYTE
項目のピクチャー ( バイナリー形
式のデータ )
cat_advert
VARCHAR(255, 65)
ピクチャの下のタグ行
catalog 表は、IBM Informix OnLine データベース・サーバーを使用している
場合にのみ表示されます。
stores5 データベース 1-9
cust_calls 表
cust_calls 表
注文、出荷、または苦情に関する情報を求める顧客からの電話はすべて記
録されます。cust_calls 表には、これらのタイプの顧客からの電話に関する
情報が含まれます。cust_calls 表の列は、次のものです。
列名
データ型
説明
customer_num
INTEGER
顧客番号 (customer 表への外部
キー )
call_dtime
DATETIME YEAR
TO MINUTE
電話がかかってきた日付と時刻
user_id
CHAR(18)
電話呼び出しを記録する担当者の
名前 ( デフォルトはユーザー・ロ
グイン名 )
call_code
CHAR(1)
電話呼び出しのタイプ (call_type
表への外部キー )
call_descr
CHAR(240)
電話呼び出しの説明
res_dtime
DATETIME YEAR
TO MINUTE
電話呼び出しが解決された日付と
時刻
res_descr
CHAR(240)
電話呼び出しが解決された方法の
説明
call_type 表
顧客からの電話と関連付けられた呼び出しコードは、call_type 表に格納さ
れます。call_type 表の列は、次のものです。
列名
データ型
説明
call_code
CHAR(1)
電話呼び出しコード
code_descr
CHAR (30)
電話呼び出しタイプの説明
1-10 IBM Informix SQL リファレンス・ガイド
manufact 表
manufact 表
ディストリビューターが扱っているスポーツ用品の 9 社の製造業者に関す
る情報が manufact 表に格納されます。manufact 表の列は、次のものです。
列名
データ型
説明
manu_code
CHAR(3)
メーカー・コード
manu_name
CHAR(15)
メーカーの名前
lead_time
INTERVAL DAY(3)
TO DAY
注文の出荷の準備期間
state 表
state 表には、米国の 50 州の名前と郵便用の省略語が含まれます。state 表
の列は、次のものです。
列名
データ型
説明
code
CHAR(2)
州コード
sname
CHAR(15)
州名
stores5 データベース・マップ
図 1-1 は stores5 データベース内の結合を表示します。1 つの表の列を別の
表の同じ列に結び付ける線は、表間 の関係、つまり結合を表します。
stores5 データベース
1-11
ship_instruct
fname
call_dtime
1-12 IBM Informix SQL リファレンス・ガイド
ship_weigth
address2
city
res_dtime
res_descr
same
cord
phone
zipcode
state
ship_date
address1
call_descr
call_descr
state
po_num
company
call_code
call_code
paid_date
ship_charge
backlog
lname
user_id
call_type
customer_num
customer_num
customer_num
oder_date
customer
cust_calls
oder_num
orders
total_price
quantity
manu_code
stock_num
order_num
item_num
items
unit_descr
unit
unit_price
description
manu_code
stock_num
stock
cat_advent
cat_picture
cat_descr
manu_code
stock_num
catalog_num
catalog
lead_time
manu_name
manu_code
manufact
stores5 データベース・マップ
図 1-1
stores5 データベース内の結合
主キーと外部キーの関係
主キーと外部キーの関係
stores5 データベースの表は、図 1-1 に示され、この節で識別されている 主
キーと外部キーの関係によってリンクされます。このタイプの関係を参照
制約 といいます。1 つの表の外部キーが別の表の主キーを参照 するためで
す。図 1-2 ~図 1-8 は、表間の関係と、1 つの表に格納されている情報が他
の表に格納されている情報をどのように補足するかを示しています。
stores5 データベース 1-13
customer 表と orders 表
customer 表と orders 表
customer 表には、顧客を識別する番号を保持する customer_num 列が、顧
客の名前、会社、住所、および電話番号の列と一緒に含まれています。た
とえば、Anthony Higgins に関する情報が入っている行では、customer_num
列に数値 104 が入っています。orders 表にも customer_num 列があり、ここ
には、特定の注文を出した顧客の番号が格納されます。orders 表で、
customer_num 列は、customer 表の customer_num 列を参照する外部キー
です。この関係を図 1-2 に示します。
図 1-2
customer_num 列 によって結合された表
customer 表 ( 詳細 )
customer_num
fname
lname
101
Ludwig
Pauli
102
Carole
Sadler
103
Philip
Currie
104
Anthony
Higgins
orders 表 ( 詳細 )
order_num
order_date
customer_num
1001
05/20/1991
104
1002
05/21/1991
101
1003
05/22/1991
104
1004
05/22/1991
106
図 1-2 によれば、顧客 104 (Anthony Higgins) は、注文を 2 つ出しています。
彼の顧客番号が orders 表の 2 行に表示されています。顧客番号は orders 表
の外部キーであるため、Anthony Higgins の名前、住所、および彼の注文に
関する情報を同時に検索できます。
1-14 IBM Informix SQL リファレンス・ガイド
orders 表と items 表
orders 表と items 表
orders 表と items 表は、各注文の識別番号が入っている order_num 列に
よってリンクされます。注文にいくつかの項目が含まれている場合、items
表のいくつかの行に同じ注文番号が現れます。items 表で、order_num 列
は、orders 表の order_num 列を参照する外部キーです。図 1-3 に、この関係
を示します。
図 1-3
order_num 列 によって結合された表
orders 表 ( 詳細 )
order_num
order_date
customer_num
1001
05/20/1991
104
1002
05/21/1991
101
1003
05/22/1991
104
items 表 ( 詳細 )
item_num
order_num
stock_num
manu_code
1
1001
1
HRO
1
1002
4
HSK
2
1002
3
HSK
1
1003
9
ANZ
2
1003
8
ANZ
3
1003
5
ANZ
stores5 データベース 1-15
items 表と stock 表
items 表と stock 表
items 表と stock 表は、2 つの列によって結合されます。項目の在庫番号が
格納される stock_num 列と、メーカーを識別するコードが格納される
manu_code 列です。項目を一意に識別するためには、在庫番号とメー
カー・コードの両方が必要です。たとえば、在庫番号 1 とメーカー・コー
ド HRO を持つ項目は Hero の野球用ボールですが、在庫番号 1 とメーカー・
コード HSK を持つ項目は Husky の野球用グラブです。同じ項目がいくつか
の注文に属している場合、同じ在庫番号とメーカー・コードが items 表の
複数の行に現れることがあります。items 表で、stock_num 列および
manu_code 列は、stock 表の stock_num 列および manu_code 列を参照する
外部キーです。これを、図 1-4 に示します。
図 1-4
stock_num 列と manu_code 列によって結合された表
items 表 ( 詳細 )
item_num
order_num
stock_num
manu_code
1
1001
1
HRO
1
1002
4
HSK
2
1002
3
HSK
1
1003
9
ANZ
2
1003
8
ANZ
3
1003
5
ANZ
1
1004
1
HRO
stock 表 ( 詳細 )
stock_num
manu_code
description
1
HRO
baseball gloves
1
HSK
baseball gloves
1
SMT
baseball gloves
1-16 IBM Informix SQL リファレンス・ガイド
stock 表と catalog 表
stock 表と catalog 表
stock 表と catalog 表は、2 つの列によって結合されます。項目の在庫番号が
格納される stock_num 列と、メーカーを識別するコードが格納される
manu_code 列です。項目を一意に識別するためには、両方の列が必要です。
catalog 表で、stock_num 列および manu_code 列は、stock 表の stock_num
列および manu_code 列を参照する外部キーです。図 1-5 に、この関係を示
します。
図 1-5
stock_num 列と manu_code 列によって結合された表
stock 表 ( 詳細 )
stock_num
manu_code
description
1
HRO
baseball gloves
1
HSK
baseball gloves
1
SMT
baseball gloves
catalog 表 ( 詳細 )
catalog_num
stock_num
manu_code
10001
1
HRO
10002
1
HSK
10003
1
SMT
10004
2
HRO
stores5 データベース 1-17
stock 表と manufact 表
stock 表と manufact 表
stock 表と manufact 表は、customer_num 列によって結合されます。メー
カーが複数の用具部分を製造している場合、同じメーカー・コードが stock
表の複数の行に現れることがあります。stock 表で、manu_code 列は、
manufact 表の manu_code 列を参照する外部キーです。この関係を、図 1-6
に示します。
図 1-6
manu_code 列によって結合された表
stock 表 ( 詳細 )
stock_num
manu_code
description
1
HRO
baseball gloves
1
HSK
baseball gloves
1
SMT
baseball gloves
manufact 表 ( 詳細 )
manu_code
manu_name
NRG
Norge
HSK
Husky
HRO
Hero
1-18 IBM Informix SQL リファレンス・ガイド
cust_calls 表と customer 表
cust_calls 表と customer 表
cust_calls 表と customer 表は、customer_num 列によって結合されます。顧
客が問題または質問を抱えてディストリビューターに複数回電話を掛けた
場合、同じ顧客番号が cust_calls 表の複数の行に現れることがあります。
cust_calls 表で、customer_num 列は、customer 表の customer_num 列を参
照する外部キーです。この関係を、図 1-7 に示します。
図 1-7
customer_num 列によって結合された表
customer 表 ( 詳細 )
customer_num
fname
lname
101
Ludwig
Pauli
102
Carole
Sadler
103
Philip
Currie
104
Anthony
Higgins
105
Raymond
Vector
106
George
Watson
cust_calls 表 ( 詳細 )
customer_num
call_dtime
user_id
106
1991-06-12 08:20
maryj
127
1991-07-31 14:30
maryj
116
1990-11-28 13:34
mannyh
116
1990-12-21 11:24
mannyh
stores5 データベース 1-19
call_type 表と cust_calls 表
call_type 表と cust_calls 表
call_type 表と cust_calls 表は、call_code 列によって結合されます。多数の
顧客が同じタイプ の問題を抱えている可能性があるため、cust_calls 表の複
数の行に同じ呼び出しコードが現れることがあります。cust_calls 表で、
call_code 列は、call_type 表の call_code 列を参照する外部キーです。この関
係を、図 1-8 に示します。
図 1-8
call_code 列によって結合された表
call_type 表 ( 詳細 )
call_code
code_descr
B
billing error
D
damaged goods
I
incorrect merchandise sent
L
late shipment
O
other
cust_calls 表 ( 詳細 )
customer_num
call_dtime
call_code
106
1991-06-12 08:20
D
127
1991-07-31 14:30
I
116
1990-11-28 13:34
I
116
1990-12-21 11:24
I
1-20 IBM Informix SQL リファレンス・ガイド
state 表と customer 表
state 表と customer 表
state 表と customer 表は、州コードが入っている列によって結合されます。
この列は、state 表では code、customer 表では state と呼ばれます。同じ州
に複数の顧客が住んでいる場合、同じ州コードが表の複数の行に現れます。
customer 表で、state 列は、state 表の code 列を参照する外部キーです。こ
れを図 1-9 に示します。
図 1-9
state/code 列によって結合された表
customer 表 ( 詳細 )
customer_num
fname
lname
---
state
101
Ludwig
Pauli
---
CA
102
Carole
Sadler
---
CA
103
Philip
Currie
---
CA
state 表 ( 詳細 )
code
sname
AK
Alaska
AL
Alabama
AR
Arkansas
AZ
Arizona
CA
California
stores5 データベース内のデータ
以下の表に、stores5 データベース内のデータを表示します。
stores5 データベース 1-21
customer_num
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
fname
Ludwig
Carole
Philip
Anthony
Raymond
George
Charles
Donald
Jane
Roy
Frances
Margaret
Lana
Frank
Alfred
Jean
Arnold
Dick
Bob
Fred
Jason
Cathy
Marvin
Chris
James
Eileen
Kim
Frank
lname
Pauli
Sadler
Currie
Higgins
Vector
Watson
Ream
Quinn
Miller
Jaeger
Keyes
Lawson
Beatty
Albertson
Grant
Parmelee
Sipes
Baxter
Shorter
Jewell
Wallack
O’Brian
Hanlon
Putnum
Henry
Neelie
Satifer
Lessor
company
All Sports Supplies
Sports Spot
Phil’s Sports
Play Ball!
Los Altos Sports
Watson & Son
Athletic Supplies
Quinn’s Sports
Sport Stuff
AA Athletics
Sports Center
Runners & Others
Sportstown
Sporting Place
Gold Medal Sports
Olympic City
Kids Korner
Blue Ribbon Sports
The Triathletes Club
Century Pro Shop
City Sports
The Sporting Life
Bay Sports
Putnum’s Putters
Total Fitness Sports
Neelie’s Discount Sp
Big Blue Bike Shop
Phoenix University
address1
213 Erstwild Court
785 Geary St
654 Poplar
East Shopping Cntr.
1899 La Loma Drive
1143 Carver Place
41 Jordan Avenue
587 Alvarado
Mayfair Mart
520 Topaz Way
3199 Sterling Court
234 Wyandotte Way
654 Oak Grove
947 Waverly Place
776 Gary Avenue
1104 Spinosa Drive
850 Lytton Court
5427 College
2405 Kings Highway
6627 N. 17th Way
Lake Biltmore Mall
543 Nassau Street
10100 Bay Meadows Rd
4715 S.E. Adams Blvd
1450 Commonwealth Av
2539 South Utica St
Blue Island Square
Athletic Department
1-22 IBM Informix SQL リファレンス・ガイド
12222 Gregory Street
1817 N. Thomas Road
Suite 1020
Suite 909C
350 W. 23rd Street
7345 Ross Blvd.
P. O. Box 3498
422 Bay Road
address2
customer 表
city
Sunnyvale
San Francisco
Palo Alto
Redwood City
Los Altos
Mountain View
Palo Alto
Redwood City
Sunnyvale
Redwood City
Sunnyvale
Los Altos
Menlo Park
Redwood City
Menlo Park
Mountain View
Redwood City
Oakland
Cherry Hill
Phoenix
Wilmington
Princeton
Jacksonville
Bartlesville
Brighton
Denver
Blue Island
Phoenix
state
CA
CA
CA
CA
CA
CA
CA
CA
CA
CA
CA
CA
CA
CA
CA
CA
CA
CA
NJ
AZ
DE
NJ
FL
OK
MA
CO
NY
AZ
zipcode
94086
94117
94303
94026
94022
94063
94304
94063
94086
94062
94085
94022
94025
94062
94025
94040
94063
94609
08002
85016
19898
08540
32256
74006
02135
80219
60406
85008
phone
408-789-8075
415-822-1289
415-328-4543
415-368-1100
415-776-3249
415-389-8789
415-356-9876
415-544-8729
408-723-8789
415-743-3611
408-277-7245
415-887-7235
415-356-9982
415-886-6677
415-356-1123
415-534-8822
415-245-4578
415-655-0011
609-663-6079
602-265-8754
302-366-7511
609-342-0054
904-823-4239
918-355-2074
617-232-4159
303-936-7731
312-944-5691
602-533-1817
stores5 データベース内のデータ
stores5 データベース内のデータ
items 表 ( 2 の 1)
item_num
order_num
stock_num
manu_code
quantity
total_price
1
1
2
1
2
3
1
2
3
4
1
2
3
4
1
2
3
4
5
1
2
3
4
5
1
2
1
1
2
1
1
2
1
2
3
4
1
2
1
1
2
1001
1002
1002
1003
1003
1003
1004
1004
1004
1004
1005
1005
1005
1005
1006
1006
1006
1006
1006
1007
1007
1007
1007
1007
1008
1008
1009
1010
1010
1011
1012
1012
1013
1013
1013
1013
1014
1014
1015
1016
1016
1
4
3
9
8
5
1
2
3
1
5
5
6
6
5
5
5
6
6
1
2
3
4
7
8
9
1
6
6
5
8
9
5
6
6
9
4
4
1
101
109
HRO
HSK
HSK
ANZ
ANZ
ANZ
HRO
HRO
HSK
HSK
NRG
ANZ
SMT
ANZ
SMT
NRG
ANZ
SMT
ANZ
HRO
HRO
HSK
HRO
HRO
ANZ
ANZ
SMT
SMT
ANZ
ANZ
ANZ
ANZ
ANZ
SMT
ANZ
ANZ
HSK
HRO
SMT
SHM
PRC
1
1
1
1
1
5
1
1
1
1
10
10
1
1
5
5
5
1
1
1
1
1
1
1
1
5
1
1
1
5
1
10
1
1
1
2
1
1
1
2
3
250.00
960.00
240.00
20.00
840.00
99.00
250.00
126.00
240.00
800.00
280.00
198.00
36.00
48.00
125.00
140.00
99.00
36.00
48.00
250.00
126.00
240.00
480.00
600.00
840.00
100.00
450.00
36.00
48.00
99.00
840.00
200.00
19.80
36.00
48.00
40.00
960.00
480.00
450.00
136.00
90.00
stores5 データベース 1-23
stores5 データベース内のデータ
items 表 (2 の 2)
item_num
order_num
stock_num
manu_code
quantity
3
4
1
2
3
1
2
3
4
5
1
1
2
1
2
3
4
1
2
3
1
2
3
4
5
6
1016
1016
1017
1017
1017
1018
1018
1018
1018
1018
1019
1020
1020
1021
1021
1021
1021
1022
1022
1022
1023
1023
1023
1023
1023
1023
110
114
201
202
301
307
302
110
5
304
111
204
301
201
201
202
205
309
303
6
103
104
105
110
304
306
HSK
PRC
NKL
KAR
SHM
PRC
KAR
PRC
SMT
HRO
SHM
KAR
KAR
NKL
ANZ
KAR
ANZ
HRO
PRC
ANZ
PRC
PRC
SHM
SHM
ANZ
SHM
1
1
4
1
2
2
3
1
4
1
3
2
4
2
3
3
2
1
2
2
2
2
1
1
1
1
call_type 表
call_code
code_descr
B
billing error
D
damaged goods
I
incorrect merchandise sent
L
late shipment
O
other
1-24 IBM Informix SQL リファレンス・ガイド
total_price
308.00
120.00
150.00
230.00
204.00
500.00
15.00
236.00
100.00
280.00
1499.97
90.00
348.00
75.00
225.00
690.00
624.00
40.00
96.00
96.00
40.00
116.00
80.00
228.00
170.00
190.00
order_num
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
order_date
05/20/1991
05/21/1991
05/22/1991
05/22/1991
05/24/1991
05/30/1991
05/31/1991
06/07/1991
06/14/1991
06/17/1991
06/18/1991
06/18/1991
06/22/1991
06/25/1991
06/27/1991
06/29/1991
07/09/1991
07/10/1991
07/11/1991
07/11/1991
07/23/1991
07/24/1991
07/24/1991
customer_num
104
101
104
106
116
112
117
110
111
115
104
117
104
106
110
119
120
121
122
123
124
126
127
ship_instruct
backlog po_num
express
n
B77836
PO on box; deliver back door only
n
9270
express
n
B77890
ring bell twice
y
8006
call before delivery
n
2865
after 10 am
y
Q13557
n
278693
closed Monday
y
LZ230
door next to grocery
n
4745
deliver 776 King St. if no answer
n
429Q
express
n
B77897
n
278701
express
n
B77930
ring bell, kick door loudly
n
8052
closed Mondays
n
MA003
delivery entrance off Camp St.
n
PC6782
North side of clubhouse
n
DM354331
SW corner of Biltmore Mall
n
S22942
closed til noon Mondays
n
Z55709
express
n
W2286
ask for Elaine
n
C3288
express
n
W9925
no deliveries after 3 p.m.
n
KF2961
orders 表
06/05/1991
07/06/1991
06/21/1991
06/29/1991
07/03/1991
06/29/1991
07/10/1991
07/03/1991
07/16/1991
07/12/1991
07/13/1991
07/13/1991
07/16/1991
07/16/1991
07/25/1991
07/30/1991
07/30/1991
ship_date
06/01/1991
05/26/1991
05/23/1991
05/30/1991
06/09/1991
ship_weight
20.40
50.60
35.60
95.80
80.80
70.80
125.90
45.60
20.40
40.60
10.40
70.80
60.80
40.60
20.60
35.00
60.00
70.50
90.00
14.00
40.00
15.00
60.00
ship_charge
10.00
15.30
10.80
19.20
16.20
14.20
25.20
13.80
10.00
12.30
5.00
14.20
12.20
12.30
6.30
11.80
18.00
20.00
23.00
8.50
12.00
13.00
18.00
08/06/1991
08/06/1991
09/20/1991
08/22/1991
09/02/1991
08/22/1991
07/31/1991
07/10/1991
08/31/1991
07/21/1991
08/21/1991
08/22/1991
08/29/1991
06/21/1991
paid_date
07/22/1991
06/03/1991
06/14/1991
stores5 データベース内のデータ
stores5 データベース 1-25
stores5 データベース内のデータ
stock 表 (2 の 1)
stock_num manu_code
1
1
1
2
3
4
4
5
5
5
6
6
7
8
9
101
101
102
102
103
104
105
105
106
107
108
109
109
110
110
110
110
110
111
112
113
114
HRO
HSK
SMT
HRO
HSK
HSK
HRO
NRG
SMT
ANZ
SMT
ANZ
HRO
ANZ
ANZ
PRC
SHM
SHM
PRC
PRC
PRC
PRC
SHM
PRC
PRC
SHM
PRC
SHM
PRC
ANZ
SHM
HRO
HSK
SHM
SHM
SHM
PRC
description
unit_price
unit
unit_descr
baseball gloves
baseball gloves
baseball gloves
baseball
baseball bat
football
football
tennis racquet
tennis racquet
tennis racquet
tennis ball
tennis ball
basketball
volleyball
volleyball net
bicycle tires
bicycle tires
bicycle brakes
bicycle brakes
front derailleur
rear derailleur
bicycle wheels
bicycle wheels
bicycle stem
bicycle saddle
crankset
pedal binding
pedal binding
helmet
helmet
helmet
helmet
helmet
10-spd, assmbld
12-spd, assmbld
18-spd, assmbld
bicycle gloves
250.00
800.00
450.00
126.00
240.00
960.00
480.00
28.00
25.00
19.80
36.00
48.00
600.00
840.00
20.00
88.00
68.00
220.00
480.00
20.00
58.00
53.00
80.00
23.00
70.00
45.00
30.00
200.00
236.00
244.00
228.00
260.00
308.00
499.99
549.00
685.90
120.00
case
case
case
case
case
case
case
each
each
each
case
case
case
case
each
box
box
case
case
each
each
pair
pair
each
pair
each
case
case
case
case
case
case
case
each
each
each
case
10 gloves/case
10 gloves/case
10 gloves/case
24/case
12/case
24/case
24/case
each
each
each
24 cans/case
24 cans/case
24/case
24/case
each
4/box
4/box
4 sets/case
4 sets/case
each
each
pair
pair
each
pair
each
6 pairs/case
4 pairs/case
4/case
4/case
4/case
4/case
4/case
each
each
each
10 pairs/case
1-26 IBM Informix SQL リファレンス・ガイド
stores5 データベース内のデータ
stock 表 (2 の 2)
stock_num manu_code
201
201
201
202
202
203
204
205
205
205
301
301
301
301
301
301
302
302
303
303
304
304
305
306
306
307
308
309
309
310
310
311
312
312
313
313
NKL
ANZ
KAR
NKL
KAR
NKL
KAR
NKL
ANZ
HRO
NKL
HRO
SHM
PRC
KAR
ANZ
HRO
KAR
PRC
KAR
ANZ
HRO
HRO
PRC
SHM
PRC
PRC
HRO
SHM
SHM
ANZ
SHM
SHM
HRO
SHM
ANZ
description
unit_price
unit
unit_descr
golf shoes
golf shoes
golf shoes
metal woods
std woods
irons/wedges
putter
3 golf balls
3 golf balls
3 golf balls
running shoes
running shoes
running shoes
running shoes
running shoes
running shoes
ice pack
ice pack
socks
socks
watch
watch
first-aid kit
tandem adapter
tandem adapter
infant jogger
twin jogger
ear drops
ear drops
kick board
kick board
water gloves
racer goggles
racer goggles
swim cap
swim cap
37.50
75.00
90.00
174.00
230.00
670.00
45.00
312.00
312.00
312.00
97.00
42.50
102.00
75.00
87.00
95.00
4.50
5.00
48.00
36.00
170.00
280.00
48.00
160.00
190.00
250.00
280.00
40.00
40.00
80.00
89.00
48.00
96.00
72.00
72.00
60.00
each
each
each
case
case
case
each
case
case
case
each
each
each
each
each
each
each
each
box
box
box
box
case
each
each
each
each
case
case
case
case
box
box
box
box
box
each
each
each
2 sets/case
2 sets/case
2 sets/case
each
24/case
24/case
24/case
each
each
each
each
each
each
each
each
24 pairs/box
24 pair/box
10/box
10/box
4/case
each
each
each
each
20/case
20/case
10/case
12/case
4 pairs/box
12/box
12/box
12/box
12/box
stores5 データベース 1-27
stock_num
1
1
1
2
3
3
4
4
5
5
5
6
6
7
8
9
catalog_num
10001
10002
10003
10004
10005
10006
10007
10008
1-28 IBM Informix SQL リファレンス・ガイド
10009
10010
10011
10012
10013
10014
10015
10016
ANZ
ANZ
HRO
ANZ
SMT
ANZ
SMT
NRG
HRO
HSK
SHM
HSK
HRO
SMT
HSK
HRO
manu_code
catalog 表 (7 の 1)
<BYTE value>
Steel eyelets. Nylon cording. Doublestitched. Sanctioned by the National
Athletic Congress.
Indoor. Finest leather. Professional
quality.
Indoor. Classic NBA style. Brown
leather.
Pro-core. Available in neon yellow,
green, and pink.
Soft yellow color for easy visibility in
sunlight or artificial light.
Wood frame, cat-gut strings.
Aluminum frame. Synthetic strings.
Graphite frame. Synthetic strings.
NFL-Style pigskin.
Norm Van Brocklin signature style.
Aluminum. Blue with black tape. 31",
20 oz or 22 oz; 32", 21 oz or 23 oz; 33",
22 oz or 24 oz.
Pro-style wood. Available in sizes: 31,
32, 33, 34, 35.
Quality Pigskin with Norm Van
Brocklin Signature
Highest Quality Football for High
School and Collegiate Competitions
Wide Body Amplifies Your Natural
Abilities by Providing More Power
Through Aerodynamic Design
<BYTE value>
<BYTE value>
<BYTE value>
<BYTE value>
<BYTE value>
<BYTE value>
<BYTE value>
<BYTE value>
<BYTE value>
Sanctioned Volleyball Netting for
Indoor Professional and Collegiate
Competition
Professional Volleyballs for Indoor
Competitions
Long-Life Basketballs for Indoor
Gymnasiums
Durable Construction Coupled with the
Brightest Colors Available
High-Visibility Tennis, Day or
Night
Antique Replica of Classic Wooden
Racquet Built with Cat-Gut Strings
Mid-Sized Racquet For the Improving
Player
Durable Aluminum for High School and
Collegiate Athletes
<BYTE value>
<BYTE value>
High-Technology Design Expands the
Sweet Spot
Highest Quality Ball Available, from the
Hand-Stitching to the Robinson
Signature
A Sturdy Catcher’s Mitt With the
Perfect Pocket
<BYTE value>
Jackie Robinson signature glove. Highest <BYTE value>
Professional quality, used by National
League.
Catcher’s mitt. Brown leather. Specify
right- or left-handed.
All-Leather, Hand-Stitched, DeepPockets, Sturdy Webbing that Won’t Let
Go
Babe Ruth signature glove. Black leather. <BYTE value>
Infield/outfield style. Specify right- or
left-handed.
cat_advert
Your First Season’s Baseball Glove
cat_picture
Brown leather. Specify first baseman’s or <BYTE value>
infield/outfield style. Specify right- or
left-handed.
cat_descr
stores5 データベース内のデータ
103
104
105
105
10021
10022
10023
10024
107
102
10020
10026
102
10019
106
101
10018
10025
101
stock_num
10017
catalog_num
PRC
PRC
SHM
PRC
PRC
PRC
PRC
SHM
SHM
PRC
manu_code
catalog 表 (7 の 2)
Thrust-Bearing and Spring-Sleeve
Brake Set Guarantees Smooth
Action
Computer Design Delivers Rigid
Yet Vibration-Free Brakes
Climb Any Mountain: ProCycle’s
Front Derailleur Adds Finesse to
Your ATB
Computer-Aided Design Engineers
100-Tooth Capacity Into ProCycle’s
Rear Derailleur
Durable Training Wheels That Hold
True Under Toughest Conditions
<BYTE value>
<BYTE value>
<BYTE value>
Compact leading-action design enhances
shifting. Deep cage for super-small granny
gears. Extra strong construction to resist offroad abuse.
Floating trapezoid geometry with extra thick <BYTE value>
parallelogram arms. 100-tooth capacity.
Optimum alignment with any freewheel.
<BYTE value>
<BYTE value>
Available in three styles: Mens racing; Mens <BYTE value>
touring; and Women’s. Anatomical gel
construction with lycra cover. Black or
black/hot pink.
Hard anodized alloy with pearl finish. 6mm
hex bolt hardware. Available in lengths of
90-140mm in 10mm increments.
<BYTE value>
Polished alloy. Sealed-bearing, quickrelease hubs. Double-butted. Front wheels
are laced 15g/2-cross. Rear wheels are laced
15g/3-cross.
Front wheels laced with 15g spokes in a
3-cross pattern. Rear wheels laced with 14g
spikes in a 3-cross pattern.
Computer-aided design with low-profile
pads. Cold-forged alloy calipers and beefy
caliper bushing. Aero levers. Set includes
calipers, levers, and cables.
Thrust bearing and coated pivot
washer/spring sleeve for smooth action.
Slotted levers with soft gum hoods. Twotone paint treatment. Set includes calipers,
levers, and cables.
The Ultimate In Riding Comfort,
Lightweight With Anatomical
Support
ProCycle Stem with Pearl
Finish
Extra Lightweight Wheels for
Training or High-Performance
Touring
The Perfect Tire for Club Rides or
Training
Durable nylon casing with butyl tube for
superior air retention. Center-ribbed tread
with herringbone side. Coated sidewalls
resist abrasion.
<BYTE value>
cat_advert
Ultimate in Puncture Protection,
Tires Designed for In-City
Riding
cat_picture
<BYTE value>
Reinforced, hand-finished tubular.
Polyurethane belted. Effective against
punctures. Mixed tread for super wear
and road grip.
cat_descr
stores5 データベース内のデータ
stores5 データベース 1-29
108
109
109
110
110
110
110
110
111
10028
10029
10030
10031
10032
10033
10034
10035
stock_num
10027
catalog_num
1-30 IBM Informix SQL リファレンス・ガイド
SHM
HSK
HRO
SHM
ANZ
PRC
SHM
PRC
SHM
manu_code
Mountain Bike Helmet: Smooth
Cover Eliminates the Worry of
Brush Snags But Delivers
Maximum Protection
Lightweight Plastic with Vents
Assures Cool Comfort Without
Sacrificing Protection
Teardrop Design Used by Yellow
Jerseys, You Can Time the
Difference
Fully Equipped Bicycle Designed
for the Serious Commuter Who
Mixes Business With Pleasure
Dense outer layer combines with softer inner <BYTE value>
layer to eliminate the mesh cover, no snagging
on brush. Meets both ANZI and Snell
standards for impact protection. 8.0 oz.
<BYTE value>
Newest ultralight helmet uses plastic shell.
Largest ventilation channels of any helmet on
the market. 8.5 oz.
Aerodynamic (teardrop) helmet covered with <BYTE value>
anti-drag fabric. Credited with shaving 2
seconds/mile from winner’s time in Tour de
France time-trial. 7.5 oz.
Light-action shifting 10 speed. Designed for <BYTE value>
the city commuter with shock-absorbing front
fork and drilled eyelets for carry-all racks or
bicycle trailers. Internal wiring for generator
lights. 33 lbs.
Minimum Chin Contact, FeatherLight, Maximum Protection Helmet
Feather-Light, Quick-Release,
Maximum Protection Helmet
<BYTE value>
Super-lightweight. Meets both ANZI and
Snell standards for impact protection. 7.5 oz.
Quick-release shadow buckle.
<BYTE value>
Ingenious Pedal/Clip Design
Delivers Maximum Power And Fast
Unlocking
Ingenious new design combines button on sole <BYTE value>
of shoe with slot on a pedal plate to give riders
new options in riding efficiency. Choose full
or partial locking. Four plates mean both top
and bottom of pedals are slotted—no fishing
around when you want to engage full power.
Fast unlocking ensures safety when maneuverability is paramount.
No buckle so no plastic touches your chin.
Meets both ANZI and Snell standards for
impact protection. 7.5 oz. Lycra cover.
Classic Toeclip Improved To
Prevent Soreness At Clip Buckle
Steel toe clips with nylon strap. Extra wide at <BYTE value>
buckle to reduce pressure.
cat_advert
Customize Your Mountain Bike
With Extra-Durable Crankset
cat_picture
Double or triple crankset with choice of chain- <BYTE value>
rings. For double crankset, chainrings from
38-54 teeth. For triple crankset, chainrings
from 24-48 teeth.
cat_descr
catalog 表 (7 の 3)
stores5 データベース内のデータ
202
202
203
204
10042
10043
10044
10045
205
201
10041
10048
201
10040
205
201
10039
205
114
10038
10047
113
10037
10046
112
stock_num
10036
catalog_num
HRO
ANZ
NKL
KAR
NKL
KAR
NKL
KAR
ANZ
NKL
PRC
SHM
SHM
manu_code
cat_picture
cat_advert
Set of Irons Available From Factory at
Tremendous Savings: Discontinued Line
High-Quality Beginning Set of Irons
Appropriate for High School Competitions
Set of eight irons includes 3 through 9 <BYTE value>
irons and pitching wedge. Originally
priced at $489.00.
Ideally balanced for optimum control. <BYTE value>
Nylon-covered shaft.
Fluorescent yellow.
Combination fluorescent yellow and
standard white.
White only.
HiFlier Golf Balls: Case Includes
Fluorescent Yellow and Standard White
High-Quality Woods Appropriate for High
School Competitions or Serious Amateurs
Full set of woods designed for precision <BYTE value>
control and power performance.
<BYTE value>
Starter Set of Woods, Ideal for High School
and Collegiate Classes
Complete starter set utilizes gold shafts. <BYTE value>
Balanced for power.
Long Drive Golf Balls: Fluorescent Yellow
Karsten’s Top Quality Shoe Combines
Leather and Leather Mesh
Leather and leather mesh for maximum <BYTE value>
ventilation. Waterproof lining to keep
feet dry. Available in white & gray or
white & ivory. Specify size.
Long Drive Golf Balls: White
Waterproof Protection Ensures Maximum
Comfort and Durability
In All Climates
<BYTE value>
Guaranteed waterproof. Full leather
upper. Available in white, bone, brown,
green, and blue. Specify size.
<BYTE value>
Full-Comfort, Long-Wearing Golf Shoes
for Men and Women
<BYTE value>
Designed for comfort and stability.
Available in white & blue or white
& brown. Specify size.
<BYTE value>
Riding Gloves For Comfort and Protection
<BYTE value>
Padded leather palm and stretch mesh
merged with terry back; Available in
tan, black, and cream. Sizes S, M, L,
XL.
Designed for the Serious Competitor, The
Complete Racing Machine
We Selected the Ideal Combination of
Touring Bike Equipment, Then Turned
It Into This Package Deal: High-Performance on the Roads, Maximum Pleasure
Everywhere
<BYTE value>
Ultra-lightweight. Racing frame
geometry built for aerodynamic
handlebars. Cantilever brakes. Index
shifting. High-performance gearing.
Quick-release hubs. Disk wheels.
Bladed spokes.
Created for the beginner enthusiast.
<BYTE value>
Ideal for club rides and light touring.
Sophisticated triple-butted frame
construction. Precise index shifting. 28
lbs.
cat_descr
catalog 表 (7 の 4)
stores5 データベース内のデータ
stores5 データベース 1-31
301
301
301
301
301
301
302
303
303
10050
10051
10052
10053
10054
10055
10056
10057
stock_num
10049
catalog_num
1-32 IBM Informix SQL リファレンス・ガイド
KAR
PRC
KAR
ANZ
KAR
PRC
SHM
HRO
NKL
manu_code
<BYTE value>
100% nylon blend for optimal wicking and
comfort. We’ve taken out the cotton to eliminate
the risk of blisters and reduce the opportunity for
infection. Specify mens or women’s.
100% Nylon Blend Socks - No
Cotton
Knock Their Socks Off With YOUR
Socks
Finally, An Ice Pack for Achilles
Injuries and Shin Splints that You
Can Take to the Office
Re-usable ice pack with velcro strap. For general <BYTE value>
use. Velcro strap allows easy application to arms
or legs.
<BYTE value>
Motion Control, Protection, and
Extra Toebox Room
<BYTE value>
Cantilever sole provides shock absorption and
energy rebound. Positive traction shoe with
ample toe box. Ideal for runners who need a wide
shoe. Available in mens and women’s. Specify
size.
Neon nylon. Perfect for running or aerobics.
Indicate color: Fluorescent pink, yellow, green,
and orange.
Durable Training Flat That Can
Carry You Through Marathon Miles
Anatomical last holds your foot firmly in place. <BYTE value>
Feather-weight cushioning delivers the responsiveness of a racing flat. Specify mens/women’s,
size.
The Training Shoe Engineered for
Marathoners and Ultra-Distance
Runners
A Woman’s Racing Flat That
Combines Extra Forefoot Protection
With a Slender Heel
<BYTE value>
Supportive, stable racing flat. Plenty of forefoot <BYTE value>
cushioning with added motion control. Women’s
only. D widths available. Specify size.
For runners who log heavy miles and need a
durable, supportive, stable platform.
Mesh/synthetic upper gives excellent moisture
dissipation. Stability system uses rear antipronation platform and forefoot control plate for
extended protection during high-intensity
training. Specify mens/women’s, size.
Pronators and Supinators Take Heart:
A Serious Training Shoe For Runners
Who Need Motion Control
Engineered for serious training with exceptional <BYTE value>
stability. Fabulous shock absorption. Great
durability. Specify mens/women’s, size.
cat_advert
Maximum Protection For HighMileage Runners
cat_picture
Super shock-absorbing gel pads disperse vertical <BYTE value>
energy into a horizontal plane for extraordinary
cushioned comfort. Great motion control. Mens
only. Specify size.
cat_descr
catalog 表 (7 の 5)
stores5 データベース内のデータ
304
304
305
306
306
307
308
309
309
310
310
311
312
312
10059
10060
10061
10062
10063
10064
10065
10066
10067
10068
10069
10070
10071
stock_num
10058
catalog_num
HRO
SHM
SHM
ANZ
SHM
SHM
HRO
PRC
PRC
SHM
PRC
HRO
HRO
ANZ
manu_code
cat_advert
Durable competition-style goggles.
Available in blue, grey, or white.
Hydrodynamic egg-shaped lens.
Ground-in anti-fog elements; Available in
blue or smoke.
Swim gloves. Webbing between fingers
promotes strengthening of arms. Cannot be
used in competition.
Hot Training Tool - Webbed Swim Gloves
Build Arm Strength and Endurance
Anti-Fog Swimmer’s Goggles:
Quantity Discount
Swim Goggles: Traditional Rounded Lens
For Greater Comfort
<BYTE value>
<BYTE value>
<BYTE value>
High-Quality Kickboard
Exceptionally Durable, Compact
Kickboard for Team Practice
Blue heavy-duty foam board with Shimara <BYTE value>
or team logo.
<BYTE value>
White. Standard size.
Extra-gentle formula. Can be used
every day for prevention or treatment of
swimmer’s ear.
Swimmer’s Ear Drops Specially
Formulated for Children
Swimmers Can Prevent Ear Infection
All Season Long
As Your Family Grows, Infant Jogger
Grows With You
Infant Jogger Keeps A Running Family
Together
Consider a Touring Vacation For the
Entire Family: A Lightweight, Touring
Tandem for Parent and Child
Enjoy Bicycling With Your Child On a
Tandem; Make Your Family Outing Safer
Comprehensive First-Aid Kit Essential
for Team Practices, Team Traveling
Waterproof Triathlete Watch In
Competition Colors
Athletic Watch w/4-Lap Memory
<BYTE value>
Allows mom or dad to take the baby out, too. <BYTE value>
Fits children up to 21 pounds. Navy blue
with black trim.
Allows mom or dad to take both children! <BYTE value>
Rated for children up to 18 pounds.
<BYTE value>
Prevents swimmer’s ear.
cat_picture
cat_descr
<BYTE value>
Provides time, date, dual display of
lap/cumulative splits, 4-lap memory, 10hr
count-down timer, event timer, alarm, hour
chime, waterproof to 50m, velcro band.
<BYTE value>
Split timer, waterproof to 50m. Indicate
color: Hot pink, mint green, space black.
Contains ace bandage, anti-bacterial cream, <BYTE value>
alcohol cleansing pads, adhesive bandages
of assorted sizes, and instant-cold pack.
<BYTE value>
Converts a standard tandem bike into an
adult/child bike. User-tested Assembly
Instructions
<BYTE value>
Converts a standard tandem bike into an
adult/child bike. Lightweight model.
catalog 表 (7 の 6)
stores5 データベース内のデータ
stores5 データベース 1-33
313
313
302
10073
10074
stock_num
10072
catalog_num
HRO
ANZ
SHM
manu_code
<BYTE value>
Re-usable ice pack. Store in the freezer <BYTE value>
for instant first-aid. Extra capacity to
accommodate water and ice.
Silicone swim cap. Squared-off top.
One size. White.
cat_descr
cat_picture
Silicone swim cap. One size. Available <BYTE value>
in white, silver, or navy. Team Logo
Imprinting Available.
catalog 表 (7 の 7)
cat_advert
Water Compartment Combines With
Ice to Provide Optimal Orthopedic
Treatment
Durable Squared-off Silicone Swim Cap
Team Logo Silicone Swim Cap
stores5 データベース内のデータ
1-34 IBM Informix SQL リファレンス・ガイド
call_dtime
1991-06-12 8:20
1991-07-07 10:24
1991-07-01 15:00
1991-07-10 14:05
1991-07-31 14:30
1990-11-28 13:34
1990-12-21 11:24
customer_num
106
110
119
121
127
116
116
mannyn
mannyn
maryj
maryj
richc
richc
maryj
user_id
I
I
I
O
B
L
D
call_code
res_dtime
res_descr
1991-07-02 8:21
Spoke with Jane Akant in
Finance. She found the error and
is sending new bill to customer.
1991-07-07 10:30 Checked with shipping (Ed
Smith). Order sent yesterday- we
were waiting for goods from
ANZ. Next time will call with
delay if necessary.
Authorized credit for two cans to
customer, issued apology. Called
ANZ buyer to report the QA
problem.
Second complaint from this
customer! Received two cases
right-handed outfielder gloves
(1 HRO) instead of one case
lefties.
Received plain white swim caps
(313 ANZ) instead of navy with
team logo (313 SHM).
Received Hero watches (item #
304) instead of ANZ watches.
1990-12-27 08:19 Memo to shipping (Ava Brown)
to send case of left-handed
gloves, pick up wrong case;
memo to billing requesting 5%
discount to placate customer due
to second offense and lateness of
resolution because of holiday.
1990-11-28 16:47 Shipping found correct case in
warehouse and express mailed it
in time for swim meet.
Sent memo to shipping to send
ANZ item 304 to customer and
pickup HRO watches. Should be
done tomorrow, 8/1.
Customer likes our merchandise. 1991-07-10 14:06 Sent note to marketing group of
Requests that we stock more types
interest in infant joggers.
of infant joggers. Will call back to
place order.
Bill does not reflect credit from
previous order.
Order placed one month ago
(6/7) not received.
Order was received, but two of the 1991-06-12 8:25
cans of ANZ tennis balls within
the case were empty.
call_descr
cust_calls 表
stores5 データベース内のデータ
stores5 データベース 1-35
stores5 データベース内のデータ
manufact 表
manu_code
manu_name
lead_time
ANZ
HSK
HRO
NRG
SMT
SHM
KAR
NKL
PRC
Anza
Husky
Hero
Norge
Smith
Shimara
Karsten
Nikolus
ProCycle
5
5
4
7
3
30
21
8
9
state 表
code
sname
code
sname
AK
AL
AR
AZ
CA
CT
CO
D.C.
DE
FL
GA
HI
IA
ID
IL
IN
KS
KY
LA
MA
MD
ME
MI
MN
MO
MS
Alaska
Alabama
Arkansas
Arizona
California
Connecticut
Colorado
DC
Delaware
Florida
Georgia
Hawaii
Iowa
Idaho
Illinois
Indiana
Kansas
Kentucky
Louisiana
Massachusetts
Maryland
Maine
Michigan
Minnesota
Missouri
Mississippi
MT
NE
NC
ND
NH
NJ
NM
NV
NY
OH
OK
OR
PA
PR
RI
SC
SD
TN
TX
UT
VA
VT
WA
WI
WV
WY
Montana
Nebraska
North Carolina
North Dakota
New Hampshire
New Jersey
New Mexico
Nevada
New York
Ohio
Oklahoma
Oregon
Pennsylvania
Puerto Rico
Rhode Island
South Carolina
South Dakota
Tennessee
Texas
Utah
Virginia
Vermont
Washington
Wisconsin
West Virginia
Wyoming
1-36 IBM Informix SQL リファレンス・ガイド
システム・カタログ
本章の内容 .
. .
.
.
.
.
.
.
.
.
.
.
.
.
. 2-3
システム・カタログの使用 . . . .
システム・カタログへのアクセス .
システム・カタログ・データの更新
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 2-4
. 2-8
. 2-9
システム・カタログの構造
SYSBLOBS . . . .
SYSCHECKS . . . .
SYSCOLAUTH . . . .
SYSCOLDEPEND . . .
SYSCOLUMNS . . . .
SYSCONSTRAINTS . .
SYSDEFAULTS . . .
SYSDEPEND . . . .
SYSINDEXES . . . .
SYSOPCLSTR . . . .
SYSPROCAUTH . . .
SYSPROCBODY . . .
SYSPROCEDURES . . .
SYSPROCPLAN . . .
SYSREFERENCES . . .
SYSSYNONYMS . . .
SYSSYNTABLE . . .
SYSTABAUTH . . . .
SYSTABLES . . . .
SYSUSERS . . . .
SYSVIEWS . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
第
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2-9
2-10
2-11
2-11
2-12
2-13
2-16
2-17
2-18
2-18
2-22
2-24
2-25
2-26
2-27
2-28
2-28
2-29
2-30
2-31
2-34
2-34
2
章
システム・カタログ・マップ .
2-2 IBM Informix SQL リファレンス・ガイド
.
.
.
.
.
.
.
.
. .
.
.2-35
本章の内容
システム・カタログは、データベースの構造を記述する表から構成されま
す。各システム・カタログ表には、データベース内のエレメントに関する
情報が入っています。システム・カタログは、ビュー、許可ユーザー、作
成された各表と関連付けられたアクセス権の追跡も行います。
システム・カタログ表は、データベースを作成すると自動的に生成される
ため、データベース内の他の表を照会するときにシステム・カタログ表を
照会できます。新たに作成されたデータベースのデータおよびそのデータ
ベースのための 21 のシステム・カタログ表は、dbspace というディスクの
共通域に収容されます。IBM Informix SE データベース・サーバーを使用する
場合、新たに作成されたデータベースの 19 のシステム・カタログ表は
databasename.dbs ディレクトリーに収容されます。システム・カタログを
構成する表はすべて、“sys” というプレフィックスを持っています ( たとえ
ば、systables システム・カタログ表 )。
本章には、次のトピックが記載されています。
!
システム・カタログ内の表へのアクセス方法
!
システム・カタログ内の統計の更新方法
!
各列の名前およびデータ型を含む、システム・カタログを構成する
表の構造
システム・カタログ 2-3
システム・カタログの使用
システム・カタログの使用
データベース・サーバーは、システム・カタログに絶えずアクセスします。
SQL 文が処理されるたびに、データベース・サーバーは、システム・カタ
ログにアクセスしてシステム・アクセス権の決定、表名または列名の追加
または確認などを行います。たとえば、CREATESCHEMA ブロックは、その
それぞれのインデックスとアクセス権を使って、customer システム・カタ
ログ表を stores5 データベースに追加します。このブロックは、また、
customer 表への ビュー を顧客のファースト・ネームとラスト・ネーム、会
社名、および California 在住のすべての顧客の電話番号のみに限定する
ビュー california を追加します。
CREATE SCHEMA AUTHORIZATION maryl
CREATE TABLE customer
(customer_num SERIAL(101), fname CHAR(15), lname CHAR(15), company CHAR(20),
address1 CHAR(20), address2 CHAR(20), city CHAR(15), state CHAR(2),
zipcode CHAR(5), phone CHAR(18))
GRANT ALTER, ALL ON customer TO cathl WITH GRANT OPTION AS maryl
GRANT SELECT ON CUSTOMER TO public
GRANT UPDATE (fname, lname, phone) ON customer TO nhowe
CREATE VIEW california AS
SELECT fname, lname, company, phone FROM customer WHERE state = "CA"
CREATE UNIQUE INDEX c_num_ix ON customer (customer_num)
CREATE INDEX state_ix ON customer (state);
この CREATE SCHEMA ブロックを処理するために、データベース・サー
バーは、最初にシステム・カタログにアクセスして、以下の情報を確認し
ます。
!
新しい表およびビューの名前がデータベースに存在しないこと。
( データベースが ANSI に準拠している場合、データベース・サー
バーは、
表名およびビュー名が指定の所有者についてまだ存在して
いないことを確認します。
)
!
ユーザーは、表を作成し、ユーザー・アクセス権を付与する権限を
持っています。
!
CREATE VIEW 文および CREATE INDEX 文の列名は、customer 表に
入っています。
データベース・サーバーは、この情報を確認し、2 つの新しい 表 を作成す
るほか、以下のシステム・カタログ表を新しい行 に追加します。
!
systables
!
syscolumns
!
sysviews
2-4 IBM Informix SQL リファレンス・ガイド
システム・カタログの使用
!
systabauth
!
syscolauth
!
sysindexes
以下の 2 つの新しい行の情報は、前にある CREATE SCHEMA ブロックが実行
された後で、systables システム・カタログ表に追加されます。
tabname
owner
partnum
tabid
rowsize
ncols
nindexes
nrows
created
version
tabtype
locklevel
npused
fextsize
nextsize
flags
site
dbname
customer
maryl
16778361
101
134
10
2
0
04/26/1990
1
T
P
0
16
16
0
tabname
owner
partnum
tabid
rowsize
ncols
nindexes
nrows
created
version
tabtype
locklevel
npused
fextsize
nextsize
flags
site
dbname
california
maryl
0
102
134
4
0
0
04/26/1990
0
V
B
0
0
0
0
systables システム・カタログ表に記録された各表には、データベース内の
各表を一意に識別する ID 番号、tabid が割り当てられます。システム・カ
タログ表は 1 ~ 21 までの tabid 番号を受け取りますが、ユーザーが作成し
た表は 100 以降の tabid 番号を受け取ります。
システム・カタログ 2-5
システム・カタログの使用
CREATE SCHEMA ブロックは、syscolumns システム・カタログ表にも 13 行
追加します。これらの行は、表 customer およびビュー california 内の列に
対応します。
colname
tabid
colno
coltype
collength
customer_num
fname
lname
company
address1
address2
city
state
zipcode
phone
101
101
101
101
101
101
101
101
101
101
1
2
3
4
5
6
7
8
9
10
262
0
0
0
0
0
0
0
0
0
4
15
15
20
20
20
15
2
5
18
fname
lname
company
phone
102
102
102
102
1
2
3
4
0
0
0
0
15
15
20
18
colmin
colmax
syscolumns システム・カタログ表で、表内の各列には順次列番号 colno が
割り当てられますが、この番号は、表内でその列を一意に識別するもので
す。たとえば、customer 表内の列 fname には colno 2 が割り当てられます
が、ビュー california 内の列 fname には colno 1 が割り当てられます。
colmin 列および colmax 列にはなにも入力されていないことに注意してくだ
さい。これら 2 つの列には、列に複合インデックスが付いており、ヌル値
または重複値がなく、UPDATESTATISTICS 文が実行された場合にのみ値が入
ります。
sysviews システム・カタログ表には以下の行が追加されます。これらの行
は、CREATE SCHEMA ブロックの CREATE VIEW 部分に対応します。
tabid
seq
102
102
102
102
102
0
1
2
3
4
viewtext
create view "maryl".california (customer_num, fname, lname, company
,address1, address2, city, state, zipcode, phone) as select x0.custom
er_num, x0.fname, x0.lname, x0.company, x0.address1, x0.address2
,x0.city, x0.state, x0.zipcode, x0.phone from "maryl".customer
x0 where (x0.state = 'CA');
sysviews システム・カタログ表には、ビューの作成に使用される CREATE
VIEW 文が入ります。現行スキーマの CREATE VIEW 文の各行は、この表に
格納されます。viewtext 列で、文で列名の前にある x0 ( たとえば x0.fname)
は、セルフ結合で使用されたものと同じ列を区別する別名として動作しま
す。
2-6 IBM Informix SQL リファレンス・ガイド
システム・カタログの使用
CREATE SCHEMA ブロックは、systabauth システム・カタログ表にも以下の
行を追加します。これらの行は、customer および california について付与
されたユーザー・アクセス権に対応します。
grantor
grantee
tabid
tabauth
maryl
maryl
maryl
public
cathl
nhowe
maryl
101
101
101
102
su-idx-SU-IDXAR
--*----SU-ID---
この表の tabauth 列は、customer および california 表についてユーザーに付
与された表レベルのアクセス権を指定します。この列は、8 バイトのパ
ターン —s (select)、u (update)、* (column-level privilege)、i (insert)、d (delete)、
x (index)、a (alter)、r (references)— を使用して、付与されたアクセス権のタ
イプを識別します。この例では、ユーザー nhowe は、customer 表に対して
列レベルのアクセス権を持っています。
さらに、syscolauth システム・カタログ表に 3 行追加されます。これらの行
は、customer 表内の特定の列に対して付与されたユーザー・アクセス権に
対応します。
grantor
grantee
tabid
colno
colauth
maryl
maryl
maryl
nhowe
nhowe
nhowe
101
101
101
2
3
10
-u-u-u-
この表の colauth 列は、customer 表に対して付与された列レベル・アクセ
ス権を指定します。この列は、3 バイトのパターン —s (select)、u (update)、
r (references)— を使用して、付与されたアクセス権のタイプを指定します。
たとえば、ユーザー nhowe は、customer 表の 2 つ目の列 (colno2) に対して
Update アクセス権を持っています。
システム・カタログ 2-7
システム・カタログへのアクセス
CREATE SCHEMA ブロックは、sysindexes システム・カタログ表にも 2 行追
加します。これらの行は、customer 表に作成されたインデックスに対応し
ます。
idxname
owner
tabid
idxtype
clustered
part1
part2
part3
part4
part5
part6
part7
part8
part9
part10
part11
part12
part13
part14
part15
part16
levels
leaves
nunique
clust
c_num_ix
maryl
101
U
state_ix
maryl
101
D
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
この表で、idxtype 列は、作成されたインデックスが一意であるか、重複で
あるかを識別します。たとえば、customer 表の customer_num 列にあるイ
ンデックス c_num_ix は一意です。
システム・カタログへのアクセス
システム・カタログに対する通常のユーザー・アクセスは、読み取り専用
です。Connect アクセス権または Resource アクセス権を持つユーザーは、
システム・カタログを変更できません。ただし、標準の SELECT 文を使用
した読み取り専用方式でシステム・カタログ表内のデータにアクセスする
ことはできます。たとえば、以下の SELECT 文は、データベース内のユー
ザーが作成した表のすべての表名と対応する表 ID 番号を表示します。
SELECT tabname, tabid FROM systables WHERE tabid > 99
警告 : ユーザー “informix” はシステム・カタログ表を修正できますが、こ
れらの表の行を更新、削除、または変更しないでください。システム・カ
タログ表を修正すると、データベースの整合性が壊れることがあります。
2-8 IBM Informix SQL リファレンス・ガイド
システム・カタログ・データの更新
システム・カタログ・データの更新
Informix データベース・サーバー内のオプティマイザーは、SQL 問い合せ
を実行するための最も効率の良いストラテジーを決定します。これにより、
結合で最初にどの表を検索すべきか、あるいはどのインデックスを使用す
るかを十分に考慮しなくても、データベースに問い合わせることができま
す。オプティマイザーは、システム・カタログからの情報を使用して、最
良の可能な問い合せストラテジーを決定します。
システム・カタログを更新するために UPDATE STATISTICS 文を使用するこ
とにより、これらのデータベース検索ストラテジーを最適化できます。表
からいくつかの行を削除したり、表を修正した場合、データベース・サー
バーは、システム・カタログ内の関連する統計データを自動的に更新しま
せん。たとえば、DELETE 文を使用して表内のいくつかの行を削除した場
合、systables システム・カタログ表内の nrows 列は、その表の行数を保持
するものですが、更新されません。UPDATE STATISTICS 文を使用すると、
データベース・サーバーは、systables、syscolumns、および sysindexes シス
テム・カタログ表内のデータを再計算します。UPDATE STATISTICS が実行さ
れた後、systables システム・カタログ表は、その nrows 列に正しい値を保
持します。
表に対して広範囲な修正を行う場合は、必ず、UPDATE STATISTICS 文を使用
してシステム・カタログ内のデータを更新してください。UPDATE
STATISTICS 文の詳細については、本書の 7-341 ページを参照してください。
システム・カタログの構造
以下のシステム・カタログ表は、Informix データベースの構造を記述しま
す。
!
sysblobs
!
syschecks
!
syscolauth
!
syscoldepend
!
syscolumns
!
sysconstraints
!
sysdefaults
システム・カタログ 2-9
SYSBLOBS
!
sysdepend
!
sysindexes
!
sysopclstr
!
sysprocauth
!
sysprocbody
!
sysprocedures
!
sysprocplan
!
sysreferences
!
syssynonyms
!
syssyntable
!
systabauth
!
systables
!
sysusers
!
sysviews
SYSBLOBS
sysblobs システム・カタログ表は、BLOB 列の格納域を指定します。ここに
は、表内の各 BLOB 列につき 1 行が入っています。sysblobs システム・カ
タログ表には、以下の列があります。
列名
型
説明
spacename
CHAR(18)
blobspace、dbspace、またはファミ
リー名
type
CHAR(1)
メディア・タイプ :
M = 磁気
O = 光学式
tabid
INTEGER
表識別子
colno
SMALLINT
列番号
tabid 列および colno 列の複合インデックスでは、一意な値のみ許されます。
2-10 IBM Informix SQL リファレンス・ガイド
SYSCHECKS
SYSCHECKS
syschecks システム・カタログ表は、データベースに定義された各チェック
制約を記述します。syschecks システム・カタログ表は、チェック制約の
ASCII テキストとバイナリー・コード化形式の両方を格納するため、各
チェック制約について複数の行が含まれます。syschecks システム・カタロ
グ表には、以下の列があります。
列名
型
説明
constrid
INTEGER
制約識別子
type
CHAR(1)
チェック制約が保管されるフォーム
B =2 進コード化
T = ASCII テキスト
seqno
SMALLINT
チェック制約の行番号
checktext
CHAR(32)
チェック制約のテキスト
constrid、type、および seqno 列の複合インデックスでは、一意値のみ許さ
れます。
SYSCOLAUTH
syscolauth システム・カタログ表は、列に対して付与された各アクセス権
のセットを記述します。ここには、データベースに付与された列アクセス
権のセットごとに 1 つの行が含まれます。syscolauth システム・カタログ表
には、以下の列があります。
列名
型
説明
grantor
CHAR(8)
アクセス権の権限授与者
grantee
CHAR(8)
アクセス権の被権限授与者
(2 の 1)
システム・カタログ
2-11
SYSCOLDEPEND
列名
型
説明
tabid
INTEGER
表識別子
colno
SMALLINT
列番号
colauth
CHAR(3)
列アクセス権を指定する 3 バイトの
パターン :
s = 選択
u = 更新
r = 参照
(2 の 2)
colauth アクセス権コードが大文字の場合 ( たとえば、select に対して S)、
このアクセス権を付与されたユーザーは、それを他のユーザーにも付与で
きます。colauth アクセス権コードが小文字の場合 ( たとえば、select に対
して s)、このアクセス権を付与されたユーザーは、それを他のユーザーに
付与することはできません。
tabid、grantor、grantee、および colno 列の複合インデックスでは、一意値
のみ許されます。tabid および grantee 列の複合インデックスでは、重複値
が許されます。
SYSCOLDEPEND
syscoldepend システム・カタログ表は、各チェック制約に指定された表列
を追跡します。チェック制約には表の複数の列が関与するため、各チェッ
ク制約について複数の行を含めることができます。syscoldepend システム・
カタログ表には、以下の列があります。
列名
型
説明
constrid
INTEGER
制約識別子
tabid
INTEGER
表識別子
colno
SMALLINT
列番号
constrid、tabid、および colno 列の複合インデックスでは、一意値のみ許さ
れます。tabid および colno 列の複合インデックスでは、重複値が許されま
す。
2-12 IBM Informix SQL リファレンス・ガイド
SYSCOLUMNS
SYSCOLUMNS
syscolumns システム・カタログ表は、データベース内の各列を記述します。
表またはビューに定義された各列ごとに 1 行あります。IBM Informix OnLine
データベースを使用した場合、syscolumns システム・カタログ表は、以下
の列を持ちます。
列名
型
説明
colname
CHAR(18)
列名
tabid
INTEGER
表識別子
colno
SMALLINT
システムによって順番に ( 通常、各
表内で左から右へ ) 割り当てられた
列番号
coltype
SMALLINT
列のコード データ型 :
0 = CHAR
1 = SMALLINT
2 = INTEGER
3 = FLOAT
4 = SMALLFLOAT
5 = DECIMAL
6 = SERIAL
collength
SMALLINT
列長 ( バイト単位 )
colmin
INTEGER
2 番目に小さい値
colmax
INTEGER
2 番目に大きい値
7 = DATE
8 = MONEY
10 = DATETIME
11 = BYTE
12 = TEXT
13 = VARCHAR
14 = INTERVAL
coltype 列に 256 より大きな値が入っている場合、ヌル値は許されません。
256 より大きな値が入っている coltype 列のデータ型を決定するには、この
値から 256 を差し引き、その残りを可能な coltype 値に基づいて評価しま
す。たとえば、列に 262 という coltype 値が入っている場合、これから 256
を引くと、残りは 6 で、これは、この列が SERIAL データ型を使用すること
を表します。
システム・カタログ 2-13
SYSCOLUMNS
collength 列が保持する値は、列のデータ型によって異なります。列のデー
タ型が BYTE または TEXT の場合、 collength は記述子の長さを保持します。
MONEY 列または DECIMAL 列の collength 値は、以下の式を使って決定され
ます。
(precision * 256) + scale
型 VARCHAR の場合、max-size および min-space 値は、以下の式を使用して
collength 列にコード化されます。
(min-space * 256) + max-size
型 DATETIME または INTERVAL の場合、collength は、以下の式を使用して
決定されます。
(length * 256) + (largest_qualifier value x 16) + smallest_qualifier value
length は DATETIME または INTERVAL フィールドの物理的長さであり、
largest_qualifier および smallest_qualifier は、以下の値を持ちます。
フィールド修飾子
値
YEAR
0
MONTH
2
DAY
4
HOUR
6
MINUTE
8
SECOND
10
FRACTION(1)
11
FRACTION(2)
12
FRACTION(3)
13
FRACTION(4)
14
FRACTION(5)
15
2-14 IBM Informix SQL リファレンス・ガイド
SYSCOLUMNS
たとえば、DATETIME YEAR TO MINUTE 列が 12 という長さ
(YYYY:DD:MM:HH:MM など ) で、largest_qualifier value が 0(YEAR について )、
smallest_qualifiervalue が 8 (MINUTE について ) の場合、collength 値は 3080
((256 * 12) + (0 * 16) + 8) です。
colmin 列値および colmax 列値は、列内に 2 番目に小さいデータ値と 2 番目
に大きいデータ値を保持します。たとえば、インデックス付きの列内の値
が 1、2、3、4、および 5 の場合、2 は colmin 値で、4 は colmax 値です。2
番目に小さいデータ値と 2 番目に大きいデータ値を格納すると、データ
ベース・サーバーは、所定の列内の値の範囲を推測し、次に、検索ストラ
テジーをさらに最適化します。colmin 列および colmax 列には、列がイン
デックス付きであり、UPDATE STATISTICS が実行された場合にのみ値が入り
ます。BYTE または TEXT データを tblspace に格納した場合、colmin 値は -1
です。他のすべての非整数列型の値は、最大値または最小値の最初の 4 バ
イトであり、整数として扱われます。
tabid 列および colno 列の複合インデックスでは、一意値のみ許されます。
IBM Informix SE データベースを使用した場合、syscolumns システム・カタ
ログ表は、以下の列を持ちます。
列名
型
説明
colname
CHAR(18)
列名
tabid
INTEGER
表識別子
colno
SMALLINT
システムによって順番に ( 通常、各
表内で左から右へ ) 割り当てられた
列番号
coltype
SMALLINT
列データ型のコード :
0 = CHAR
1 = SMALLINT
2 = INTEGER
3 = FLOAT
4 = SMALLFLOAT
collength
SMALLINT
5 = DECIMAL
6 = SERIAL
7 = DATE
8 = MONEY
10 = DATETIME
14 = INTERVAL
列長 ( バイト単位 )
tabid 列および colno 列の複合インデックスでは、一意値のみ許されます。
システム・カタログ 2-15
SYSCONSTRAINTS
SYSCONSTRAINTS
sysconstraints システム・カタログ表は、各データベース表内の列に指定さ
れた制約をリストします。制約が sysindexes システム・カタログ表内に対
応する入力を持っていない場合、入力も、作成されたそれぞれの一意性制
約、主キー制約、または参照制約の sysindexes システム・カタログ表に入
れられます。( インデックスは共有できるため、複数の制約を 1 つのイン
デックスと関連付けることができます。) sysconstraints システム・カタロ
グ表には、以下の列があります。
列名
型
説明
constrid
SERIAL
システムが割り当てた順次識別子
constrname
CHAR(18)
制約名
owner
CHAR(8)
所有者のユーザー名
tabid
INTEGER
表識別子
constrtype
CHAR(1)
制約タイプを指定します
C = チェック制約
P = 主キー
R = 参照
U = 一意
idxname
CHAR(18)
インデックス名
constrname 列および owner 列では、一意値のみ許されます。tabid 列のイ
ンデックスでは重複値が許されますが、constrid 列では一意値のみ許され
ます。
2-16 IBM Informix SQL リファレンス・ガイド
SYSDEFAULTS
SYSDEFAULTS
sysdefaults システム・カタログ表は、データベース内の各列に配置された
ユーザー定義デフォルトをリストします。各ユーザー定義デフォルトごと
に 1 行あります。デフォルトが明示的に指定されない場合、この表への入
力はありません。
sysdefaults システム・カタログ表には、以下の列があります。
列名
型
説明
tabid
INTEGER
表識別子
colno
SMALLINT
列識別子
type
CHAR(1)
デフォルト・タイプ :
L = リテラル・デフォルト
U = USER
C = CURRENT
N = NULL
T = TODAY
S = DBSERVERNAME
default
CHAR(256)
デフォルト・タイプ = L の場合は、
リテラル・デフォルト値
デフォルト値にリテラルが指定された場合、それは、ASCII テキストとして
default 列に格納されます。リテラル値の型が CHAR でない場合、default 列
は 2 つの部分で構成されます。1 つは、デフォルト値構造のバイナリー値の
6 ビット表現です。もう 1 つは、英文テキストでのデフォルト値です。2 つ
の部分は、スペースで区切られます。
列のデータ型が CHAR または VARCHAR でない場合、 バイナリー表現が
default 列にエンコードされます。
tabid 列および colno 列のどちらの複合インデックスでも、一意値のみ許さ
れます。
システム・カタログ 2-17
SYSDEPEND
SYSDEPEND
sysdepend システム・カタログ表は、各ビューまたは表が他のビューまたは
表にどのように依存するかを記述します。この表には依存性ごとに 1 行存
在するため、3 つの表に基づくビューは 3 行になります。sysdepend システ
ム・カタログ表には、以下の列があります。
列名
型
説明
btabid
INTEGER
基本表またはビューの tabid
btype
CHAR(1)
基本オブジェクト・タイプ
T=表
V = ビュー
dtabid
INTEGER
従属表の tabid
dtype
CHAR(1)
従属オブジェクト ・タイプ (V =
ビュー )。現在、ビューのみインプ
リメントされている
btabid 列および dtabid 列はインデックス付きで、重複値が許されます。
SYSINDEXES
sysindexes システム・カタログ表は、データベース内のインデックスを記
述します。ここには、データベースに定義されたインデックスごとに 1 行
含まれます。sysindexes システム・カタログ表には、以下の列があります。
列名
型
説明
idxname
CHAR(18)
インデックス名
owner
CHAR(8)
インデックスの所有者 ( システム・
カタログ表の場合は “informix” で、
データベース表の場合はユーザー
名)
tabid
INTEGER
表識別子
(3 の 1)
2-18 IBM Informix SQL リファレンス・ガイド
SYSINDEXES
列名
型
説明
idxtype
CHAR(1)
インデックス ・タイプ
U = 一意
D = 重複
clustered
CHAR(1)
クラスター化インデックスまたは非
クラスター化インデックス
(C = クラスター化 )
part1
SMALLINT
単一インデックスの列番号または複
合インデックスの最初のコンポーネ
ント
part2
SMALLINT
複合インデックスの 2 番目のコン
ポーネント
part3
SMALLINT
複合インデックスの 3 番目のコン
ポーネント
part4
SMALLINT
複合インデックスの 4 番目のコン
ポーネント
part5
SMALLINT
複合インデックスの 5 番目のコン
ポーネント
part6
SMALLINT
複合インデックスの 6 番目のコン
ポーネント
part7
SMALLINT
複合インデックスの 7 番目のコン
ポーネント
part8
SMALLINT
複合インデックスの 8 番目のコン
ポーネント
part9
SMALLINT
複合インデックスの 9 番目のコン
ポーネント
part10
SMALLINT
複合インデックスの 10 番目のコン
ポーネント
part11
SMALLINT
複合インデックスの 11 番目のコン
ポーネント
part12
SMALLINT
複合インデックスの 12 番目のコン
ポーネント
(3 の 2)
システム・カタログ 2-19
SYSINDEXES
列名
型
説明
part13
SMALLINT
複合インデックスの 13 番目のコン
ポーネント
part14
SMALLINT
複合インデックスの 14 番目のコン
ポーネント
part15
SMALLINT
複合インデックスの 15 番目のコン
ポーネント
part16
SMALLINT
複合インデックスの 16 番目のコン
ポーネント
levels
SMALLINT
B+ ツリー・レベルの数
leaves
INTEGER
リーフの数
nunique
INTEGER
一意キーの数
clust
INTEGER
クラスター化の度合い : 数値が小さ
いほど、クラスター化の度合いが深
い
(3 の 3)
既存のインデックスに影響する変更は、UPDATE STATISTICS を実行してから
でないと、この表で有効になりません。
複合インデックスの partnth 列コンポーネント ( この表の part1 列~ part16
列 ) は、列番号 ( 複合インデックスの 16 の可能な各部分の colno) を保持し
ます。
tabid 列はインデックス付けされており、重複値が許されます。idxname、
owner、および tabid 列の複合インデックスでは、一意値のみ許されます。
2-20 IBM Informix SQL リファレンス・ガイド
SYSINDEXES
IBM Informix SE データベースを使用した場合、sysindexes システム・カタロ
グ表は、以下の列を持ちます。
列名
型
説明
idxname
CHAR(18)
インデックス名
owner
CHAR(8)
インデックスの所有者 ( システム表
の場合は “informix” で、データベー
ス表の場合はユーザー名 )
tabid
INTEGER
表識別子
idxtype
CHAR(1)
インデックス ・タイプ
U = 一意
D = 重複
clustered
CHAR(1)
クラスター化インデックスまたは非
クラスター化インデックス
(C = クラスター化 )
part1
SMALLINT
単一インデックスの列番号または複
合インデックスの最初のコンポーネ
ント
part2
SMALLINT
複合インデックスの 2 番目のコン
ポーネント
part3
SMALLINT
複合インデックスの 3 番目のコン
ポーネント
part4
SMALLINT
複合インデックスの 4 番目のコン
ポーネント
part5
SMALLINT
複合インデックスの 5 番目のコン
ポーネント
part6
SMALLINT
複合インデックスの 6 番目のコン
ポーネント
part7
SMALLINT
複合インデックスの 7 番目のコン
ポーネント
part8
SMALLINT
複合インデックスの 8 番目のコン
ポーネント
システム・カタログ 2-21
SYSOPCLSTR
複合インデックスの partnth 列コンポーネント ( この表の part1 列~ part8
列 ) は、列番号 ( 複合インデックスの 16 の可能な各部分の colno) を保持し
ます。
tabid 列はインデックス付けされており、重複値が許されます。idxname 列
および tabid 列のどちらの複合インデックスでも、一意値のみ許されます。
SYSOPCLSTR
sysopclstr システム・カタログ表は、データベース内で各光クラスターを定
義します。ここには、それぞれの光クラスターごとに 1 行含まれます。
sysopclstr システム・カタログ表には、以下の列があります。
列名
型
説明
owner
CHAR(8)
クラスターの所有者
clstrname
CHAR(18)
クラスターの名前
clstrsize
INTEGER
クラスターのサイズ
tabid
INTEGER
表識別子
blobcol1
SMALLINT
BLOB 列番号 1
blobcol2
SMALLINT
BLOB 列番号 2
blobcol3
SMALLINT
BLOB 列番号 3
blobcol4
SMALLINT
BLOB 列番号 4
blobcol5
SMALLINT
BLOB 列番号 5
blobco16
SMALLINT
BLOB 列番号 6
blobcol7
SMALLINT
BLOB 列番号 7
blobcol8
SMALLINT
BLOB 列番号 8
blobcol9
SMALLINT
BLOB 列番号 9
blobcol10
SMALLINT
BLOB 列番号 10
blobcol11
SMALLINT
BLOB 列番号 11
(2 の 1)
2-22 IBM Informix SQL リファレンス・ガイド
SYSOPCLSTR
列名
型
説明
blobcol12
SMALLINT
BLOB 列番号 12
blobcol13
SMALLINT
BLOB 列番号 13
blobcol14
SMALLINT
BLOB 列番号 14
blobcol15
SMALLINT
BLOB 列番号 15
blobcol16
SMALLINT
BLOB 列番号 16
clstrkey1
SMALLINT
クラスター・キー番号 1
clstrkey2
SMALLINT
クラスター・キー番号 2
clstrkey3
SMALLINT
クラスター・キー番号 3
clstrkey4
SMALLINT
クラスター・キー番号 4
clstrkey5
SMALLINT
クラスター・キー番号 5
clstrkey6
SMALLINT
クラスター・キー番号 6
clstrkey7
SMALLINT
クラスター・キー番号 7
clstrkey8
SMALLINT
クラスター・キー番号 8
clstrkey9
SMALLINT
クラスター・キー番号 9
clstrkey10
SMALLINT
クラスター・キー番号 10
clstrkey11
SMALLINT
クラスター・キー番号 11
clstrkey12
SMALLINT
クラスター・キー番号 12
clstrkey13
SMALLINT
クラスター・キー番号 13
clstrkey14
SMALLINT
クラスター・キー番号 14
clstrkey15
SMALLINT
クラスター・キー番号 15
clstrkey16
SMALLINT
クラスター・キー番号 16
(2 の 2)
clstrname 列および owner 列のどちらの複合インデックスでも、一意値のみ
許されます。tabid では重複値が許されます。
システム・カタログ
2-23
SYSPROCAUTH
SYSPROCAUTH
sysprocauth 表は、プロシージャーに対して付与されたアクセス権を記述し
ます。ここには、付与されたアクセス権のセットごとに 1 つの行が含まれ
ます。sysprocauth システム・カタログ表には、以下の列があります。
列名
型
説明
grantor
CHAR(8)
プロシージャーの権限授与者
grantee
CHAR(8)
プロシージャーの被権限授与者
procid
INTEGER
プロシージャー識別子
procauth
CHAR(1)
付与されたプロシージャー権限のタ
イプ :
e = プロシージャーに対する実行権
限
E = 実行権限と他にその権限を付与
する能力
procid、grantor、および grantee 列の複合インデックスでは、一意値のみ
許されます。procid および grantee 列の複合インデックスでは重複値が許さ
れます。
2-24 IBM Informix SQL リファレンス・ガイド
SYSPROCBODY
SYSPROCBODY
sysprocbody システム・カタログ表は、データベース内の各ストアード・プ
ロシージャーのコンパイル済みバージョンを記述します。sysprocbody シス
テム・カタログ表にはプロシージャーのテキストが格納されるため、各プ
ロシージャーに複数の行が存在することがあります。sysprocbody システ
ム・カタログ表には、以下の列があります。
列名
型
説明
procid
INTEGER
プロシージャー識別子
datakey
CHAR(1)
データ記述子タイプ :
D = ユーザー・ドキュメント・テ
キスト
T = 実際のプロシージャー・ソース
R = 戻り値タイプ・リスト
S = プロシージャー・シンボル・
テーブル
L = 定数プロシージャー・データ・
ストリング ( すなわち、リテラ
ル番号または引用符付きスト
リング )
P = インタープリター命令コード
seqno
INTEGER
プロシージャーの行番号
data
CHAR(256)
プロシージャーの実際のテキスト
datakey 列は格納されるデータの型を示しますが、data 列には実際のデー
タが含まれます。実際のデータとは、エンコードされた戻り値リスト、エ
ンコードされたシンボル表、定数データ、プロシージャーのコンパイル済
みコード、またはプロシージャーとその文書のテキストのいずれかです。
procid、datakey、および seqno 列の複合インデックスでは、一意値のみ許
されます。
システム・カタログ
2-25
SYSPROCEDURES
SYSPROCEDURES
sysprocedures システム・カタログ表は、データベース内の各ストアード・
プロシージャーの特性をリストします。ここには、それぞれのプロシー
ジャーごとに 1 行含まれます。sysprocedures システム・カタログ表には、
以下の列があります。
列 名
型
説明
procname
CHAR(18)
プロシージャー名
owner
CHAR(8)
所有者名
procid
SERIAL
プロシージャー識別子
mode
CHAR(1)
モード・タイプ :
D = DBA
O = OWNER
retsize
INTEGER
値のコンパイル済みサイズ ( バイト
単位 )
symsize
INTEGER
シンボル・テーブルのコンパイル済
みサイズ ( バイト単位 )
datasize
INTEGER
定数データのコンパイル済みサイズ
( バイト単位 )
codesize
INTEGER
プロシージャー命令コードのコンパ
イル済みサイズ ( バイト単位 )
numargs
INTEGER
プロシージャー引数の数
procname 列および owner 列では、一意値のみ許されます。
2-26 IBM Informix SQL リファレンス・ガイド
SYSPROCPLAN
SYSPROCPLAN
sysprocplan システム・カタログ表は、各ストアード・プロシージャー内の
DML 文の問い合せ実行計画および依存性リストを記述します。プロシー
ジャー計画のさまざまな部分を異なる日付で作成できるため、表には、そ
れぞれのプロシージャーごとに複数の行を入れることができます。
sysprocplan システム・カタログ表には、以下の列があります。
列名
型
説明
procid
INTEGER
プロシージャー識別子
planid
INTEGER
問い合せ計画識別子
datakey
CHAR(1)
識別子プロシージャー計画部分 :
D = 依存性リスト
Q= 実行計画
seqno
INTEGER
計画の行番号
created
DATE
計画作成日
datasize
INTEGER
リストまたは計画のサイズ ( バイト
単位 )
data
CHAR(256)
エンコードされた ( コンパイル済
み ) リストまたは計画
procid、planid、datakey、および seqno 列の複合インデックスでは、一意
値のみ許されます。
システム・カタログ
2-27
SYSREFERENCES
SYSREFERENCES
sysreferences システム・カタログ表は、データベース表内の列に指定され
た参照制約をリストします。ここには、データベース内のそれぞれの参照
制約ごとに 1 行含まれます。sysreferences 表には、以下の列があります。
列名
型
説明
constrid
INTEGER
制約識別子
primary
INTEGER
対応する主キーの constrid
ptabid
INTEGER
主キーの tabid
updrule
CHAR(1)
将来の利用に備えて予約済み。R を表
示する
delrule
CHAR(1)
将来の利用に備えて予約済み。R を表
示する
matchtype
CHAR(1)
将来の利用に備えて予約済み。N を表
示する
pendant
CHAR(1)
将来の利用に備えて予約済み。N を表
示する
constrid 列はインデックス付けされており、一意値のみ許されます。
primary 列はインデックス付けされており、重複値が許されます。
SYSSYNONYMS
syssynonyms システム・カタログ表は、各表またはビューのシノニムをリ
ストします。ここには、データベースに定義されたシノニムごとに 1 行含
まれます。syssynonyms システム・カタログ表には、以下の列があります。
列名
型
説明
owner
CHAR(8)
所有者のユーザー名
2-28 IBM Informix SQL リファレンス・ガイド
SYSSYNTABLE
列名
型
説明
synname
CHAR(18)
シノニム識別子
created
DATE
シノニム作成日
tabid
INTEGER
表識別子
owner 列および synonym 列では、一意値のみ許されます。tabid 列はイン
デックス付けされており、重複値が許されます。
ヒント : IBM Informix 製品のバージョン 4.0 以降では、この表を使用しませ
ん。ただし、バージョン 4.0 より前に行われた syssynonyms の入力は、この
表に残ります。
SYSSYNTABLE
syssyntable システム・カタログ表は、各シノニムと、それが表すオブジェ
クトとの間のマッピングの概要を示します。ここには、tabtype S を持つ
systables 表内のそれぞれの入力ごとに 1 行含まれます。syssyntable システ
ム・カタログ表には、以下の列があります。
列名
型
説明
tabid
INTEGER
表識別子
servername
CHAR(18)
サーバー名
dbname
CHAR(18)
データベース名
owner
CHAR(8)
所有者のユーザー名
tabname
CHAR(18)
表の名前
btabid
INTEGER
基本表またはビューの tabid
現行データベース内にある表のシノニムを定義する場合、tabid 列および
btabid 列のみが使用されます。現行データベースにとって外部である表の
シノニムを定義する場合、btabid 列は使用されませんが、tabid、
servername、dbname、owner、および tabname 列は使用されます。
システム・カタログ
2-29
SYSTABAUTH
tabid 列のインデックスでは、一意値のみ許されます。btabid 列は、イン
デックス付けされており、重複値に対応できます。
IBM Informix SE データベース・サーバーを使用する場合、tabid 列と btabid
列のみが使用されます。
SYSTABAUTH
systabauth システム・カタログ表は、表で付与された各アクセス権のセッ
トを記述します。ここには、データベースに付与された表アクセス権の
セットごとに 1 つの行が含まれます。systabauth システム・カタログ表に
は、以下の列があります。
列名
型
説明
grantor
CHAR(8)
アクセス権の権限授与者
grantee
CHAR(8)
アクセス権の被権限授与者
tabid
INTEGER
表識別子
tabauth
CHAR(8)
表アクセス権を指定する 8 バイトの
パターン
s = 選択
u = 更新
* = 列レベル権限
i = 挿入
d = 削除
x = インデックス
a = 変更
r = 参照
tabauth アクセス権コードが大文字の場合 ( たとえば、select に対して S)、
このアクセス権を付与されたユーザーは、それを他のユーザーにも付与で
きます。tabauth アクセス権コードが小文字の場合 ( たとえば、select に対
して s)、このアクセス権を付与されたユーザーは、それを他のユーザーに
付与することはできません。
tabid、grantor、および grantee 列の複合インデックスでは、一意値のみ許
されます。tabid および grantee 列の複合インデックスでは、重複値が許さ
れます。
2-30 IBM Informix SQL リファレンス・ガイド
SYSTABLES
SYSTABLES
systables システム・カタログ表は、データベース内の各表を記述します。
ここには、データベースに定義された表、ビュー、またはシノニムごとに
1 行含まれます。これには、すべてのデータベース表およびシステム・カ
タログ表自身が含まれます。IBM Informix OnLine データベースを使用した
場合、systables システム・カタログ表は、以下の列を持ちます。
列名
型
説明
tabname
CHAR(18)
表の名前
owner
CHAR(8)
表の所有者 ( システム・カタログ表
の場合は “informix”、データベース
表の場合はユーザー名 )
partnum
INTEGER
tblspace 識別子 (tabid と同じ )
tabid
SERIAL
システムが割り当てた順次 ID 番号
( システム表 : 1 ~ 21、ユーザー表 :
100 ~ nnn)
rowsize
SMALLINT
行サイズ
ncols
SMALLINT
列の数
nindexes
SMALLINT
インデックスの数
nrows
INTEGER
行の数
created
DATE
作成日時
version
INTEGER
表が変更された回数
tabtype
CHAR(1)
表タイプ
T=表
V = ビュー
P = プライベート・シノニム
P = シノニム (ANSI 準拠データベー
ス)
S = シノニム
(2 の 1)
システム・カタログ 2-31
SYSTABLES
列名
型
説明
locklevel
CHAR(1)
表のロック・モード
B = ページ
P = ページ
R=行
npused
INTEGER
使用中のデータ・ページの数
fextsize
INTEGER
初期エクステントのサイズ (KB 単
位)
nextsize
INTEGER
すべての後続エクステントのサイズ
(KB 単位 )
flags
SMALLINT
将来の利用に備えて予約済み
site
CHAR(18)
将来の利用に備えて予約済み
dbname
CHAR(18)
将来の利用に備えて予約済み
(2 の 2)
tabid 列はインデックス付けされており、一意値を入れる必要があります。
tabname 列および owner 列のどちらの複合インデックスでも、一意値のみ
許されます。
IBM Informix SE データベースを使用した場合、systables システム・カタログ
表は、以下の列を持ちます。
列名
型
説明
tabname
CHAR(18)
表の名前
owner
CHAR(8)
表の所有者 ( システム表の場合は
“informix”、データベース表の場合
はユーザー名 )
dirpath
CHAR(64)
表ファイルのためのディレクト
リー・パス
tabid
SERIAL
システムが割り当てた順次 ID 番号
( システム表 : 1 ~ 19、ユーザー表 :
100 ~ nnn)
rowsize
SMALLINT
行サイズ
(2 の 1)
2-32 IBM Informix SQL リファレンス・ガイド
SYSTABLES
列名
型
説明
ncols
SMALLINT
列の数
nindexes
SMALLINT
インデックスの数
nrows
INTEGER
行の数
created
DATE
作成日時
version
INTEGER
表が変更された回数
tabtype
CHAR(1)
表タイプ
T=表
V = ビュー
S = シノニム
L = ログ
P = プライベート・シノニム
audpath
CHAR(64)
監査ファイル名 ( 絶対パス名 )
(2 の 2)
tabid 列はインデックス付けされており、一意値を入れる必要があります。
tabname 列および owner 列のどちらの複合インデックスでも、一意値のみ
許されます。
システム・カタログ
2-33
SYSUSERS
SYSUSERS
sysusers システム・カタログ表は、表で付与された各アクセス権のセット
を記述します。ここには、データベース内のアクセス権を付与されたユー
ザーごとに 1 つの行が含まれます。sysusers システム・カタログ表には、以
下の列があります。
列名
型
説明
username
CHAR(8)
データベース・ユーザーの名前
usertype
CHAR(1)
次のようなデータベース・レベル・
アクセス権を指定します。
D = DBA ( 全アクセス権 )
R = リソース ( 永続表およびイン
デックスの作成 )
C = 接続 ( 既存の表内での処理 )
priority
SMALLINT
将来の利用に備えて予約済み
password
CHAR(8)
将来の利用に備えて予約済み
username 列はインデックス付けされており、一意値のみ許されます。
SYSVIEWS
sysviews システム・カタログ表は、データベースに定義された各チェック
制約を記述します。sysviews システム・カタログ表には、ビューの作成に
使用される実際の SELECT 文が格納されるため、ビューごとに複数の行を
含めてデータベースに入れることができます。sysviews システム・カタロ
グ表には、以下の列があります。
列名
型
説明
tabid
INTEGER
表識別子
seqno
SMALLINT
SELECT 文の行番号
viewtext
CHAR(64)
ビューを作成するのに使用された実
際の SELECT 文
2-34 IBM Informix SQL リファレンス・ガイド
システム・カタログ・マップ
tabid 列および seqno 列の複合インデックスでは、一意値のみ許されます。
システム・カタログ・マップ
図 2-1 は、IBM Informix OnLine システム・カタログ内の表の列名を示しま
す。1 つの表の列を別の表の列に結び付ける線は、同じ情報が入っている
列を示します。
システム・カタログ
2-35
2-36 IBM Informix SQL リファレンス・ガイド
username usertype priority password
tabid owner clstrname clstrsize blobcol1—blobcol16 clstrkey1—clstrkey16
sysopclstr
tabid idxname constrid constrname owner constrtype
sysconstraints
tabid idxname owner idxtype clustered part1—part16 levels leaves nunique clust
sysindexes
tabid colno grantor grantee colauth
syscolauth
sysusers
btabid btype dtabid dtype
sysdepend
tabid colno colname coltype collength colmin colmax
syscolumns
tabid owner synname created
syssynoyms
tabid tabname servername dbname owne btabid
syssyntable
tabid tabname owner dirpath rowsize ncols nindexes nrows created version tabtype audpath
partnum locklevel npused fextsize nextsize flags site dbname
systables
システム・カタログ・マップ
図 2-1
システム・カタログ・マップ (2 の 1)
procid procname owner mode retsize symsize
datasize codesize numargs
sysprocedures
procid procauth grantee grantor
sysprocauth
procid datakey seqno data
sysprocbody
procid planid datakey seqno created datasize data
sysprocplan
constrid primary ptabid updrule delrule matchtype pendant
sysreferences
constrid type seqno checktext
syschecks
tabid colno constrid
syscoldepend
tabid colno type default
sysdefaults
tabid spacename type colno
sysblobs
tabid seqno viewtext
sysviews
tabid grantor grantee tabauth
systabauth
システム・カタログ・マップ
図 2-1 ( 続き )
システム・カタログ・マップ (2 の 2)
システム・カタログ
2-37
システム・カタログ・マップ
2-38 IBM Informix SQL リファレンス・ガイド
データ型
本章の内容 .
. .
.
第
.
.
.
.
.
.
.
.
.
.
.
.
.
. 3-3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3-4
3-5
3-6
3-7
3-7
3-8
3-11
3-11
3-12
3-12
3-12
3-13
3-13
3-17
3-17
3-17
3-17
3-18
3-19
3-19
3-21
データ型変換 . . . . . . . .
数値から数値への変換 . . . .
数値と文字 (CHAR) 型との間の変換
DATE と DATETIME 間の変換 . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3-22
3-23
3-23
3-24
データベースのデータ型
BYTE . . . . .
CHAR(n) . . . .
CHARACTER(n) . .
DATE . . . . .
DATETIME . . .
DEC . . . . .
DECIMAL[(p,s)] .
DOUBLE PRECISION(n)
FLOAT(n) . . .
INT . . . . .
INTEGER . . . .
INTERVAL . . .
MONEY(p,s) . . .
NUMERIC(p,s) . .
REAL . . . . .
SERIAL(n) . . .
SMALLFLOAT . . .
SMALLINT . . .
TEXT . . . . .
VARCHAR(m,r) . .
3
章
DATE、DATETIME、および INTERVAL を使用した演算の範囲
DATETIME 値の操作 . . . . . . . . . . .
INTERVAL 値を持つ DATETIME の操作 . . . . . .
DATETIME 値および INTERVAL 値を持つ DATE の操作 .
INTERVAL 値の操作 . . . . . . . . . . .
INTERVAL 値の乗算または除算 . . . . . . . .
3-2 IBM Informix SQL リファレンス・ガイド
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.3-24
.3-26
.3-26
.3-27
.3-29
.3-30
本章の内容
表内の各列にはデータ型 が設定されます。データ型は、その列に格納でき
る値のタイプを厳密に定義します。
データ型の設定は CREATE TABLE 文を使用して行い、変更は ALTER TABLE
文を使用して行います。既存のデータ型を変更した場合、可能であれば、
すべてのデータが新しいデータ型に変換されます。ALTER TABLE 文と
CREATE TABLE 文およびデータ型シンタックス変換について詳しくは、第 7
章、『構文』を参照してください。データ型の詳しい説明については、
IBM Informix SQL チュートリアル・ガイド を参照してください。
本章には、次のトピックが記載されています。
!
IBM Informix 製品によってサポートされるデータ型
!
データ型変換
!
算術計算式および関係式内の DATE、DATETIME、 および INTERVAL
値
データ型 3-3
データベースのデータ型
データベースのデータ型
IBM Informix 製品は、図 3-1 にリストされているデータ型を認識します。
図 3-1
IBM Informix 製品によって認識されるデータ型
データ型
説明
BYTE
あらゆる種類のバイナリー形式データを格納します
CHAR
あらゆるストリングの文字、数字、およびシンボルを格
納します
CHARACTER
CHAR のシノニムです
DATE
カレンダー日付を格納します
DATETIME
時刻と結合されたカレンダー日付を格納します
DEC
DECIMAL のシノニムです
DECIMAL
定義可能な小数点以下桁数および精度を持つ数字を格納
します
DOUBLE PRECISION
FLOAT のシノニムです
FLOAT
C 言語の倍精度浮動小数点数 (double) 型に対応する倍精度
浮動数を格納します。
INT
INTEGER のシノニムです
INTEGER
-2,147,483,647 ~ +2,147,483,647 の整数を格納します
INTERVAL
タイム・スパンを格納します
MONEY
通貨金額を格納します
NUMERIC
DECIMAL のシノニムです
REAL
SMALLFLOAT のシノニムです
SERIAL
順次整数を格納します
SMALLFLOAT
C 言語の単精度浮動小数点数 (double) 型に対応する単精度
浮動数を格納します。
(2 の 1)
3-4 IBM Informix SQL リファレンス・ガイド
BYTE
データ型
説明
SMALLINT
-32,767 ~ +32,767 の整数を格納します
TEXT
あらゆる種類のテキスト・データを格納します
VARCHAR
可変長の文字ストリングを格納します
(2 の 2)
以下の節で、これらの各データ型について説明します。
BYTE
BYTE データ型は、未分化バイト・ストリームにあらゆる種類のバイナ
リー・データを格納します。バイナリー形式のデータは、一般的に、保存
済みのスプレッドシート、プログラム・ロード・モジュール、ディジタル
化音声パターンなどで構成されます。IBM Informix SE データベース・サー
バーは、このデータ型をサポートしません。
データ型 BYTE には最大サイズはありません。BYTE 列は、231 バイトの論
理上の制限と、お使いのディスク容量によって決定される、実際上の制限
があります。
BYTE 列の内容を格納、検索、更新、削除することができます。ただし、
BYTE データ項目を算術演算またはストリング演算で使用したり、UPDATE
文の SET 節を持つ BYTE 項目にリテラルを割り当てることはできません。
また、以下のいずれの方法でも BYTE 項目を使用することはできません。
!
集計関数を使用する
!
IN 節を使用する
!
MATCHES または LIKE 節を使用する
!
GROUP BY 節を使用する
!
ORDER BY 節を使用する
NULL 値についてテストする場合に BYTE オブジェクトをブール式で使用でき
るだけです。
以下の方法であれば、データを BYTE 列に挿入できます。
!
dbload または tbload ユーティリティーを使用する
データ型 3-5
CHAR(n)
!
LOAD 文 (IBM Informix SQL、IBM Informix 4GL、および DB-Access) を使
用する
!
PROGRAM 属性 (IBM Informix SQL) を持つスクリーン・フォームを使
用する
!
BYTE ホスト変数 (IBM Informix 4GL および ESQL/C) から
!
埋め込み SQL プログラム (ESQL/COBOL) から
引用符で囲まれたテキスト・ストリング、数値、その他の実際の値を使用
して、BYTE 列を挿入または更新することはできません。
BYTE 列を選択するときに、そのすべてを受け取るか、または一部を受け取
るか選択できます。その列のすべてを表示するには、通常の構文を使用し
て列を選択します。以下の例に示されているサブスクリプトを使用するこ
とによって、BYTE 列の任意の部分を選択することもできます。
SELECT cat_picture [1,75] FROM catalog WHERE catalog_num = 10001
この文は、カタログ番号 10001 と関連付けられた cat_picture 列の最初の 75
バイトを読み取ります。
ヒント : IBM Informix SQL または DB-Access 対話型スキーマ・エディターを
使用して BYTE 列を選択した場合、フレーズ <BYTE value> だけが戻されま
す。実際の値は表示されません。
CHAR(n)
CHAR データ型は、任意のストリングの文字、数字、およびシンボルを格
納します。文字 (CHAR) 型列の最大長は n で、この場合 1 ≤ n ≤ 32,767 です。
(IBM Informix SE データベース・サーバーを使用している場合、最大長は
32,511 です。)n を指定しない場合、CHAR(1) が指定されたものと見なされ
ます。
文字 (CHAR) 型列は、一般的に、名前、住所、電話番号などを格納します。
この列の長さは固定であるため、文字値が検索または格納されるときに、
正確に n バイトのデータが転送されます。値が n より短い場合、ストリン
グは、n バイトがいっぱいになるまで、スペースで拡張されます。値が n よ
り長い場合、ストリングは切り捨てられます。
CHAR 値に、タブおよびスペースを含めることはできますが、その他の非
印刷文字を含めることはできません。
3-6 IBM Informix SQL リファレンス・ガイド
CHARACTER(n)
列に格納されている数値について計算を実行する計画の場合、その列に数
値データ型を設定する必要があります。CHAR 列に数値を格納することは
できますが、一部の算術演算ではそれらを使用できません。たとえば、値
の和を 1 つの文字 (CHAR) 型列に挿入しようとする場合、その文字 (CHAR)
型列が小さくて値を保持できないとオーバーフロー問題が発生することが
あります。この場合、挿入は失敗します。しかし、先行ゼロ ( たとえば、
一部の郵便番号 ) を持つ数値は、数値型 INTEGER または SMALLINT として
格納される場合はゼロが取り除かれます。これらの数値は CHAR 列に格納
してください。
CHAR 値は、短い方の値を取り、両方の値が同じ長さになるまで短い方の
値の右側にスペースを埋め込むことにより、他の CHAR 値と比較されます。
次に、2 つの値は、全長について比較されます。
CHAR データ型では、1 文字あたり 1 バイト、つまり n バイトが必要です。
CHARACTER(n)
CHARACTER データ型は CHAR のシノニムです。
DATE
DATE データ型は、カレンダー日付を格納します。カレンダー日付は、内部
的には 1899 年 12 月 31 日以降の日数に等しい整数値として格納されます。
DATE 列のデフォルトの表示形式は、次のとおりです。
mm/dd/yyyy
ここで、mm は月 (1 ~ 12)、dd は月間通算日 (1 ~ 31)、および yyyy は年
(0001 ~ 9999) です。月の場合、IBM Informix 製品は、1 月について数値 1 ま
たは 01 という具合に受け入れます。日の場合、IBM Informix 製品は、月の
最初の日に対応する値 1 または 01 という具合に受け入れます。年について
89 または 90 といった 2 桁だけの値を入力した場合、IBM Informix 製品は、
その年が 20 世紀の年であると判断し、年の最初の 2 桁として数値 1 と 9
(19) を割り当てます。
日付値は整数として格納されるため、それらを算術式で使用することがで
きます。たとえば、ある DATE 値を別の DATE 値から減算できます。結果
は、正または負の INTEGER 値で、その 2 つの日付間の経過日数を示します。
データ型 3-7
DATETIME
DATE データ型は、1 項目あたり 4 バイトを必要とします。
ヒント : DBDATE 環境変数を変更することによって、デフォルトの日付形
式を変更できます。詳しくは、第 4 章、『環境変数』を参照してください。
DATETIME
DATETIME データ型は、カレンダー日時として表される時間のインスタン
トを格納します。DATETIME 値をどの程度正確に格納するかを選択できま
す。その精度は、1 年から秒の小数部までの範囲で選択できます。
DATETIME データ型は、記録する時間の各コンポーネントを表す、連続す
るフィールドで構成され、以下の構文を使用します。
DATETIME largest_qualifier TO smallest_qualifier
largest_qualifier および smallest_qualifier には、図 3-2 にリストされている
フィールドのどれでも使用できます。
図 3-2
DATETIME フィールド修飾子
修飾子フィールド
有効な入力
YEAR
1 ~ 9999 (A.D.) の数字で表される年
MONTH
1 ~ 12 の数字で表される月
DAY
当該月に適切な、1 ~ 31 の数字で表される日
HOUR
0 ( 真夜中 ) ~ 23 の数字で表される時間
MINUTE
0 ~ 59 の数字で表される分
SECOND
0 ~ 59 の数字で表される秒
FRACTION
最大 5 桁の精度を持つ秒の小数部。デフォルトの精度は 3
桁 (1000 分の 1 秒 ) です。FRACTION(n) を書き込むことに
よって明示的に指示される精度もあります。ここで、n
は、1 ~ 5 の必要な桁数です。
3-8 IBM Informix SQL リファレンス・ガイド
DATETIME
DATETIME 列で、YEAR から FRACTION までのすべてのフィールドを含める
必要はありません。フィールドのサブセットを含めることもできますし、
単一のフィールドでもかまいません。たとえば、入力された各値に連続す
るフィールドの情報が含まれている限り、MONTH TO HOUR の値を、YEAR
TO MINUTE として定義された列に入れることができます。ただし、MONTH
および HOUR のみの列を定義することはできません。この項目には、DAY
の値も含める必要があります。
ヒント : IBM Informix SQL または DB-Access TABLE メニューを使用し、しかも
DATETIME 修飾子を指定しない場合、デフォルト DATETIME 修飾子、YEAR TO
YEAR、が設定されます。
有効な DATETIME リテラルには、DATETIME キーワード、入力される値、
フィールド修飾子が入っている必要があります ( 7-421 ページのリテラル
DATETIME に関する記述を参照 )。これらの修飾子は必ず含める必要があり
ます。以前にも記したとおり、入力する値には、その列に対して定義され
ているよりも少ない数のフィールドしか入れられないためです。最初の
フィールドと最後のフィールドの許容可能な修飾子は、図 3-2 に表示され
ている有効な DATETIME フィールドのリストにあるものと同じです。
フィールド修飾子の値は、整数として書き込まれ、区切り文字で区切られ
ます。図 3-3 は、DATETIME 値と一緒に使用される区切り文字をリストして
います。
図 3-3
DATETIME フィールド区切り文字
区切り文字
DATETIME 式内の配置
ハイフン
値の YEAR、MONTH、DAY 部分の間
スペース
値の DAY と HOUR 部分の間
コロン
値の HOUR および MINUTE 部分と MINUTE および
SECOND 部分の間
小数点
値の SECOND と FRACTION 部分の間
データ型 3-9
DATETIME
図 3-4 に、区切り文字が付いた DATETIME YEAR TO FRACTION(3) 値を示し
ます。
90-08-16 12:42:06.001
年
日
月
分
時間
図 3-4
区切り文字が
入っている
DATETIME 値の
例
小数部
秒
定義されている列よりも少ない数のフィールドを持つ値を入力した場合、
入力した値は、すべての定義済みフィールドを埋めるまで自動的に拡張さ
れます。有効桁数が多い方のフィールド、すなわち、指定した値よりも絶
対値の大きなフィールドを省略した場合、それらのフィールドは現在日付
で自動的に埋められます。有効桁数が少ない方のフィールドを省略した場
合、それらのフィールドは、項目にゼロ (MONTH および DAY の場合は 1) が
埋められます。
DATETIME 値を文字ストリングとして入力することもできます。ただし、
この文字ストリングには、DATETIME 列に定義された各フィールドの情報
を含める必要があります。たとえば、以下の INSERT 文は、文字ストリング
として入力された DATETIME 値を示します。
INSERT into cust_calls (customer_num, call_dtime, user_id,
call_code, call_descript)
VALUES (100, "1990-08-14 08:45", "maryj", "D",
"Order late - placed 6/1/90")
この場合、call_dtime 列は、DATETIME YEAR TO MINUTE として定義されま
す。この文字ストリングには、年、月、日、時間、および分のフィールド
の値を含める必要があります。文字ストリングにすべての定義済みフィー
ルドの情報が含まれていない場合 ( あるいは追加フィールドを追加した場
合 )、データベース・サーバーはエラーを戻します。DATETIME 値を文字ス
トリングとして入力することについて詳しくは、7-421 ページの『リテラル
DATETIME』を参照してください。
3-10 IBM Informix SQL リファレンス・ガイド
DEC
DATETIME 列のすべてのフィールドは、年および小数部フィールドを除き、
2 桁の数値です。年のフィールドは、4 桁の数値として格納されます。小数
部フィールドには n 桁が必要です。ここで、1 ≤ n ≤ 5 であれば、偶数に切り
上げられます。以下の公式 ( 整数のバイト数に切り上げる ) を使用して、
DATETIME 値に必要なバイト数を計算できます。
すべてのフィールドの合計桁数 /2 + 1
たとえば、YEAR TO DAY 修飾子は、合計 8 桁 ( 年に 4 桁、月に 2 桁、日に 2
桁 ) が必要です。このデータ値には、5 バイト (8/2 + 1) のストレージが必要
です。
算術式および関係式内での DATETIME データの使用法については、3-24 ペー
ジの『DATE、DATETIME、および INTERVAL を使用した演算の範囲』を
参照してください。定数式としての DATETIME の使用については、7-380
ページの『定数式』を参照してください。
DEC
DEC データ型は DECIMAL のシノニムです。
DECIMAL[(p,s)]
DECIMAL データ型は、最大 32 の有効桁数までの 10 進浮動小数点数を格納
します。ここで、p は有効桁数の合計数 ( 精度 ) で、s は小数点の右にある
桁数 ( 小数点以下桁数 ) です。p と s の両方に値を割り当てると、10 進変数
は固定小数点演算を持ちます。0.5 ∗ 10-s 未満の絶対値を持つ数値はすべ
て、値ゼロを持ちます。エラーなしで格納できる、このタイプの変数の最
大絶対値は 10 p-s -10-s です。
precision パラメーターおよび scale パラメーターの指定はオプションです。
precision (p) を指定しない場合、DECIMAL は DECIMAL(16)、つまり、16 桁
の精度を持つ浮動小数点として扱われます。小数点以下桁数 (s) を指定しな
い場合、DECIMAL(p) は、p という精度と、10-128 から 10126 の範囲の絶対
値を持ちます。
データ型
3-11
DOUBLE PRECISION(n)
DECIMAL データ型列は、一般的に、小数部分を持つ数値を格納します。小
数部分は、正確に計算する必要があります ( たとえは、比率または割合 )。
以下の公式 ( 整数のバイト数に切り上げる ) を使用して、10 進データ型の
バイト・ストレージを計算できます。
精度 /2 + 1
たとえば、16 という精度と 2 という小数点以下桁数を持つ DECIMAL データ
型 (DECIMAL(16,2)) には 9 バイト (16/2 + 1) のストレージが必要です。
DOUBLE PRECISION(n)
DOUBLE PRECISION データ型は FLOAT のシノニムです。
FLOAT(n)
FLOAT データ型は、有効桁数最大 16 桁の倍精度浮動小数点数を格納しま
す。FLOAT は、C 言語の倍精度浮動小数点数 (double) 型に対応します。
FLOAT データ型の値の範囲は、マシン上の C 倍精度データ型の値の範囲と
同じです。
SQL は精度を無視しますが、n を使用して FLOAT データ型の精度を指定で
きます。値 n は、1 ~ 14 間での範囲の整数でなければなりません。
FLOAT データ型を持つ列は、通常、近似値でのみ計算可能な科学的数値を格納し
ます。浮動小数点数は、それぞれの最上位数字のみを保存するため、このタイプの
列に入力した数値とデータベース・サーバーが表示する数値は、わずかに異なるこ
とがあります。これは、ご使用のコンピューターが浮動小数点数を内部的に格納す
る方法によって異なります。たとえば、1.1 という値を FLOAT フィールドに入力
すると、SQL 文を処理後に、データベース・サーバーがこの値を 1.1000001
として表示することがあります。これは、値が浮動小数点数に格納しきれ
ない桁数を持っている場合に発生します。この場合、値は、その近似値形
式で格納され、最下位数字がゼロとして扱われます。
FLOAT データ型は、通常、1 つの値あたり 8 バイト必要です。
INT
INT データ型は INTEGER のシノニムです。
3-12 IBM Informix SQL リファレンス・ガイド
INTEGER
INTEGER
INTEGER データ型は、-2,147,483,647 ~ 2,147,483,647 の範囲の整数を格納し
ます。最大の負数値 -2,147,483,648 は、予約値であり、使用できません。
INTEGER データ型は、符号付きのバイナリー整数として格納され、一般的
に、カウント、数量などを格納するのに使用されます。
算術演算および分類比較は、浮動データまたは 10 進データよりもバイナ
リー・データについての方が効率よく実行されます。ただし、INTEGER 列
が格納できるのは、限定された範囲の値だけです。データ値が数値の範囲
を超える場合、データベース・サーバーはその値を格納しません。
INTEGER データ型は、1 つの値あたり 4 バイト必要です。
INTERVAL
INTERVAL データ型は、タイム・スパンを表す値を格納します。INTERVAL
型は、year-month intervals と day-time intervals という 2 つのクラスに分けら
れます。year-month interval は年と月のスパンを表すことができますが、
day-time interval は、日、時間、分、秒、および秒の小数部のスパンを表し
ます。
INTERVAL 値は、必ず、1 つの値か、または時間のコンポーネントを表す連
続する値で構成されます。INTERVAL データ型は、以下の構文を使用して定
義されます。
INTERVAL largest_qualifier(n) TO smallest_qualifier(n)
ここで、largest_qualifier フィールドおよび smallest_qualifier フィールドはど
ちらも、図 3-5 に示されている 2 つの INTERVAL クラスのいずれかから取ら
れ、n は、オプションで、最大フィールドの精度を指定します ( それが
FRACTION の場合は、最小フィールドの精度も指定します )。
データ型 3-13
INTERVAL
図 3-5
INTERVAL クラスおよびフィールド修飾子
YEAR-MONTH INTERVAL クラス
DAY-TIME INTERVAL クラス
YEAR
年を表す数字
DAY
日を表す数字
MONTH
月を表す数字
HOUR
時間を表す数字
MINUTE
分を表す数字
SECOND
秒を表す数字
FRACTION
最大 5 桁の精度を持つ秒の
小数部。デフォルトの精度
は 3 桁 (1000 分の 1 秒 ) です。
FRACTION(n) を書き込むこ
とによって明示的に指示さ
れる精度もあります。ここ
で、n は、1 ~ 5 の必要な桁
数です。
DATETIME 列の場合と同様、必要なフィールドのサブセットを含むよう
INTERVAL 列を定義できます。ただし、INTERVAL データ型は実際の日付と
関係なくタイム・スパンを表すため、この 2 つの INTERVAL クラスを結合で
きません。たとえば、1 か月間の日数は月によって異なるため、単一の
INTERVAL データ値は、月と日を結合することはできません。
INTERVAL 列に入力される値に、列に含まれるすべてのフィールドが含まれ
ている必要はありません。たとえば、HOUR TO SECOND を DAY TO SECOND
と定義された列に入れることができます。ただし、値は、必ず、連続する
フィールドで構成される必要があります。以前の例で、HOUR および
SECOND 値のみを入力することはできません。MINUTE 値も含める必要があ
ります。
有効な INTERVAL リテラルには、INTERVAL キーワード、入力される値、
フィールド修飾子が入っています ( 7-424 ページ のリテラル INTERVAL に関
する記述を参照 )。値にフィールドが 1 つだけ入っている場合、最大フィー
ルドと最小フィールドは同じです。
3-14 IBM Informix SQL リファレンス・ガイド
INTERVAL
INTERVAL 列に値を入力する場合、DATETIME 値の場合と同様、値に最大
フィールドと最小フィールドの両方を指定する必要があります。さらに、
オプションで n を使用して、最初のフィールドの精度を指定できます
(FRACTION の場合は、最後のフィールドの精度も指定できます )。最大
フィールド修飾子と最小フィールド修飾子が両方とも FRACTIONS の場合、
精度は最後のフィールドにのみ指定できます。最大フィールドおよび最小
フィールドの許容可能な修飾子は、図 3-5 に表示されている INTERVAL
フィールドのリストと同じものです。
ヒント : IBM Informix SQL または DB-Access 表メニューを使用しており、
INTERVAL フィールド 修飾子を指定しない場合、デフォルトの INTERVAL 修
飾子、YEAR TO YEAR が割り当てられます。
INTERVAL 値内の largest_qualifier は最大 9 桁の長さ (FRACTION の場合を除
く。これは、5 桁以上の長さは許されません ) が許されますが、入力したい
値がそのフィールドに許されているデフォルトの桁数より大きい場合、入
力する値の有効桁数の数を明示的に指定する必要があります。たとえば、
99 より多い日を格納できる DAY TO HOUR の INTERVAL を定義するには、次
のように入力します。
INTERVAL DAY(3) TO HOUR
INTERVAL 値は、DATETIME 値と同じ区切り文字を使用します。区切り文字
を図 3-6 に示します。
図 3-6
INTERVAL 区切り文字
区切り文字
DATETIME 式内の配置
ハイフン
YEAR と MONTH の間
スペース
値の DAY と HOUR 部分の間
コロン
値の HOUR および MINUTE 部分と MINUTE および
SECOND 部分の間
小数点
値の SECOND と FRACTION 部分の間
データ型 3-15
INTERVAL
INTERVAL 値を文字ストリングとして入力することもできます。ただし、文
字ストリングには、その列について定義されている同じ一連のフィールド
の情報が含まれている必要があります。たとえば、以下の INSERT 文は、文
字ストリングとして入力された INTERVAL 値を示します。
INSERT INTO manufact (manu_code, manu_name, lead_time)
VALUES ("BRO", "Ball-Racquet Originals", "160")
lead_time 列は INTERVAL DAY(3) TODAY として定義されるため、 この
INTERVAL 値には、1 つのフィールド、すなわち、リードタイムに必要な日
のスパンのみが必要です。文字ストリングにすべてのフィールドの情報が
含まれていない場合 ( あるいは追加フィールドを追加した場合 )、データ
ベース・サーバーはエラーを戻すことに注意してください。INTERVAL 値を
文字ストリングとして入力することについて詳しくは、7-424 ページの『リ
テラル INTERVAL』を参照してください。
特に指定のない限り、INTERVAL 列のすべてのフィールドは、年および小
数部フィールドを除き、2 桁の数値です。年のフィールドは、4 桁の数値と
して格納されます。小数部フィールドには n 桁が必要です。ここで、1 ≤ n ≤
5 であれば、偶数に切り上げられます。以下の公式 ( 整数のバイト数に切り
上げる ) を使用して、INTERVAL 値に必要なバイト数を計算できます。
すべてのフィールドの合計桁数 /2 + 1
たとえば、YEAR TO MONTH 修飾子は、合計 6 桁 ( 年に 4 桁、月に 2 桁 ) が
必要です。このデータ値には、4 バイト (6/2 + 1) のストレージが必要です。
算術演算および関係演算内での INTERVAL データの使用法については、3-24
ページの『DATE、DATETIME、および INTERVAL を使用した演算の範囲』
を参照してください。定数式としての INTERVAL の使用については、7-385
ページの『式としてのリテラル INTERVAL』を参照してください。
3-16 IBM Informix SQL リファレンス・ガイド
MONEY(p,s)
MONEY(p,s)
MONEY データ型は、通貨金額を格納します。MONEY データ型は、
DECIMAL データ型と同様、最大 32 の有効桁数まで固定小数点数を格納し
ます。ここで、p は有効桁数の合計数 ( 精度 ) で、s は小数点の右にある桁
数 ( 小数点以下桁数 ) です。
ただし、DECIMAL データ型と異なり、MONEY データ型は、常に、固定小
数点 10 進数として扱われます。データ型 MONEY(p) は DECIMAL(p,2) として
定義されます。precision パラメーターおよび scale パラメーターが指定され
ない場合、MONEY は DECIMAL(16,2) として解釈されます。
MONEY 列の値は、通貨記号 ( デフォルトでは、ドル記号 ($)) と小数点付き
で表示されます。以下の公式 ( 整数のバイト数に切り上げる ) を使用して、
MONEY データ型のバイト・ストレージを計算できます。
精度 /2 + 1
たとえば、16 という精度と 2 という小数点以下桁数を持つ MONEY データ
型 (MONEY(16,2)) には 9 バイト (16/2 + 1) のストレージが必要です。
ヒント : DBMONEY 環境変数を変更することによって、money 値の表示
フォーマットを変更できます。詳しくは、第 4 章、『環境変数』を参照して
ください。
NUMERIC(p,s)
NUMERIC データ型は DECIMAL のシノニムです。
REAL
REAL データ型は SMALLFLOAT のシノニムです。
SERIAL(n)
SERIAL データ型は、行が挿入された時点でデータベース・サーバーによっ
て自動的に割り当てられるシリアル整数を格納します。(SERIAL 列への値
の挿入について詳しくは、7-199 ページの『SERIAL 列への値の挿入』を参
照してください。) 表内に SERIAL 列を 1 つだけ定義できます。
データ型 3-17
SMALLFLOAT
デフォルトのシリアル開始番号は 1 ですが、表の作成時または変更時に初
期値 n を割り当てることができます。開始番号として、0 より大きい番号を
割り当てることができます。割り当てられる最大のシリアル番号は
2,147,483,647 です。
シリアル番号は、いったん割り当てられると、変更できません。ただし、
値が表内の既存の値と重複していない限り、その値をシリアル (SERIAL) 型
列に挿入 (INSERT 文を使用 ) したり、シリアル値 n をリセット (ALTER
TABLE 文を使用 ) したりすることができます。番号を SERIAL 列に挿入した
り、SERIAL 列の次の値をリセットすると、データベース・サーバーは、順
番どおりに次の番号を入力された番号に割り当てます。ただし、SERIAL 列
の次の値を、その列にすでに入っている値よりも小さい値にリセットした
場合、次の値は、以下の公式を使用して計算されます。
SERIAL 列内の既存の最大値 +1
たとえば、customer 表内の customer_num 列のシリアル値を 50 にリセット
し、割り当て済みの最大顧客番号が 128 である場合、次に割り当てられる
顧客番号は 129 です。
SERIAL データ型は、自動的に一意な列にはなりません。シリアル番号の重
複を回避するために、一意なインデックスをこの列に適用する必要があり
ます。
ヒント : IBM Informix SQL または DB-Access で対話型スキーマ・エディターを
使用して表を定義している場合は、SERIAL 列に一意なインデックスが自動
的に適用されます。
SERIAL データ型は、通常、一意な数字コード ( たとえば、注文、送り状、
または顧客番号 ) を格納するのに使用されます。SERIAL データ値には、4
バイトのストレージが必要です。
SMALLFLOAT
SMALLFLOAT データ型は、約 8 個の有効桁で単精度浮動小数点数を格納し
ます。SMALLFLOAT は、C 言語の浮動データ型に対応します。SMALLFLOAT
データ型の値の範囲は、マシン上の C 浮動データ型の値の範囲と同じです。
3-18 IBM Informix SQL リファレンス・ガイド
SMALLINT
SMALLFLOAT データ型は、一般的に、近似値でのみ計算可能な、科学的数
値を格納します。浮動小数点数は、それぞれの最上位数字のみを保存する
ため、このタイプの列に入力した数値とデータベースが表示する数値は、
わずかに異なることがあります。これは、ご使用のコンピューターが浮動
小数点数を内部的に格納する方法によって異なります。たとえば、1.1 とい
う値を SMALLFLOAT フィールドに入力すると、SQL 文を処理後に、アプリ
ケーション・ツールがこの値を 1.1000001 として表示することがあります。
これは、値が浮動小数点数に格納しきれない桁数を持っている場合に発生
します。この場合、値は、その近似値形式で格納され、最下位数字がゼロ
として扱われます。
SMALLFLOAT データ型は、通常、1 つの値あたり 4 バイト必要です。
SMALLINT
SMALLINT データ型は、-32,767 ~ 32,767 の範囲の整数を格納します。最大
の負数値 -32,768 は、予約値であり、使用できません。SMALLINT 値は、符
号付き 2 進整数として格納されます。
整数 (INTEGER) 型列は、一般的に、カウント、数量などを格納します。
SMALLINT データ型は、1 つの値につき 2 バイトのみ応じるため、算術演算
は極めて能率的に実行されます。ただし、このデータ型は、限定された範
囲の値を格納します。値が最小数から最大数までの範囲を超える場合、
データベース・サーバーは、その値を格納しません。
TEXT
TEXT データ型は、あらゆる種類のテキスト・データを格納します。
IBM Informix SE データベース・サーバーは、このデータ型をサポートしませ
ん。
データ型 TEXT には最大サイズはありません。TEXT 列は、231 バイトの論
理上の制限と、使用可能なディスク容量によって決定される実際上の制限
があります。
TEXT 列は、一般的に、メモ、マニュアルの章、ビジネス・ドキュメント、
プログラム・ソース・ファイルなどを格納します。型 TEXT のデータ・オ
ブジェクトには、印刷可能な ASCII 文字と以下の制御文字の組み合わせが
含まれます。
!
タブ (CTRL-I)
データ型 3-19
TEXT
!
改行 (CTRL-J)
!
改ページ (CTRL-L)
TEXT 列の内容を格納、検索、更新、削除することができます。ただし、
TEXT データ項目を算術演算またはストリング演算で使用したり、UPDATE
文の SET 節を持つ TEXT 項目にリテラルを割り当てることはできません。
また、以下のいずれの方法でも TEXT 項目を使用することはできません。
!
集計関数を使用する
!
IN 節を使用する
!
MATCHES または LIKE 節を使用する
!
GROUP BY 節を使用する
!
ORDER BY 節を使用する
NULL 値についてテストする場合に、TEXT オブジェクトをブール式で使用
できるだけです。
以下の方法であれば、データを TEXT 列に挿入できます。
!
dbload または tbload ユーティリティーを使用する
!
LOAD 文 (IBM Informix SQL および IBM Informix 4GL) を使用する
!
PROGRAM 属性 (IBM Informix SQL) を持つスクリーン・フォームを使
用する
!
TEXT ホスト変数 (4GL、ESQL/C) から
!
埋め込み SQL プログラム (ESQL/COBOL) から
引用符で囲まれたテキスト・ストリング、数値、その他の実際の値を使用
して、TEXT 列を挿入または更新することはできません。
TEXT 列を選択するときに、そのすべてを受け取るか、または一部を受け取
るか選択できます。その列のすべてを表示するには、通常の構文を使用し
て変数に組み込む列を選択します。以下の例に示されているサブスクリプ
トを使用することによって、TEXT 列の任意の部分を選択することもできま
す。
SELECT cat_descr [1,75] FROM catalog WHERE catalog_num = 10001
この文は、カタログ番号 10001 と関連付けられた cat_descr 列の最初の 75
バイトを読み取ります。
3-20 IBM Informix SQL リファレンス・ガイド
VARCHAR(m,r)
VARCHAR(m,r)
VARCHAR データ型は、可変長の文字ストリングを格納します。ここで、m
は列の最大サイズであり、r はその列用に予約されているスペースの最小量
です。IBM Informix SE データベース・サーバーは、このデータ型をサポート
しません。
VARCHAR 列の最大サイズ (m) を指定する必要があります。このパラメー
ターのサイズは、1 ~ 255 バイトの範囲が許されます。VARCHAR 列にイン
デックスを配置する場合、最大サイズは 254 バイトです。指定した値より
短い文字ストリングは格納できますが、それより長いものは格納できませ
ん。
最小予約済みスペース (r) パラメーターの指定はオプションです。この値
は、0 ~ 255 バイトの範囲のものですが、VARCHAR 列の最大サイズ (m) よ
り小さいものでなければなりません。最小スペース値を指定しない場合、
デフォルトの 0 が取られます。最初はこの列に短いデータまたは NULL
データを持つ行を挿入し、後でそのデータをもっと長い値で更新する予定
の場合は、このパラメーターを指定してください。
VARCHAR を使用すると、表で使用される領域を節約できますが、インデッ
クスのサイズには影響しません。VARCHAR 列に基づくインデックスでは、
各インデックス・キーは、列の最大サイズである m という長さを持ちます。
VARCHAR 値をデータベースに格納する場合、その定義済みの文字のみが格
納されます。データベース・サーバーはユーザーが入力した後続の空白文
字から成る VARCHAR オブジェクトを取り除くことも、列の長さいっぱい
まで VARCHAR を埋め込むこともしません。ただし、最小予約済みスペー
ス (r) を指定し、データ値のいくつかがその値よりも短い場合、行のために
予約されているスペースの一部は使用されません。
VARCHAR 値は、他の VARCHAR 値と比較され、文字値の場合は、文字値と
同じ方法で比較されます。つまり、両方の値が同じ長さになるまで短い方
の値の右側にスペースが埋め込まれます。次に、双方が全長について比較
されます。
データ型 3-21
データ型変換
データ型変換
現行のデータ型が対応できるないほど大きい値を格納する必要がある場合
に、列のデータ型を変更しなければならないことがあります。たとえば、
SMALLINT 列を作成し、後で、32,768 よりも大きい整数を格納しなければ
ならないことが分かった場合、大きい方の値を格納できるように、その列
のデータ型を変更する必要があります。その列のデータ型を変更するには、
ALTER TABLE 文を使用します。
データ型を変更する場合、新しいデータ型は、すべての古い値を格納でき
るものでなければなりません。たとえば、INTEGER データ型から
SMALLINT データ型に列を変換し、INTEGER 列に以下の値が存在している
場合、データベース・サーバーはデータ型を変更しません。SMALLINT 列
は 32,768 より大きい数値に対応できないためです。
100
400
700
50000
700
FLOAT または SMALLFLOAT 列から INTEGER、SMALLINT、または DECIMAL
列にデータを転送しようとした場合にも、同じ状態になることがあります。
3-22 IBM Informix SQL リファレンス・ガイド
数値から数値への変換
数値から数値への変換
ある数値データ型から別の数値データ型に列を変換した場合、丸め誤差が
見つかることがあります。図 3-7 に、受け入れ可能な数値データ型変換と、
一定の数値データ型間の変換で発生する可能性のあるエラーの種類を示し
ます。
図 3-7
数値データ型の変換図表
変換先 :
変換元 :
SMALLINT
INTEGER
SMALLFLOAT
FLOAT
DECIMAL
SMALLINT
ok
ok
ok
ok
O
INTEGER
X
ok
X
ok
O
SMALLFLOAT
X
X
ok
ok
O
FLOAT
X
X
F
ok
O
DECIMAL
X
X
F
F
O
凡例 :
ok =
O =
X =
F =
エラーなし
小数部の精度により、エラーが発生することがあります
データにより、エラーが発生することがあります
エラーにはなりませんが、下位有効数字はなくなることがあります
たとえば、FLOAT 列を DECIMAL(4,2) に変換する場合、データベース・サー
バーは、浮動小数点数を 10 進数として格納する前に、それらの数値を四捨
五入します。DECIMAL 列に割り当てられている精度によっては、この変換
の結果、エラーが発生することがあります。
数値と文字 (CHAR) 型との間の変換
CHAR 列を数値列に変換できます ( この逆の変換も可能です )。ただし、
CHAR 列に数値列で有効でない文字 ( たとえば、数字の 1 の代わりに文字 l )
が入っている場合、データベース・サーバーは、ALTER TABLE 文を完了で
きず、列の値を文字として残します。
データ型
3-23
DATE と DATETIME 間の変換
DATE と DATETIME 間の変換
DATE 列を DATETIME 列に変換することができます。ただし、DATETIME 列
に入っているフィールドの数が DATE 列のものよりも多い場合、データ
ベース・サーバーは、フィールドを無視するか、あるいはゼロで埋め込み
ます。以下の例は、これら 2 つのデータ型がどのように変換されるかを示
しています ( デフォルトの日付形式は mm/dd/yyyy と想定しています )。
!
DATE を DATETIME YEAR TO DAY に変換した場合、データベース・
サーバーは、既存の DATE 値を DATETIME 値に変換します。たとえ
ば、値 08/15/1990 は 1990-08-15 になります。
!
DATETIME YEAR TO DAY を DATE に変換した場合、値 1990-08-15 は
08/15/1990 になります。
!
DATE を DATETIME YEAR TO SECOND に変換した場合、データベー
ス・サーバーは、既存の DATE 値を DATETIME 値に変換し、その他
の DATETIME フィールドにゼロを埋め込みます。たとえば、
08/15/1990 は 1990-08-15 00:00:00 になります。
!
DATETIME YEAR TO SECOND を DATE に変換した場合、データベー
ス・サーバーは、既存の DATETIME を DATE 値に変換しますが、
DAY よりも精度の高いフィールドは削除します。たとえば、199008-15 12:15:37 は 08/15/1990 になります。
DATE、DATETIME、および INTERVAL を使用した
演算の範囲
各種の算術計算式および関係式内で DATE、DATETIME、および INTERVAL
データを使用できます。別の DATETIME 値、INTERVAL 値、現在時刻 ( キー
ワード CURRENT で識別されます )、または指定の時間単位 ( キーワード
UNITS で識別されます ) を持つ DATETIME 値を操作できます。ほとんどの場
合、DATETIME 値を使用するのに適しているときはいつでも、DATE 値を使
用できます ( 逆もまた可能です )。DATETIME 値と同じ選択肢を持つ
INTERVAL 値も操作することもできます。さらに、INTERVAL 値に対して数
値を乗じたり、除したりできます。
3-24 IBM Informix SQL リファレンス・ガイド
DATE、DATETIME、および INTERVAL を使用した演算の範囲
INTERVAL 列は、2 つの DATETIME 値の差または 2 つの INTERVAL 値の差 ( ま
たは和 ) を表す値を保持できます。どちらの場合も、結果はタイム・スパ
ン、つまり INTERVAL 値です。他方、INTERVAL 値を DATETIME 値と加算し
たり、減算すると、別の DATETIME 値が生成されます。結果は、特定の時
点であるためです。
図 3-8 に、各式の結果として生じるデータ型のほか、DATE、DATETIME、 お
よび INTERVAL データと一緒に使用できる式の範囲を示します。
図 3-8
DATE、DATETIME、および INTERVAL の式の範囲
オペランド 1 の
データ型
演算子
オペランド 2 の
データ型
結果
DATE
-
DATETIME
INTERVAL
DATETIME
-
DATE
INTERVAL
DATE
+ または -
INTERVAL
DATETIME
DATETIME
-
DATETIME
INTERVAL
DATETIME
+ または -
INTERVAL
DATETIME
INTERVAL
+
DATETIME
DATETIME
INTERVAL
+ または -
INTERVAL
INTERVAL
DATETIME
-
CURRENT
INTERVAL
CURRENT
-
DATETIME
INTERVAL
INTERVAL
+
CURRENT
DATETIME
CURRENT
+ または -
INTERVAL
DATETIME
DATETIME
+ または -
UNITS
DATETIME
INTERVAL
+ または -
UNITS
INTERVAL
INTERVAL
* または /
NUMBER
INTERVAL
その他の組み合わせは許されません。2 つの DATETIME 値を加算することは
できません。この演算では、時点もタイム・スパンも生成されないためで
す。たとえば、12 月 25 日と 1 月 1 日を加算することはできませんが、一方
から他方を減算して、両者間のタイム・スパンを求めることはできます。
データ型
3-25
DATETIME 値の操作
DATETIME 値の操作
ほとんどの DATETIME 値は、互いに減算することができます。日付は任意
の順でよく、結果は、正または負の INTERVAL 値です。最初の DATETIME 値
が結果のフィールド精度を決定します。
2 番目の DATETIME 値のフィールドの数が最初のものより少ない場合、長い
方の値に一致するよう短い方の値が自動的に拡張されます。( 7-391 ページ
の EXTEND 構文の説明を参照。) 以下の例で、DATETIME YEAR TO HOUR 値
を DATETIME YEAR TO MINUTE 値から減じると、60 日、1 時間と 30 分とい
う正の間隔値が求められます。2 番目の値に分は含まれていなかったため、
データベース・サーバーは、結果の分を 0 に設定します。
DATETIME (1990-9-30 12:30) YEAR TO MINUTE
- DATETIME (1990-8-1 11) YEAR TO HOUR
Result: INTERVAL (60 01:30) DAY TO MINUTE
2 番目の DATETIME 値のフィールドの方が最初の値よりも多い場合 ( 余分の
フィールドの精度が最初の値より大きくても小さくても関係なく )、2 番目
の値のその他のフィールドは計算では無視されます。以下の式 ( および結
果 ) では、2 番目の値に年が含まれていません。したがって、年は自動的に
現在年に設定され ( この場合は 1990)、結果として生じる INTERVAL は負と
なり、2 番目の日付が最初の日付よりも後であることを示します。
DATETIME (1990-9-30) YEAR TO DAY
- DATETIME (10-1) MONTH TO DAY
Result: INTERVAL (1) DAY TO DAY [assuming current year is 1990]
INTERVAL 値を持つ DATETIME の操作
INTERVAL 値を、DATETIME 値に加算したり、減算したりできます。どちら
の場合も、結果は DATETIME 値です。INTERVAL 値を DATETIME 値に加算す
る場合、値の順序は重要でありません。ただし、減算の場合は、DATETIME
値が最初に来る必要があります。INTERVAL 値を加算または減算すると、
DATETIME 値が時間が先に進んだり、前に戻ったりします。以下の例では、
式により、日付が 3 年と 5 か月先に進みます。
DATETIME (1990-8-1) YEAR TO DAY
+ INTERVAL (3-5) YEAR TO MONTH
Result: DATETIME (1994-01-01) YEAR TO DAY
3-26 IBM Informix SQL リファレンス・ガイド
DATETIME 値および INTERVAL 値を持つ DATE の操作
ほとんどの場合、最初の値が同じ精度を持っていなければ、データベー
ス・サーバーが計算を自動的に調整します。ただし、特定の場合には、計
算を実行するのに、1 つの値の精度を明示的に調整する必要があります。
加算または減算を行う INTERVAL 値が DATETIME 値に含まれていない場合、
EXTEND 関数を使用して、DATETIME 値のフィールド修飾子を明示的に拡張
する必要があります。(EXTEND 関数について詳しくは、7-391 ページの
『EXTEND 関数』を参照してください。) たとえば、先の例で、YEAR TO
DAY フィールド修飾子を持つ DATETIME 値から分 INTERVAL 値を減じるこ
とはできません。しかし、以下の例に示すように、EXTEND 関数を使用す
れば、この計算を実行できます。
EXTEND (DATETIME (1990-8-1) YEAR TO DAY, YEAR TO MINUTE)
- INTERVAL (720) MINUTE(3) TO MINUTE
Result: DATETIME (1990-07-31 12:00) YEAR TO MINUTE
EXTEND 関数を使用すると、DATETIME 精度を YEAR TO DAY から YEAR TO
MINUTE に明示的に高めることができます。これにより、データベース・
サーバーは計算を実行し、結果として、YEAR TO MINUTE という拡張精度
が得られます。
DATETIME 値および INTERVAL 値を持つ DATE の操作
図 3-9 に示されている操作を可能にする式を作成することにより、
DATETIME 値または INTERVAL 値と一緒に DATE 値を算術式内で使用できま
す。
図 3-9
DATETIME 値または INTERVAL 値を持つ DATE を操作する式の結果
式
結果
DATE - DATETIME
INTERVAL
DATETIME - DATE
INTERVAL
DATE + または - INTERVAL
DATETIME
これらの場合、DATE 値が最初にそれぞれ対応する DATETIME 等値に変換さ
れ、次に式が通常の方法で計算されます。
データ型
3-27
DATETIME 値および INTERVAL 値を持つ DATE の操作
DATE 値および DATETIME 値はさまざまな場合に交換できますが、値が
DATE データ型または DATETIME データ型のどちらであるかを指示する必要
があります。DATE 値は、次のソースのどれからも得られます。
!
型 DATE の列またはプログラム変数
!
TODAY キーワード
!
DATE() 関数
!
MDY 関数
DATETIME は、次のソースのどれからも得られます。
!
型 DATETIME の列またはプログラム変数
!
CURRENT キーワード
!
EXTEND 関数
!
DATETIME リテラル
DATE 値および DATETIME 値を引用符付きの文字ストリングとして表現する
場合、ストリング内のフィールドは適切な順序になっている必要がありま
す。すなわち、DATE 値を予期している場合、ストリングは DATE 形式に
なっている必要があり、DATETIME を予期している場合、ストリングは
DATETIME 形式になっている必要があります。たとえば、“10/30/1990” を
DATE ストリングとして使用することはできますが、DATETIME ストリング
として使用することはできません。その代わり、“1990-10-30” または “9010-30” を DATETIME ストリングとして使用する必要があります。
DATE 値を別の DATE 値から減算することもできますが、結果は、INTERVAL
値ではなく、正または負の INTEGER 値となります。INTERVAL 値が必要な
場合、INTEGER 値を INTERVAL 値に変換するか、あるいは減算の前に DATE
値の 1 つを DATETIME 値に変換できます。
たとえば、以下の式は、DATE() 関数を使用して文字ストリング定数を DATE
値に変換し、それぞれの差を計算してから、UNITS DAY キーワードを使用
して INTEGER 結果を INTERVAL 値に変換します。
(DATE ("5/2/1990") - DATE ("4/6/1955")) UNITS DAY
Result: INTERVAL (12810) DAY(5) TO DAY
3-28 IBM Informix SQL リファレンス・ガイド
INTERVAL 値の操作
YEAR TO MONTH 精度が必要な場合、次の例に示されているとおり、最初の
DATE オペランドで EXTEND 関数を使用できます。
EXTEND (DATE ("5/2/1990"), YEAR TO MONTH) - DATE ("4/6/1955")
Result: INTERVAL (35-01) YEAR TO MONTH
結果として生じる INTERVAL 精度は YEAR TO MONTH となることに注意して
ください。DATETIME 値が最初にあるためです。DATE 値が最初にある場合、
結果として生じる INTERVAL 精度は DAY(5) TO DAY となります。
INTERVAL 値の操作
INTERVAL 値が同じクラスからのものである ( すなわち、両方の値が year-
month または day-time である ) かぎり、まとめて加算したり、互いに減算す
ることができます。以下の例では、SECOND TO FRACTION 値が MINUTE TO
FRACTION 値から減算されます。
INTERVAL (100:30.0005) MINUTE(3) TO FRACTION(4)
- INTERVAL (120.01) SECOND(3) TO FRACTION
Result: INTERVAL (98:29.9905) MINUTE TO FRACTION(4)
最初の値の MINUTE と FRACTION、さらに 2 番目の値の SECOND がデフォル
トの桁数を超えていることをデータベース・サーバーにアラートするのに
数値修飾子を使用することに注意してください。
INTERVAL 値の加算または減算を行う場合、2 番目の値に、最初の値より大
きい精度を持つフィールドを入れることはできません。たとえば、最初の
値が MONTH TO MONTH の場合、2 番目の INTERVAL に YEAR TO MONTH を使
用することはできません。ただし、2 番目の INTERVAL に、最初の値より小
さい精度のフィールドを入れることはできます。たとえば、最初の値が
DAY TO HOUR の場合、2 番目の INTERVAL として HOUR TO SECOND を使用
できます。2 番目の INTERVAL 値のその他のフィールド ( この場合は
MINUTE と SECOND) は、計算では無視されます。
データ型
3-29
INTERVAL 値の乗算または除算
INTERVAL 値の乗算または除算
INTERVAL 値に対して数値を乗じたり、除したりできます。この数値は、整
数でも分数でもかまいません。ただし、計算に剰余があっても無視され、
結果は切り捨てられます。たとえば、以下の式は、INTERVAL に分数を乗じ
ます。
INTERVAL (15:30.0002) MINUTE TO FRACTION(4) * 2.5
Result: INTERVAL (38:45.0005) MINUTE TO FRACTION(4)
この例では、15 * 2.5= 37.5 分、30 * 2.5 = 75 秒、2 * 2.5 =5 小数部 (4) となり
ます。.5 分が 30 秒に変換され、60 秒が 1 分に変換されて、最終的な結果は
38 分 45 秒 .0005 秒になります。すべての計算の結果に、元の INTERVAL 値
と同じ精度が含まれることに注意してください。
3-30 IBM Informix SQL リファレンス・ガイド
環境変数
本章の内容 .
. .
第
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 4-3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 4-4
Informix 環境変数
.
DBANSIWARN . . .
DBDATE . . . .
DBDELIMITER . .
DBEDIT . . . .
DBFORMAT . . .
DBLANG . . . .
DBMENU . . . .
DBMONEY . . . .
DBNETTYPE . . .
DBPATH . . . .
DBPRINT . . . .
DBREMOTECMD . .
DBSRC . . . .
DBTEMP . . . .
DBTIME . . . .
INFORMIXCOB . .
INFORMIXCOBDIR .
INFORMIXCOBSTORE .
INFORMIXCOBTYPE .
INFORMIXDIR . .
INFORMIXONLINEDIR
INFORMIXTERM . .
NOSORTINDEX . .
SQLEXEC . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
環境変数の設定
.
4-5
4-7
4-8
4-9
4-10
4-10
4-11
4-12
4-12
4-13
4-14
4-15
4-16
4-16
4-17
4-18
4-20
4-20
4-21
4-21
4-22
4-23
4-23
4-24
4-25
4
章
SQLRM . .
SQLRMDIR .
TBCONFIG .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
.
.
.
.4-26
.4-27
.4-27
UNIX 環境変数
PATH . .
TERM . .
TERMCAP .
TERMINFO .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.4-28
.4-28
.4-29
.4-30
.4-30
4-2 IBM Informix SQL リファレンス・ガイド
.
.
.
.
.
本章の内容
IBM Informix 製品を使用するには、ご使用の端末を識別する特定の環境変数
を設定し、ソフトウェアの場所を指定し、ご使用製品の環境のその他のパ
ラメーターを定義する必要があります。本章では、1 つまたは複数の
IBM Informix 製品に適用されるすべての環境変数について説明し、それらの
設定方法を示します。また、特定の UNIX システム環境変数の設定方法も
示します。
ご使用の IBM Informix 製品では、お客様の環境について、以下のデフォルト
解釈を行います。
!
一時ファイルは、/tmp ディレクトリーに格納されます。
!
ご使用の製品のプログラム、コンパイラー、またはプリプロセッ
サー、さらに関連するファイルおよびライブラリーは、
/usr/informix ディレクトリーにインストールされています。明細に
ついては、製品のマニュアルをご覧ください。
!
IBM Informix SE を使用している場合、ターゲット・データベースま
たは現行データベースは現行ディレクトリーに入っています。
!
アンロードされたデータ・ファイルのフィールド分離記号は、縦
バー (|=ASCII 124) です。
!
エディターを使用する製品のエディターは、オペレーティング・シ
ステム用の優れたエディターで、通常、vi です。
!
印刷機能を備えた製品の場合、コンピューターが UNIX System V を
実行しているときは、ファイルをプリンターに送信するプログラム
は、通常、lp です。その他の UNIX システムの場合、デフォルトは
lpr です。
環境変数 4-3
環境変数の設定
環境変数の設定
ご使用の IBM Informix 製品が認識する 1 つまたは複数の環境変数を設定する
ことによって、先に示したデフォルトのどれでも変更できます。
IBM Informix 製品をすでに使用している場合、該当の環境変数の一部または
すべてがすでに設定されている可能性があります。現在の環境設定を表示
するには、システム・プロンプトで printenv (BSDUNIX) または env
(UNIXSystem V) を入力します。
システム・プロンプトや、.login または .cshrc (C シェル ) あるいは .profile
(Bourne シェル ) ファイルに Informix および UNIX 環境変数を設定できます 。
( 環境変数の設定が、.login ファイルと .cshrc ファイルで異なっていないこ
とを確認してください。)
!
システム・プロンプトで環境変数を設定した場合、次にシステムに
ログインしたときに環境変数を再度割り当てる必要があります。
!
.login、.cshrc、または .profile ファイルに環境変数を設定した場合、
システムにログインするたびに環境変数は自動的に割り当てられま
す。
ファイルに変数を設定した場合、ログアウトしてから、もう一度ロ
グインするか、IBM Informix 製品で作業を行う前にファイルを
source に指定して、シェルが入力を読み取れるようにする必要があ
ります。
環境変数を設定するには、標準 UNIX コマンドを使用します。たとえば、
次のように、ABCD 環境変数を value に設定できます。
C シェル :
setenv ABCD value
Bourne シェル :
ABCD=value
export ABCD
以下の図は、IBM Informix 製品に特定のすべての環境変数をリストしていま
す。これらの環境変数とそれぞれの使用法については、次の節で説明して
います。標準 UNIX システム環境変数 PATH、TERM、TERMCAP、および
TERMINFO については、本章の最後の節で説明します。
4-4 IBM Informix SQL リファレンス・ガイド
Informix 環境変数
また、IBM Informix OnLine 管理者は、診断情報の保存や並列ソート機能用
に追加の環境変数を設定するよう選択できます。一貫性検査変数が
GCORE、DUMPCORE、DUMPDIR、DUMPSHMEM の 4 つで、並列ソート変
数は PSORT_NPROCS と PSORT_DBTEMP の 2 つです。それぞれの使用法お
よび設定については、IBM Informix OnLine 管理者ガイド で説明しています。
Informix 環境変数
図 4-1 に、IBM Informix 製品がサポートする環境変数をアルファベット順に
並べています。
環境変数 4-5
Informix 環境変数
図 4-1
IBM Informix 製品の環境変数
ISQL
DBANSIWARN
DBDATE
DBDELIMITER
DBEDIT
DBFORMAT
DBLANG
DBMENU
DBMONEY
DBNETTYPE
DBPATH
DBPRINT
DBREMOTECMD
DBSCREENOUT
DBSRC
DBTEMP
DBTIME
INFORMIXCOB
INFORMIXCOBDIR
INFORMIXCOBSTORE
INFORMIXCOBTYPE
INFORMIXDIR
INFORMIXONLINEDIR
INFORMIXTERM
NOSORTINDEX
SQLEXEC
SQLRM
SQLRMDIR
TBCONFIG
4-6 IBM Informix SQL リファレンス・ガイド
DB-Access
I4GL
対話型
デバッガー
ESQL/C
ESQL/
COBOL
DBANSIWARN
DBANSIWARN
DBANSIWARN 環境変数は、Informix の拡張機能について検査することを指
示します。ほとんどの環境変数と異なり、DBANSIWARN を 1 つの値に設定
する必要はありません。以下のように、この変数をなんらかの値に設定し
ても、しなくても、問題ありません。
C シェル :
setenv DBANSIWARN
Bourne シェル :
DBANSIWARN=
export DBANSIWARN
IBM Informix SQL について DBANSIWARN 環境変数を設定することは、機能
的には、-ansi フラグ付きで isql または saceprep を呼び出すことと同じで
す。(DB-Access の場合、-ansi フラグ付きでコマンド行からユーティリ
ティーを起動することと同じです。) isql または saceprep を実行する前に
DBANSIWARN を設定した場合、ANSI 標準構文に対する Informix の拡張機能
が見つかった時点で警告が生成されます。SQL メニュー内では、警告は画
面に表示されます。saceprep から ( または REPORT メニュー内で )、警告は
.err ファイルに書き込まれます。
IBM Informix 4GL または IBM Informix ESQL プログラムをコンパイルする前に
DBANSIWARN 環境変数を設定することは、機能的に、コマンド行で -ansi
フラグを指定することと同じです。ANSI 標準構文に対する Informix の拡張
機能がプログラムで見つかると、警告メッセージが IBM Informix ESQL 製品
の画面または IBM Informix 4GL の .err ファイルに書き込まれます。
ANSI 準拠でない文が実行された場合、実行時に、DBANSIWARN 環境変数に
より、以下の SQL 通信領域 (SQLCA) 変数が W に設定されます。(SQLCA に
ついて詳しくは、第 5 章、『SQLCA を使用したエラー処理』を参照してく
ださい。)
製品
SQLCA 変数
IBM Informix ESQL/C
sqlca.sqlwarn.sqlwarn5
IBM Informix ESQL/COBOL
SQLWARN5 OF SQLWARN OF SQLCA
IBM Informix 4GL
SQLCA.SQLAWARN[6]
環境変数 4-7
DBDATE
いったん DBANSIWARN が設定されると、Informix の拡張機能検査は、ログ
アウトするか、DBANSIWARN をリセットするまで、自動的になります。
Informix の拡張機能検査をオフにするには、以下のコマンドを使用して、
DBANSIWARN 環境変数をリセットしてください。
C シェル :
unsetenv DBANSIWARN
Bourne シェル : unset DBANSIWARN
DBDATE
DBDATE 環境変数は、DATE 値について以下の形式を指定します。
!
日付の月、日、および年の順序
!
年を 2 桁 (Y2) で出力するか、4 桁 (Y4) で出力する
!
月、日、および年の間の分離記号
DBDATE のデフォルト値は MDY4/ です。ここで、M は月を、D は日を、Y4
は 4 桁年を、また、スラッシュ (/) は分離記号を表します。たとえば、
12/25/1990 というようになります。
分離記号のその他の許容文字として、ハイフン (-)、ピリオド (.)、またはゼ
ロ (0) があります。( ゼロは、分離記号がないことを指示します。)
スラッシュ (/) は、分離記号としてハイフン、ピリオド、またはゼロ以外の
文字を使用しようとした場合、あるいは DBDATE 定義内に分離文字を含め
なかった場合に現れます。
分離文字は、必ず、最後に指定する必要があります。年に指定する桁数は、
常に、Y の後に続けます。
日付を mmddyy と表すには、DBDATE 環境変数を次のように設定します。
C シェル :
setenv DBDATE MDY20
Bourne シェル :
DBDATE=MDY20
export DBDATE
ここで、MDY は、月、日、および年を、2 は年の 2 桁を、0 は分離記号がな
いことをそれぞれ指示します。結果として、日付は 122590 と表示されます。
4-8 IBM Informix SQL リファレンス・ガイド
DBDELIMITER
日付をヨーロッパ形式 (dd-mm-yyyy) で表すには、DBDATE 環境変数を次の
ように設定してください。
C シェル :
setenv DBDATE DMY4-
Bourne シェル : DBDATE=DMY4export DBDATE
ここで、DMY は日、月、および年の順序を表し、4 は年の 4 桁を指示し、はハイフン分離文字を指定します。結果として、日付は 25-12-1990 と表示さ
れます。
ヒント : ESQL/C および ESQL/COBOL によって呼び出される特定のルーチン
は、DBDATE ではなく、DBTIME 変数を使用して DATETIME 形式を国際仕様
に設定することができます。詳しくは、DBTIME の説明およびお使いの
ESQL 製品のマニュアルを参照してください。
DBDELIMITER
DBDELIMITER 環境変数は、アンロードされたデータ・ファイル内で
dbload および dbexport ユーティリティーによって使用される、あるいは
IBM Informix 4GL、IBM Informix SQL、および DB-Access で LOAD および
UNLOAD 文と一緒に使用される、フィールド区切り文字を指定します。縦
バー (|=ASCII 124) がデフォルトです。
たとえば、フィールド区切り文字をプラス記号 (+) に変更するには、
DBDELIMITER 環境変数を次のように設定します。
C シェル :
setenv DBDELIMITER +
Bourne シェル : DBDELIMITER=+
export DBDELIMITER
環境変数 4-9
DBEDIT
DBEDIT
DBEDIT 環境変数は、以下のタスクのために使用するテキスト・エディ
ターの名前を指定します。
!
IBM Informix SQL 内から、フォーム仕様ファイル、レポート仕様ファ
イルおよびコマンド・ファイルを変更する
!
DB-Access で SQL 文およびコマンド・ファイルを処理する
!
プログラム・ファイル、フォーム仕様ファイル、およびコマンド・
ファイルを IBM Informix 4GL プログラマー環境内から作成する
DBEDIT が設定されている場合、指定のエディターは直接呼び出されます。
DBEDIT が設定されていない場合、セッションの残りについてデフォルト
としてエディターを指定するようプロンプトが出されます。
DBEDIT 環境変数は次のように設定します。
C シェル :
setenv DBEDIT editor
Bourne シェル :
DBEDIT=editor
export DBEDIT
ここで、editor は、使用するテキスト・エディターの名前です。
ほとんどのシステムの場合、デフォルトは vi です。別のエディターを使用
する場合は、フラット ASCII ファイルを作成するためにそのエディターが
インストールされていることを確認してください。一部のワードプロセッ
サーでは、「文書モード」の場合、IBM Informix 4GL、IBM Informix 4GL 対話型
デバッガー、IBM Informix SQL ACE レポート・ライター、または IBM Informix
SQL PERFORM 画面トランザクション・プロセッサーの操作を妨害する可能
性のある、プリンター制御文字が導入されます。
DBFORMAT
DBFORMAT 環境変数は、IBM Informix SQL および IBM Informix 4GL が以下の
状況で使用する情報を指定します。
!
画面で値を入力する場合
!
IBM Informix SQL ACE レポート・ライターまたは PERFORM 画面トラ
ンザクション・プロセッサーを使用する場合
!
IBM Informix 4GL が画面またはレポートに出力値を表示する場合
4-10 IBM Informix SQL リファレンス・ガイド
DBLANG
この環境変数は、DECIMAL、MONEY、FLOAT、SMALLFLOAT、INTEGER、お
よび SMALLINT データ型の値を形式設定するのに使用されます。
DBFORMAT 変数によって指定された形式設定は、DBMONEY 変数によって
指定された形式設定を上書きします。ただし、4GL CONSTRUCT 文によって
生成される文字ストリングの場合を除きます。( 詳しくは、ご使用の製品の
マニュアルを参照してください。)
DBFORMAT 環境変数を次のように設定します。
C シェル :
setenv DBFORMAT 'front:thousands:decimal:back'
Bourne シェル : DBFORMAT='front:thousands:decimal:back'
export DBFORMAT
ここで、front は、先行通貨記号のための、オプションの 1 ~ 7 文字値です。
オプションの thousands は、可能な千の分離記号を指示する 1 つまたは複数
の文字です。この文字には、数字、<、>、|、:、?、!、=、[、または ] 以外
の任意のものを使用できます。デフォルトは * です。decimal は、可能な小
数点記号を決定する 1 つまたは複数の文字です。この文字には、数字、<、
>、|、:、?、!、=、[、]、*、または thousands 値に指定された文字以外の任
意のものを使用できます。back は、後書きの通貨記号のための、オプショ
ンの 1 ~ 7 文字値を表します。
DBLANG
DBLANG 環境変数は、プログラムが使用するコンパイル済みメッセージ・
ファイルが入っている $INFORMIXDIR のサブディレクトリーを指定しま
す。デフォルトのサブディレクトリーは msg であり、コンパイル済みメッ
セージ・ファイルは接尾辞 .iem を持っています。
$INFORMIXDIR/msg 以外のメッセージ・ディレクトリーを使用する場合
は、次のステップに従います。
1.
mkdir コマンドを使用して、$INFORMIXDIR 内に該当のサブディレ
クトリーを作成します。
2.
サブディレクトリーの所有者およびグループを informix に、この
ディレクトリーについてのアクセス権限を 755 に、それぞれ設定し
ます。
環境変数
4-11
DBMENU
3.
DBLANG 環境変数を、次のように新しいサブディレクトリーに設
定します ( サブディレクトリーの名前だけを指定します。そのパス
名は指定しないでください。)
setenv DBLANG dirname
C シェル :
Bourne シェル : DBLANG=dirname
export DBLANG
4.
.iem ファイルを、$INFORMIXDIR/$DBLANG によって指定された新
しいメッセージ・ディレクトリーにコピーします。メッセージ・
ディレクトリー内のすべてのファイルは、所有者とグループ
informix、およびアクセス権限 644 を持っている必要があります。
5.
プログラムを実行するか、もしくはご使用の製品での作業を続行し
ます。
DBMENU
DBMENU 環境変数は、IBM Informix SQL が最初にアクセスするユーザー・メ
ニューを指定します。デフォルトは、現在データベースのユーザー・メ
ニューの Main Menu です。たとえば、「testing」メニューをデフォルトにす
るには、DBMENU 環境変数を次のように設定します。
C シェル :
setenv DBMENU testing
Bourne シェル :
DBMENU=testing
export DBMENU
DBMONEY
DBMONEY 環境変数は、MONEY 値の表示フォーマットを指定するもので、
[front][. | ,][back] で構成されます。
ここで、front は、MONEY 値より前にあるオプションの記号です。ピリオド
またはコンマは、MONEY 値の整数部分を小数部分と区切るオプションの記
号です。back は、MONEY 値の後に付けるオプションの記号を表します。
front および back 記号は、最大 7 文字まで可能であり、コンマとピリオドを
除く、任意の文字を含むことができます。
4-12 IBM Informix SQL リファレンス・ガイド
DBNETTYPE
DBMONEY のデフォルト値は $. です。この場合、ドル記号は MONEY 値の前
に付き、ピリオド (.) は MONEY 値の整数部分を小数部分と区切ります。後
置記号はありません。たとえば、$100.50 というようになります。
MONEY 値を、通貨記号 DM とピリオドを使用する DM ( ドイツ ・マルク ) で
表すとします。DBMONEY 環境変数を次のように設定します。
C シェル :
setenv DBMONEY DM,
Bourne シェル : DBMONEY=DM,
export DBMONEY
ここで、DM は MONEY 値の前にある通貨記号で、コンマは MONEY 値の整
数部分を小数部分と区切ります。結果として、金額は DM100,50 と表示され
ます。
back 記号を変更する場合は必ず、front 記号と MONEY 値分離記号 ( コンマ
またはピリオド ) も指定する必要があります。同様に、値分離記号をコン
マからピリオドに変更する場合は、front 記号も指定する必要があります。
DBMONEY は、データ型 MONEY、DECIMAL、および FLOAT の表示フォー
マットを指定します。
ヒント : IBM Informix 4GL は、DBMONEY 変数ではなく、DBFORMAT 変数を
使用して、画面またはレポートに表示される特定のデータ型値を形式設定
します。IBM Informix 4GL が出力値を形式設定する方法について詳しくは、
本章の DBFORMAT の説明およびご使用の製品のマニュアルを参照してくだ
さい。
DBNETTYPE
DBNETTYPE は、特定の AT&T プラットフォームに固有の環境変数で、ネッ
トワーク・プロトコルの識別を最適化するのに使用されます。DBNETTYPE
は、AT&T マシンを IBM Informix NET または IBM Informix STAR で使用してお
り、/dev/starlan と、/dev/tcp または /dev/it ファイルがクライアント・マシ
ンおよびサーバー・マシン上にあり、starlan ではなく tcp/ip を使用したい場
合にのみ設定します。sqlexecd デーモンを起動する前に、サーバー上で
DBNETTYPE を設定します。
環境変数 4-13
DBPATH
DBNETTYPE が設定されない場合、デフォルトは StarLAN です。TCP/IP を次
のように指定します。
C シェル :
setenv DBNETTYPE tcp/ip
Bourne シェル : DBNETTYPE=tcp/ip
export DBNETTYPE
ネットワーク・プロトコルについて詳しくは、IBM Informix NET and
IBM Informix STAR インストールおよび構成のガイド を参照してください。
DBPATH
DBPATH 環境変数は、ご使用の製品がレポート、フォーム、問い合せファ
イル、コマンド・スクリプトなどを検索するためのディレクトリーのリス
ト ( 現行ディレクトリーに加えて ) を指定します。IBM Informix SE データ
ベース・サーバーを使用している場合、DBPATH は、データベースが含ま
れているディレクトリーも識別します。IBM Informix NET または IBM Informix
STAR を使用している場合、DBPATH には、リモート・ホスト名とパスも含
めることができます。詳しくは、IBM Informix NET and IBM Informix STAR イン
ストールおよび構成のガイド を参照してください。
PATH 変数を設定するのに使用するフォーマットと同じものを使用します。
ディレクトリー名の間に、必ずコロンを入力してください。たとえば、以
下の DBPATH 設定では、製品は、現行ディレクトリーだけでなく、Nigel の
ディレクトリーと Zooie のディレクトリー内でもデータベース・ファイル
を検索します。
C シェル :
setenv DBPATH /usr/Nigel:/usr/Zooie
Bourne シェル :
DBPATH=/usr/Nigel:/usr/Zooie
export DBPATH
IBM Informix NET または IBM Informix STAR 環境で、マシン名の前にダブル・
スラッシュ (//) を含めることにより、DBPATH をローカル・マシンまたはリ
モート・マシンのどちらかにあるディレクトリーに設定できます。
4-14 IBM Informix SQL リファレンス・ガイド
DBPRINT
たとえば、この設定は、quality マシン上の /results ディレクトリーを指定し
ます。
C シェル :
setenv DBPATH //quality/results
Bourne シェル : DBPATH=//quality/results
export DBPATH
以下の例では、prodmar マシン上のリモート IBM Informix OnLine データ
ベースにアクセスするよう DBPATH を設定します。
C シェル :
setenv DBPATH //prodmar
Bourne シェル : DBPATH=//prodmar
export DBPATH
ヒント : IBM Informix 4GL 対話型デバッガー は、DBPATH 変数ではなく、
DBSRC 変数を使用して、4GL プログラム・ソース・ファイルの検索を行い
ます。IBM Informix 4GL 対話型デバッガー が 4GL ソース・ファイルを検索す
る方法について詳しくは、本章の DBSRC の説明と、ご使用の製品のマニュ
アルを参照してください。
DBPRINT
DBPRINT 環境変数は、ご使用のコンピューター用の印刷プログラムを指定
します。任意のコマンド、シェル・スクリプト、または標準 ASCII 入力を
処理する UNIX ユーティリティーを指定できます。ほとんどの BSD UNIX シ
ステムで、デフォルト・プログラムは lpr です。UNIX System V の場合、デ
フォルト・プログラムは、通常、lp です。
DBPRINT 環境変数を次のように設定します。
C シェル :
setenv DBPRINT progname
Bourne シェル :
DBPRINT=progname
export DBPRINT
ここで、progname は、使用する印刷プログラムの名前です。
環境変数 4-15
DBREMOTECMD
DBREMOTECMD
IBM Informix OnLine のインプリメンテーションに指定されたデフォルトの
リモート・シェルを上書きするよう DBREMOTECMD 環境変数を設定でき
ます。この設定は、単純コマンドまたは絶対パス名のどちらかを使用して
行います。絶対パス名を使用する場合、データベース・サーバーは、指定
されたコマンドの PATH を検索します。
他のディレクトリー内にある似た名前のプログラムに関する問題や、「制限
付きシェル」(/usr/bin/rsh) との考えられる混同を回避するために、対話型
UNIX プラットフォームでは絶対パス名構文をお勧めします。
単純なコマンド名について、DBREMOTECMD 環境変数を次のように設定し
ます。
C シェル :
setenv DBREMOTECMD rcmd
Bourne シェル : DBREMOTECMD=rcmd
export DBREMOTECMD
BREMOTECMD 環境変数を次のように設定して、絶対パス名を指定します。
C シェル :
setenv DBREMOTECMD /usr/bin/remsh
Bourne シェル : DBREMOTECMD=/usr/bin/remsh
export DBREMOTECMD
詳しくは、IBM Informix OnLine 管理者ガイド に記載されている、IBM Informix
OnLine アーカイブ、リストア、および論理ログ・バックアップのリモー
ト・テープ機能の説明を参照してください。
DBSRC
DBSRC は、IBM Informix 4GL 対話型デバッガーに固有の環境変数です。この
変数は、デバッグ・セッション中にのみ検索パスの一部であるディレクト
リー・パス名を指定します。ディレクトリー名の間に、必ずコロンを入力
してください。
4-16 IBM Informix SQL リファレンス・ガイド
DBTEMP
たとえば、以下のように DBSRC を設定すると、IBM Informix 4GL 対話型デ
バッガーは、programs および june ディレクトリー内でファイルを検索しま
す。
C シェル :
setenv DBSRC /b/shawn/programs:/b/june
Bourne シェル : DBSRC=/b/shawn/programs:/b/june
export DBSRC
DBSRC 変数を指定しない場合、現行ディレクトリーがデフォルトです。
IBM Informix 4GL 対話型デバッガーを終了し、4GL プログラマー環境または
オペレーティング・システムに戻ると、DBSRC に指定されたパス名は、検
索パスの一部ではなくなります。
デバッグ・セッション中のディレクトリー検索の順序の指定について詳し
くは、Guide to the IBM Informix 4GL Interactive Debugger を参照してください。
DBTEMP
DBTEMP 環境変数は、製品がその一時ファイを入れるディレクトリーを指
定します。デフォルト /tmp で問題がない場合は、DBTEMP を設定する必要
はありません。DBTEMP 環境変数を次のように設定します。
C シェル :
setenv DBTEMP dirname
Bourne シェル : DBTEMP=dirname
export DBTEMP
ここで、dirname は、一時ファイを保持しようとするディレクトリーの絶対
パス名です。
環境変数 4-17
DBTIME
DBTIME
DBTIME 環境変数を設定すると、DATETIME フォーマットが各種の国際また
は現地 TIME 規則にさらに厳密に準拠するように操作することができます。
DBTIME は、特定の IBM Informix ESQL DATETIME ルーチンを呼び出した場合
にのみ有効になります。それ以外の場合は、DBDATE 環境変数を使用する
必要があります。( 詳しくは、お手元の IBM Informix ESQL/C Programmer’s
Manual または IBM Informix ESQL/COBOL Programmer’s Manual を参照してく
ださい。)
以下の形式設定ディレクティブを使用して、入出力 (I/O) DATETIME ストリ
ング・フィールドの正確な形式を指定するよう DBTIME を設定できます。
これを行わない場合、DATETIME 形式設定ルーチンの動作は不確定です。
ストリング
使用法
%b
短縮された月名で置き換えられます。
%B
完全な月名で置き換えられます。
%d
10 進数 [01,31] として月間通算日で置き換えられます。
%Fn
整数 n で指定された精度を持つ分数の値で置き換えられます。n のデ
フォルト値は 2、n の範囲は 0 £ n £ 5 です。
%H
10 進数 [00,23] として時間 (24 時間時計 ) で置き換えられます。
%I
10 進数 [01,12] として時間 (12 時間時計 ) で置き換えられます。
%M
10 進数 [00,59] として分で置き換えられます。
%m
10 進数 [01,12] として月で置き換えられます。
%p
%S
「a.m」または「p.m.」( あるいは地方標準時の等値 ) で置き換えられま
す。
10 進数 [00,59] として秒で置き換えられます。
%y
2 桁の 10 進数 [00,99] として年で置き換えられます。間隔値の形式は表
示されたとおりに取られます。すなわち、「88」は「0088」を意味し、
「1988」を意味するものではありません。
%Y
4 桁の 10 進数として年で置き換えられます。99 年より長い間隔には Y
を使用します。
%%
% で置き換えられます ( 形式ストリング内の % に対応するため )。
4-18 IBM Informix SQL リファレンス・ガイド
DBTIME
たとえば、DATETIME year to second を似た形式の ASCII ストリング形式に変
換するには、次のようにします。
Mar 21, 1990 at 16 h 30 m 28 s
DBTIME を以下のように設定します。
C シェル
setenv DBTIME "%b %d, %Y at %H h %M m %S s"
Bourne シェル :
DBTIME="%b %d, %Y at %H h %M m %S s"
export DBTIME
デフォルト DBTIME は、次の形式と似ている従来型の ANSI SQL ストリング
形式を生成するもので、
1990-03-21 16:30:28
次のように設定されます。
C シェル :
setenv DBTIME "%Y-%m-%d %H:%M:%S"
Bourne シェル : DBTIME="%Y-%m-%d %H:%M:%S"
export DBTIME
オプションのフィールドの幅および精度の指定は、% 文字の直後に置くこ
とができます。これは、次のように解釈されます。
[-|0]w
ここで、w は、最小フィールドの幅を指定する 10 進数ストリ
ングです。特に指定のない限り、値は右寄せされ、左にス
ペースが入れられます。
- が指定された場合、左寄せされ、右側にスペースが入れら
れます。
0 が指定された場合、右寄せされ、左側にゼロが入れられま
す。
.p
ここで、p は、d、H、I、m、M、S、y、および Y 変換に表示
される桁数と、b および B 変換に使用される最大文字数を指
定する 10 進数ストリングです。精度の指定が重要なのは、
DATETIME 値を ASCII ストリングに変換する場合だけです。
逆の場合は、あてはまりません。
環境変数 4-19
INFORMIXCOB
!
変換指定により、精度によって指定されているより桁数の少ない数
字が提供された場合、先行ゼロで埋め込まれます。
!
変換指定により、精度によって指定されているより桁数の多い数字
が提供された場合、超過した文字は右側で切り捨てられます。
!
d、H、I、m、M、S、または y 変換についてフィールドの幅または
精度が指定されない場合、デフォルトの .2 が使用されます。Y 変換
には、.4 というデフォルトが使用されます。
F 変換では、先に述べたフィールドの幅および精度の形式変換に従いませ
ん。
INFORMIXCOB
INFORMIXCOB 環境変数は、IBM Informix ESQL/COBOL と一緒に使用する
COBOL コンパイラーのプログラム名を指定します。( ご使用の COBOL コン
パイラーの名前については、COBOL システムのマニュアルを参照してくだ
さい。) INFORMIXCOB 環境変数を次のように設定します。
C シェル :
setenv INFORMIXCOB program
Bourne シェル :
INFORMIXCOB=program
export INFORMIXCOB
ここで、program は、COBOL パラメーターのプログラム名、すなわち、コ
ンパイラー環境を呼び出すコマンドです。
INFORMIXCOBDIR
INFORMIXCOBDIR 環境変数は、実行時ライブラリー・オブジェクトが収容
されるディレクトリーです。この環境変数を使用するのは、IBM Informix
ESQL/COBOL で COBOL 実行時プログラムを作成する場合だけです。
INFORMIXCOBDIR 環境変数は次のように設定します。
C シェル :
setenv INFORMIXCOBDIR dirname
Bourne シェル : INFORMIXCOBDIR=dirname
export INFORMIXCOBDIR
ここで、 dirname は、必要なディレクトリーの名前です。
4-20 IBM Informix SQL リファレンス・ガイド
INFORMIXCOBSTORE
INFORMIXCOBSTORE
INFORMIXCOBSTORE 環境変数を設定して、IBM Informix ESQL/COBOL が MF
COBOL/2 環境でコンパイル中に使用するストレージのタイプを
ESQL/COBOL に対して指示することができます。この変数により、内部 C
変数タイプにマップされる特定の PICTURE 節への ESQL/COBOL の対応また
は非対応が決まります。
BINARY または COMPUTATIONAL データの保管に必要なバイト数は、
PICTURE 節に指定されたサイズ ( 最大桁数 ) に基づきます。MF COBOL/2 コ
ンパイラーは、BINARY および COMPUTATIONAL データを保管するのに必要
なバイト数を判断するときに byte ストレージが指定されているのか、それ
とも word ストレージが指定されているのかも考慮します。(MF COBOL/2
は、byte ストレージのみ使用します。)
未定義のままにした場合、デフォルトの記憶モードは byte です。このスト
レージの方が、使用可能なデータ型選択肢が限定されます。byte ストレージ
を使用する場合、正当な PIC サイズは 3、4、7、8、および 9 です。word ス
トレージの場合、PIC サイズは 1 ~ 9 の範囲です。
word ストレージを指定するには、INFORMIXCOBSTORE 環境変数を次のよ
うに設定します。
C シェル :
setenv INFORMIXCOBSTORE word
Bourne シェル :
INFORMIXCOBSTORE=word
export INFORMIXCOBSTORE
Micro Focus コンパイラーのストレージ割り当てを示す表については、
IBM Informix ESQL/COBOL Programmer’s Manual を参照してください。
INFORMIXCOBTYPE
INFORMIXCOBTYPE 環境変数は、ご使用の COBOL コンパイラーのメー
カーを指定する 2 文字のコードです。INFORMIXCOBTYPE 環境変数を次の
ように設定します。
C シェル :
setenv INFORMIXCOBTYPE type
Bourne シェル :
INFORMIXCOBTYPE=type
export INFORMIXCOBTYPE
環境変数 4-21
INFORMIXDIR
ここで、type は、IBM Informix ESQL/COBOL で使用する COBOL コンパイラー
のメーカーです。たとえば、次のようになります。
型
メーカー
mf2
Micro Focus
rm85
Ryan-McFarland
コンパイラー固有の情報については、IBM Informix ESQL/COBOL Programmer’s
Manual を参照してください。
INFORMIXDIR
INFORMIXDIR 環境変数は、プロダクト・ファイルがインストールされるサ
ブディレクトリーが含まれるディレクトリーを指定します。複数のバー
ジョンの IBM Informix OnLine または IBM Informix SE がある場合は、アクセ
スする必要のあるバージョンの該当ディレクトリー名に INFORMIXDIR を
設定します。
INFORMIXDIR 環境変数は、次の推奨インストール・ディレクトリーに設定
してください。
C シェル :
setenv INFORMIXDIR /usr/informix
Bourne シェル :
INFORMIXDIR=/usr/informix
export INFORMIXDIR
4-22 IBM Informix SQL リファレンス・ガイド
INFORMIXONLINEDIR
INFORMIXONLINEDIR
INFORMIXONLINEDIR 環境変数は、IBM Informix OnLine サーバーがインス
トールされるディレクトリーを指定します。複数のバージョンの
IBM Informix OnLine がある場合は、INFORMIXONLINEDIR を、アクセスす
る必要のあるバージョンの該当ディレクトリー名に設定します。
INFORMIXONLINEDIR 環境変数は、次の推奨インストール・ディレクト
リーに設定してください。
C シェル :
setenv INFORMIXONLINEDIR /usr/informix
Bourne シェル :
INFORMIXONLINEDIR=/usr/informix
export INFORMIXONLINEDIR
この変数を使用する時期については、IBM Informix OnLine 管理者ガイド を参照
してください。
INFORMIXTERM
INFORMIXTERM 環境変数は、termcap ファイルまたは terminfo ディレクト
リー内の情報を IBM Informix SQL、IBM Informix 4GL、および DB-Access が使用
するかどうかを指定します。INFORMIXTERM は、ファンクション・キー、
画面表示のカラー属性と強調属性、ウィンドウ枠とグラフィック文字の定
義など、端末に依存するキーボードおよび画面の機能を決定します。
INFORMIXTERM が設定されない場合、デフォルトは termcap です。
IBM Informix SQL、IBM Informix 4GL、または DB-Access がシステム上にインス
トールされている場合、termcap ファイルは、$INFORMIXDIR の etc サブ
ディレクトリーに入れられます。このファイルは、オペレーティング・シ
ステム termcap ファイルのスーパーセットです。
Informix が提供する termcap ファイル、システム termcap ファイル、または
ご自分で作成した termcap ファイルを使用できます。デフォルトの
termcap ファイルを使用しない場合は、TERMCAP 環境変数を設定する必要
があります。
terminfo ディレクトリーには、すでに定義済みの各端末名のファイルが含
まれます。これは、UNIX SystemV terminfo ライブラリーを完全サポートす
るマシン上でのみサポートされます。
環境変数
4-23
NOSORTINDEX
端末の項目は、REVERSE および UNDERLINE 強調属性を使用できるように
します。ただし、IBM Informix SQL スクリーン・フォームでカラーまたは強
調属性 BLINK または BOLD を使用する場合や、IBM Informix 4GL プログラム
および画面表示でカラーまたは BLINK、BOLD、DIM、または INVISIBLE 属
性を使用する場合は、INFORMIXTERM を termcap に設定する必要がありま
す。
INFORMIXTERM 環境変数を、次のように terminfo に設定します。
C シェル :
setenv INFORMIXTERM terminfo
Bourne シェル :
INFORMIXTERM=terminfo
export INFORMIXTERM
INFORMIXTERM 環境変数を、次のように termcap に設定します。
C シェル :
setenv INFORMIXTERM termcap
Bourne シェル :
INFORMIXTERM=termcap
export INFORMIXTERM
ヒント : INFORMIXTERM が termcap に設定される場合、TERMCAP UNIX 環
境変数を設定する必要があります。terminfo に設定される場合は、
TERMINFO UNIX 環境変数を設定する必要があります。
NOSORTINDEX
IBM Informix OnLine のバージョン 5.0 のデフォルトの高速インデックス付け
機能を使用不能にするよう、NOSORTINDEX 環境変数を定義することができ
ます。NOSORTINDEX 環境変数が設定されると、すべてのインデックスは、
5.0 より前のバージョンのとおりに作成されます。( データベース・サー
バーは、データ・ページを読み通し、データ行で見つかるたびに各イン
デックス項目を追加します。)
NOSORTINDEX が設定されない場合、大きい方のインデックスが、5.0 より
前のバージョンとは異なる形で自動的に作成されます。( 大きい表 (30 ペー
ジ以上にわたるか、500 行以上が含まれるもの ) の場合、データベース・
サーバーは、まず最初に、1 つの表のすべてのデータ・ページを読み通し、
インデックスを付けるデータを抽出します。インデックス項目を B+ ツ
リーに挿入する前に、インデックス項目はソートされるため、結果として、
短時間でインデックスが作成されます。)
4-24 IBM Informix SQL リファレンス・ガイド
SQLEXEC
NOSORTINDEX を設定するかどうかを決める前に、IBM Informix SQL チュート
リアル・ガイド に記載されているインデックス付けと最適化についての解
説をお読みください。
NOSORTINDEX 環境変数を次のように設定します。
C シェル :
setenv NOSORTINDEX
Bourne シェル : NOSORTINDEX=
export NOSORTINDEX
SQLEXEC
SQLEXEC 環境変数は、アプリケーション開発ツールのプロセスを該当の
データベース・サーバーに対して指示します。プロセスは、最初に、
IBM Informix OnLine データベース・サーバーを探します。したがって、シ
ステム上に IBM Informix SE と IBM Informix OnLine の両方のデータベース・
サーバーがインストールされており、IBM Informix SE にアクセスする必要が
ある場合に限り、SQLEXEC を設定する必要があります。
SQLEXEC にはデータベース・サーバーの絶対パス名を含める必要がありま
す。これは、$INFORMIXDIR ディレクトリーの lib サブディレクトリーに
入っています。
IBM Informix SE データベース・サーバーを指定するには、SQLEXEC 環境変
数を次のように設定します。
C シェル :
setenv SQLEXEC $INFORMIXDIR/lib/sqlexec
Bourne シェル : SQLEXEC=$INFORMIXDIR/lib/sqlexec
export SQLEXEC
SQLEXEC を次のように IBM Informix OnLine データベース・サーバーにリ
セットします。
C シェル :
setenv SQLEXEC $INFORMIXDIR/lib/sqlturbo
Bourne シェル :
SQLEXEC=$INFORMIXDIR/lib/sqlturbo
export SQLEXEC
環境変数
4-25
SQLRM
SQLRM
IBM Informix NET または IBM Informix STAR 環境で、リレー・モジュールを使
用するようクライアントを構成できます。これを行うには、SQLRM 環境変
数を設定して、別のネットワーク・サーバー上でデータベースを指定した
場合に、IBM Informix 製品がデータベース・サーバーではなくリレー・モ
ジュールを使用することを指示します。リレー・モジュールは、ネット
ワーク・サーバー上の sqlexec プロセスと似ています。
SQLRM が設定された場合、別のサーバー上のデータベースにアクセスする
のにリレー・モジュール ( データベース・サーバーの代わりに ) が使用され
ます。SQLRM が設定されない場合、リレー・モジュールは使用されませ
ん。
SQLRM が設定された場合、データベース・サーバーは、SQLRMDIR によっ
て指定されたパスに従ってリレー・モジュールを探します。SQLRM を次の
ように設定します。
C シェル :
setenv SQLRM /usr/rm/sqlrmiiittt
Bourne シェル :
SQLRM=/usr/rm/sqlrmiiittt
export SQLRM
ここで、iii はネットワーク・インターフェースを指示するコードで、ttt は
ネットワーク・トランスポートを決定するコードです。たとえば、次のよ
うになります。
iii
インターフェース
ttt
トランスポート
soc
Berkeley Sockets
tcp
TCP/IP
tli
tli
grp
AT&T StarGROUP
usr
ユーザー作成
usr
その他のユーザー提供ネット
ワーク
4-26 IBM Informix SQL リファレンス・ガイド
SQLRMDIR
バージョン 5.0 でサポートされるネットワーク・トランスポート / インター
フェースごとに別個のリレー・モジュールがあります。各ポートは、イン
ストール・スクリプトが実行されたときに表示されるデフォルトのリ
レー・モジュールを持っています。ご使用のポートのリレー・モジュール
の名前については、データベース管理者にお問い合わせください。リ
レー・モジュールおよびネットワーク・プロトコルの詳細については、
IBM Informix NET and IBM Informix STAR インストールおよび構成のガイド を参
照してください。
SQLRMDIR
IBM Informix NET または IBM Informix STAR 環境では、SQLRM 環境変数によっ
て定義された、すべてのリレー・モジュール実行可能ファイルが収容され
ているディレクトリーを指示するよう SQLRMDIR 環境変数を設定できま
す。SQLRMDIR を設定しない場合、デフォルトは $INFORMIXDIR/lib です。
/usr/rm 内のリレー・モジュール実行可能ファイルへのパスを指定するに
は、SQLRMDIR を次のように設定します。
C シェル :
setenv SQLRMDIR /usr/rm
Bourne シェル : SQLRMDIR=/usr/rm
export SQLRMDIR
リレー・モジュールおよびネットワーク・プロトコルの詳細については、
IBM Informix NET and IBM Informix STAR インストールおよび構成のガイド を参
照してください。
TBCONFIG
TBCONFIG 環境変数には、IBM Informix OnLine の構成パラメーターを保持
する tbconfig ファイルの名前が含まれています。TBCONFIG は、$INFORMIXDIR ディレクトリーで複数の IBM Informix OnLine システムが初期化さ
れている場合にのみ、設定する必要があります。TBCONFIG を設定しない
場合、デフォルトは tbconfig です。
環境変数
4-27
UNIX 環境変数
各 IBM Informix OnLine システムは、独自の tbconfig ファイルを持っており、
このファイルは、$INFORMIXDIR/etc ディレクトリーに格納する必要があり
ます。tbconfig を指定すると、特定の IBM Informix OnLine システムに容易
に関連させることができます。たとえば、必要なファイル名が tbconfig3 の
場合、TBCONFIG 環境変数を次のように設定します。
C シェル :
setenv TBCONFIG tbconfig3
Bourne シェル : TBCONFIG=tbconfig3
export TBCONFIG
UNIX 環境変数
IBM Informix 製品は、標準の UNIX システム環境変数の正しい設定にも依存
します。すべての製品で、PATH および TERM 環境変数を設定する必要があ
り、一部の製品では、TERMCAP または TERMINFO 環境変数も設定する必
要があります。Informix 環境変数の場合と同様、システム・プロンプトや、
.login または .cshrc (C シェル ) あるいは .profile (Bourne シェル ) ファイルに
UNIX 環境変数を設定できます。
PATH
PATH 環境変数は、実行可能プログラムについてディレクトリーを検索する
順序をシェルに伝えます。ご使用の IBM Informix 製品が含まれているディレ
クトリーを PATH 環境変数にインクルードしてからでないと、製品を使用
することはできません。
正しい検索パスの指定方法は、いくつかあります。ディレクトリー名の間
に、必ずコロンを入れてください。
以下の例は、明示的なパス /usr/informix を使用します。このパスは、INFORMIXDIR 設定に対応するものでなければなりません。
C シェル :
setenv PATH $PATH:/usr/informix/bin
Bourne シェル : PATH=$PATH:/usr/informix/bin
export PATH
4-28 IBM Informix SQL リファレンス・ガイド
TERM
次の例は、/usr/informix の代わりに $INFORMIXDIR を指定します。これ
は、INFORMIXDIR が設定の時点で指定されたディレクトリーを検索するよ
うシェルに指示します。PATH 項目が INFORMIXDIR に設定されたパスと矛盾
しないようにこのバージョンを使用すると、INFORMIXDIR を変更するたびに
PATH をリセットする必要がありません。
C シェル :
setenv PATH $PATH:$INFORMIXDIR/bin
Bourne シェル :
PATH=$PATH:$INFORMIXDIR/bin
export PATH
.login または .cshrc ファイルではなく、コマンド行で PATH 環境変数を設定
する場合、次のように、既存の INFORMIXDIR および PATH を中括弧で囲む
必要があります。
C シェル :
setenv PATH ${INFORMIXDIR}/bin:${PATH}
TERM
TERM 環境変数は、端末処理に使用されます。この変数は、DB-Access、
IBM Informix 4GL、および IBM Informix SQL がご使用中の端末を認識し、通信
できるようにします。TERM 設定に指定された端末タイプは、termcap ファ
イルまたは terminfo ディレクトリーの項目と対応するものでなければなり
ません。TERM 環境変数を設定するには、その前に、OnLine または SE 管理
者から端末のコードを取得しておく必要があります。
たとえば、vt100 端末を指定するには、TERM 環境変数を次のように設定し
ます。
C シェル :
setenv TERM vt100
Bourne シェル :
TERM=vt100
export TERM
環境変数
4-29
TERMCAP
TERMCAP
TERMCAP 環境変数は、端末処理に使用されます。この変数は、DB-Access、
IBM Informix 4GL、および IBM Informix SQL に、terminfo ディレクトリーでは
なく、termcap ファイルと通信するよう指示します。termcap ファイルに
は、各種タイプの端末およびそれぞれの特性のリストが含まれます。
TERMCAP を使用する場合は、INFORMIXTERM を termcap に設定すること
も必要です。
C シェル :
setenv TERMCAP /usr/informix/etc/termcap
Bourne シェル :
TERMCAP=/usr/informix/etc/termcap
export TERMCAP
TERMINFO
TERMINFO 環境変数は、端末処理に使用されます。これは、UNIX System V
terminfo ライブラリーを完全サポートするマシン上でのみサポートされま
す。
TERMINFO は、DB-Access、IBM Informix 4GL、および IBM Informix SQL に、
termcap ファイルではなく、terminfo ディレクトリーと通信するよう指示し
ます。terminfo ディレクトリーは、端末およびそれぞれの特性に関係する
ファイルが含まれる、サブディレクトリーを持ちます。TERMINFO を使用
する場合は、INFORMIXTERM を terminfo に設定することも必要です。
C シェル :
setenv TERMINFO /usr/lib/terminfo
Bourne シェル : TERMINFO=/usr/lib/terminfo
export TERMINFO
4-30 IBM Informix SQL リファレンス・ガイド
SQLCA を使用したエラー処理
本章の内容 .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 5-3
IBM Informix 4GL 内の SQLCA レコード .
.
.
.
.
.
.
.
. 5-5
IBM Informix ESQL/C
.
.
.
.
.
.
.
. 5-7
IBM Informix ESQL/COBOL 内の SQLCA レコード .
.
.
.
.
.
. 5-10
内の sqlca 構造体
第
5
章
5-2 IBM Informix SQL リファレンス・ガイド
本章の内容
SQL 文を実行すると、データベース・サーバーは、常に、SQL 通信領域
(SQLCA) と呼ばれるデータ構造体に入れて、演算に関するその他の情報と
一緒に、結果コードを戻します。SQLCA データ構造体に格納されるのは、
最近実行された SQL 文に関する情報だけです。あらゆる 4GL または埋め込
み言語 (ESQL) プログラムは、この構造体の内容を検査して、SQL 文が予想
どおりに実行したか確認できます。
以下のいずれの IBM Informix プログラム言語製品を使用しても、SQLCA
データ構造体にアクセスできます。
!
4GL
!
ESQL/C
!
ESQL/COBOL
図 5-1 に、各 IBM Informix プログラム言語製品で使用できる SQLCA フィー
ルドを要約します。
SQLCA を使用したエラー処理 5-3
図 5-1
IBM Informix 製品の SQLCA データ構造体情報のサマリー表
プログラム言語
提供される結果コード
提供される文実行の詳細
報告される特別な条件
4GL
*STATUS
SQLCA.SQLERRD[1]
SQLCA.SQLAWARN[1]
または
SQLCA.SQLCODE
~
SQLCA.SQLERRD[6]
~
SQLCA.SQLAWARN[8]
sqlca.sqlcode
sqlca.sqlerrd[0]
sqlca.sqlwarn.sqlwarn0
または
SQLCODE
~
sqlca.sqlerrd[5]
~
sqlca.sqlwarn.sqlwarn7
SQLCODE OF SQLCA
SQLERRD[1] OF SQLCA
SQLWARN0 OF SQLWARN OF
SQLCA
ESQL/C
ESQL/COBOL
~
SQLERRD[6] OF SQLCA
~
SQLWARN7 OF SQLWARN OF
SQLCA
* STATUS は、SQL 文の後に限り、SQLCA.SQLCODE と同等です。その他の IBM Informix 4GL 文も
STATUS を設定します
IBM Informix プログラム言語製品は、すべての SQL 文 (DECLARE 文を除く )
を実行後に結果コード ( 図 5-1 の 2 番目の列を参照 ) を戻し、SQLCA データ
構造体に組み込みます。結果コードが負の値の場合、文は正常には実行さ
れていません。また、SQLCA データ構造体は、文の実行中に検出された例
外条件または問題に関する情報も提供します。
本章では、各種 IBM Informix プログラム言語製品での SQLCA データ構造体
のフィールドについて説明します。
5-4 IBM Informix SQL リファレンス・ガイド
IBM Informix 4GL 内の SQLCA レコード
IBM Informix 4GL 内の SQLCA レコード
IBM Informix 4GL SQLCA レコードを、以下に示します。
DEFINE SQLCA
SQLCODE
SQLERRM
SQLERRP
SQLERRD
SQLAWARN
END RECORD
RECORD
INTEGER,
CHAR(71),
CHAR(8),
ARRAY [6]
CHAR (8)
OF
INTEGER ,
以下のリストで、この レコード内の各フィールドについて説明します。
SQLCODE
SQL 文の実行結果を示します。
これは、次のように設定されます。
!
ほとんどの文の正常な実行についてはゼロに設定す
る
!
ゼロ行を戻す正常に実行された問い合せまたはアク
ティブ・セットの終わりを超えて探索する FETCH の
場合は、NOTFOUND (100 として定義済み ) に設定す
る
!
正しく実行されない実行の場合は負の値に設定する
IBM Informix 4GL は、各 SQL 文の後に、SQLCODE と等しい広
域変数 STATUS を設定します。ただし、後続の 4GL 文は STATUS をリセットできます。
SQLERRM
エラー・メッセージ ( 最大 71 文字 ) が含まれます。
SQLERRP
将来の利用に備えて予約されています。
SQLERRD
型 INTEGER の以下の 6 つの変数の配列です。
SQLCA を使用したエラー処理 5-5
IBM Informix 4GL 内の SQLCA レコード
SQLAWARN
SQLERRD[1]
現時点では使用されていません。
SQLERRD[2]
戻された SERIAL 値またはエラー・コードで
す。
SQLERRD[3]
処理された行の数です。
SQLERRD[4]
問い合せの見積り CPU コストです。
SQLERRD[5]
SQL 文に組み込まれるエラーのオフセット
です。
SQLERRD[6]
最後に処理された行の行 ID です。
個々の文字が、SQL 文の実行に続いて ( エラーとは対照的
に ) 各種の警告条件を送信する、長さ 8 の文字ストリングで
す。問題や例外条件が検出されない場合、文字はブランクで
す。
SQLAWARN[1]
他の警告文字の 1 つまたは複数が W に設定
された場合に、W に設定されます。
SQLAWARN[1] がブランクの場合、残りの警
告文字を検査する必要はありません。
SQLAWARN[2]
1 つまたは複数のデータ項目が CHAR プログ
ラム変数に収まるように切り捨てられた場
合、または DATABASE 文がトランザクショ
ンを持つデータベースを選択した場合に、W
に設定されます。
SQLAWARN[3]
集計関数 (SUM、AVG、MAX、または MIN) が
その評価中に NULL 値を検出した場合、ま
たは DATABASE 文が ANSI 準拠データベース
を選択した場合は、W に設定されます。
SQLAWARN[4]
DATABASE 文が IBM Informix OnLine データ
ベースを選択した場合、または SELECT 節の
select-list 内の項目の数が INTO 節内のプログ
ラム変数の数と同じでない場合に、W に設
定されます。後者の場合、4GL によって戻
される値の数は、これら 2 つの数値の小さ
い方です。
5-6 IBM Informix SQL リファレンス・ガイド
IBM Informix ESQL/C 内の sqlca 構造体
SQLAWARN[5]
浮動から 10 進数への変換が使用される場合
に、W に設定されます。
SQLAWARN[6]
ご使用のプログラムが ANSI 順序標準構文に
対する 4GL 拡張機能を実行し、DBANSIWARN 環境変数が設定されているか、ある
いは -ansi オプションが指定されている場合
に、W に設定されます。
SQLAWARN[7]
将来の利用に備えて予約されています。
SQLAWARN[8]
将来の利用に備えて予約されています。
IBM Informix ESQL/C 内の sqlca 構造体
ESQL/C sqlca 構造体は、sqlca.h ファイルに定義されるもので、以下にそれ
を示します。sqlca.h ヘッダー・ファイルは ESQL/C プログラムに自動的に
組み込まれます。
#ifndef SQLCA_INCL
#define SQLCA_INCL
struct sqlca_s
{
long sqlcode;
char sqlerrm[72]; /* error message parameters */
char sqlerrp[8];
long sqlerrd[6];
/* 0 - estimated number of rows returned */
/* 1 - serial value after insert or ISAM error code */
/* 2 - number of rows processed */
/* 3 - estimated cost */
/* 4 - offset of the error into the SQL statement */
/* 5 - rowid after insert */
struct sqlcaw_s
{
char sqlwarn0; /* = W if any of sqlwarn[1-7] = W */
char sqlwarn1; /* = W if any truncation occurred or
database has transactions */
char sqlwarn2; /* = W if a null value returned or
ANSI database */
char sqlwarn3; /* = W if no. in select list != no. in into
list or OnLine backend */
char sqlwarn4; /* = W if no where clause on prepared update,
delete or incompatible float format */
char sqlwarn5; /* = W if non-ANSI statement */
char sqlwarn6; /* reserved */
char sqlwarn7; /* reserved */
SQLCA を使用したエラー処理 5-7
IBM Informix ESQL/C 内の sqlca 構造体
} sqlwarn;
};
extern struct sqlca_s sqlca;
extern long SQLCODE;
#define SQLNOTFOUND 100
#endif /* SQLCA_INCL */
以下のリストで、この構造体内のフィールドについて説明します。
sqlcode
IBM Informix ESQL/C 文の実行結果を示します。これは、次の
ように設定されます。
!
ほとんどの文の正常な実行についてはゼロに設定す
る
!
ゼロ行を戻す正常に実行された問い合せの場合、ま
たはアクティブ・セットの終わりを超えて探索する
FETCH の場合は、SQLNOTFOUND (sqlca.h に 100 とし
て定義 ) に設定する ( ただし、ANSI 準拠データベー
スでは、INSERT INTO/SELECT 文または DELETE、
UPDATE あるいは SELECT INTO TEMP 文が行へのアク
セスに失敗した場合、SQLCODE OF SQLCA の値は 0
ではなく、100 に設定されます )
!
正しく実行されない実行の場合は 負の値に設定する
SQLCODE は、sqlca.sqlcode のもう 1 つの名前で、ESQL/C
ファイルや、sqlca.h が組み込まれている C モジュールで使
用できます。
sqlerrm
エラー・メッセージ ( 最大 71 文字 ) が含まれます。
sqlerrp
将来の利用に備えて予約されています。
5-8 IBM Informix SQL リファレンス・ガイド
IBM Informix ESQL/C 内の sqlca 構造体
sqlerrd
sqlwarn
長さ 6 の整数の配列です。
sqlerrd(0)
見積り戻り行数です。
sqlerrd(1)
戻された SERIAL 値またはエラー・コードで
す。
sqlerrd(2)
処理された行の数です。
sqlerrd(3)
処理されたディスク・アクセスと合計行数
の重み付きの和です。
sqlerrd(4)
SQL 文に組み込まれるエラーのオフセット
です。
sqlerrd(5)
最後に処理された行の行 ID です。
個々の文字が、SQL 文の実行に続いて ( エラーとは対照的
に ) 各種の警告条件を送信する、長さ 8 の文字ストリングを
含む構造体です。問題が検出されない場合、文字はブランク
です。
sqlwarn0
他の警告文字の 1 つまたは複数が W に設定
された場合に、W に設定されます。
sqlwarn0 がブランクの場合、残りの警告文
字を検査する必要はありません。
sqlwarn1
1 つまたは複数のデータ項目が文字ホスト変
数に収まるように切り捨てられた場合、ま
たは DATABASE 文がトランザクションを持
つデータベースを選択した場合に、W に設
定されます。関連する標識変数を調べると、
どの項目が切り捨てられたのか分かります。
sqlwarn2
集計関数 (SUM、AVG、MAX、MIN) がその評
価中に NULL 値を検出した場合、または
DATABASE 文が ANSI 準拠データベース ( ト
ランザクション付き ) を選択した場合に、W
に設定されます。
SQLCA を使用したエラー処理 5-9
IBM Informix ESQL/COBOL 内の SQLCA レコード
sqlwarn3
DATABASE 文が IBM Informix OnLine データ
ベースを選択した場合、または SELECT 節の
select-list 内の項目の数が INTO 節内のホスト
変数の数と同じでない場合に、W に設定さ
れます。IBM Informix ESQL/C が戻す項目の数
は、これら 2 つの数値の小さい方です。
sqlwarn4
浮動から 10 進数への変換が使用される場合
に、W に設定されます。UPDATE または
DELETE 文が WHERE 節なしで準備されてい
る場合に、DESCRIBE 文によっても W に設定
されます。WHERE 節がない場合、UPDATE
文または DELETE 文が表全体に適用されま
す。この変数を検査することにより、表に
対する意図的でない変更を防止できます。
sqlwarn5
ご使用のプログラムが ANSI 順序標準構文に
対して Informix 拡張機能を実行し、DBANSIWARN 環境変数が定義されているか、ある
いは -ansi オプションが指定されている場合
に、W に設定されます。
sqlwarn6
将来の利用に備えて予約されています。
sqlwarn7
将来の利用に備えて予約されています。
IBM Informix ESQL/COBOL 内の SQLCA レコード
IBM Informix ESQL/COBOL SQLCA レコードは、各プログラム内に自動的に組
み込まれます。これらのレコードは、COBOL コンパイラーによって異なり
ます。
Ryan-McFarland コンパイラーの SQLCA レコードは、次のとおりです。
77
01
SQLNOTFOUND PIC S9(10)
SQLCA.
05 SQLCODEPIC S9(5)
05 SQLERRM.
49 SQLERRML
49 SQLERRMC
05 SQLERRP
05 SQLERRD
5-10 IBM Informix SQL リファレンス・ガイド
VALUE 100.
COMPUTATIONAL-4.
PIC S9(4) COMPUTATIONAL-4.
PIC X(70).
PIC X(8).
OCCURS 6 TIMES
PIC S9(5) COMPUTATIONAL-4.
IBM Informix ESQL/COBOL 内の SQLCA レコード
05
SQLWARN.
10 SQLWARN0
10 SQLWARN1
10 SQLWARN2
10 SQLWARN3
10 SQLWARN4
10 SQLWARN5
10 SQLWARN6
10 SQLWARN7
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
X(1).
X(1).
X(1).
X(1).
X(1).
X(1).
X(1).
X(1).
Micro Focus コンパイラーの SQLCA レコードは、次のとおりです。
77
01
SQLNOTFOUND PIC S9(10)
SQLCA.
05 SQLCODE
05 SQLERRM.
49 SQLERRML
49 SQLERRMC
05 SQLERRP
05 SQLERRD
05
SQLWARN.
10 SQLWARN0
10 SQLWARN1
10 SQLWARN2
10 SQLWARN3
10 SQLWARN4
10 SQLWARN5
10 SQLWARN6
10 SQLWARN7
VALUE 100.
PIC S9(9)
COMPUTATIONAL-5.
PIC S9(4) COMPUTATIONAL-5.
PIC X(70).
PIC X(8).
OCCURS 6 TIMES
PIC S9(9) COMPUTATIONAL-5.
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
X(1).
X(1).
X(1).
X(1).
X(1).
X(1).
X(1).
X(1).
SQLCA を使用したエラー処理 5-11
IBM Informix ESQL/COBOL 内の SQLCA レコード
以下のリストで、これらのレコードのコンポーネントについて説明します。
SQLCODE
SQL 文の実行結果を示します。これは、次のように設定され
ます。
SQLERRM
!
ほとんどの文の正常な実行についてはゼロに設定す
る
!
ゼロ行を戻す正常に実行された問い合せの場合、ま
たはアクティブ・セットの終わりを超えて探索する
FETCH の場合は、SQLNOTFOUND (100 として定義 ) に
設定する ( ただし、ANSI 準拠データベースでは、
INSERT INTO/SELECT 文または DELETE、UPDATE あ
るいは SELECT INTO TEMP 文が行へのアクセスに失
敗した場合、SQLCODE OF SQLCA の値は 0 ではなく、
100 に設定されます )
!
正しく実行されない実行の場合は負の値に設定する
エラー・メッセージが含まれます。
SQLERRML
ストリングの長さが含まれます。
SQLERRMC
文字バッファー ( 最大 70 文字 ) を指示しま
す。
SQLERRP
将来の利用に備えて予約されています。
SQLERRD
6 個の数値の配列です。
SQLERRD[1]
見積り戻り行数です。
SQLERRD[2]
戻された SERIAL 値またはエラー・コードで
す。
SQLERRD[3]
処理された行の数です。
SQLERRD[4]
処理されたディスク・アクセスと合計行数
の重み付きの和です。
SQLERRD[5]
SQL 文に組み込まれるエラーのオフセット
です。
SQLERRD[6]
最後に処理された行の行 ID です。
5-12 IBM Informix SQL リファレンス・ガイド
IBM Informix ESQL/COBOL 内の SQLCA レコード
SQLWARN
個々の文字が、SQL 文の実行に続いて ( エラーとは対照的
に ) 各種の警告条件を送信する、長さ 8 の文字ストリングを
含むグループ項目です。問題が検出されない場合、文字はブ
ランクです。
SQLWARN0
他の警告文字の 1 つまたは複数が W に設定
された場合に、W に設定されま
す。SQLWARN0 がブランクの場合、残りの警
告文字を検査する必要はありません。
SQLWARN1
1 つまたは複数のデータ項目が文字ホスト変
数に収まるように切り捨てられたか、数値
変数について変換エラーが発生した、ある
いは DATABASE 文がトランザクション付き
のデータベースを選択した場合、W に設定
されます。関連する標識変数を調べると、
どの項目が切り捨てられたのか、あるいは
間違って変換されたのかが分かります。
SQLWARN2
集計関数 (SUM、AVG、MAX、MIN) がその評
価中に NULL を検出した場合、または
DATABASE 文が ANSI 準拠データベース ( ト
ランザクション付き ) を選択した場合に、W
に設定されます。
SQLWARN3
DATABASE 文が IBM Informix OnLine データ
ベースを選択した場合、または SELECT 節の
select-list 内の項目の数が INTO 節内のホスト
変数の数と同じでない場合に、W に設定さ
れます。IBM Informix ESQL/COBOL が戻す値
の数は、これら 2 つの数値の小さい方です。
SQLWARN4
浮動から 10 進数への変換が使用される場合
に、W に設定されます。UPDATE または
DELETE 文が WHERE 節なしで準備されてい
る場合に、DESCRIBE 文によっても W に設定
されます。WHERE 節がない場合、UPDATE
文または DELETE 文が表全体に適用されま
す。この変数を検査することにより、表に
対する意図的でない変更を防止できます。
SQLCA を使用したエラー処理 5-13
IBM Informix ESQL/COBOL 内の SQLCA レコード
SQLWARN5
ご使用のプログラムが ANSI 順序標準構文に
対して Informix 拡張機能を実行し、DBANSIWARN 環境変数が定義されているか、ある
いは -ansi オプションが指定されている場合
に、W に設定されます。
SQLWARN6
将来の利用に備えて予約されています。
SQLWARN7
将来の利用に備えて予約されています。
5-14 IBM Informix SQL リファレンス・ガイド
記述子の使用
本章の内容 .
. .
.
.
.
.
.
第
.
.
ESQL/C のシステム記述子領域および sqlda
システム記述子領域の使用 . . . .
システム記述子領域 . . . . .
sqlda 構造体へのポインターの使用 .
sqlda.h ヘッダー・ファイル . .
ESQL/COBOL でのシステム記述子領域
システム記述子領域の使用 . .
システム記述子領域 . . .
.
.
.
.
.
.
.
.
構造体
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
.
. 6-3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 6-13
. 6-13
. 6-16
6-4
6-5
6-7
6-9
6-10
6
章
6-2 IBM Informix SQL リファレンス・ガイド
本章の内容
動的 SQL 文にデータに関する記述情報を保持するには、システム記述子領
域 または SQL 記述子領域 (sqlda) と呼ばれる構造体を使用します。以下の
IBM Informix プログラム言語製品は、動的 SQL 文を処理するときに、システ
ム記述子領域または sqlda 構造体を使用します。
!
IBM Informix ESQL/C
!
IBM Informix ESQL/COBOL
IBM Informix ESQL/C は、sqlda 構造体とシステム記述子領域の両方を使用で
きます。sqlda 構造体の宣言は、sqlda.h ヘッダー・ファイルに格納されま
す。IBM Informix ESQL/COBOL が使用できるのは、システム記述子領域だけ
です。
本章では、システム記述子領域および sqlda 構造体のコンポーネントにつ
いて説明します。これらのフィールドが 3 つの ESQL 製品でどのように使用
されるかについて説明し、動的メモリー割り当てをサポートする SQL 文に
ついて概説します。詳細については、IBM Informix SQL チュートリアル・ガイ
ド の動的 SQL の説明およびご使用の ESQL 製品マニュアルの動的管理に関
する章を参照してください。
記述子の使用 6-3
ESQL/C のシステム記述子領域および sqlda 構造体
ESQL/C のシステム記述子領域および sqlda 構
造体
ESQL/C では、システム記述子領域または sqlda 構造体のどちらかを使用し
てメモリーを動的に割り当てることができます。
システム記述子領域は、ALLOCATE DESCRIPTOR、GET DESCRIPTOR、および
SET DESCRIPTOR 文を出す場合に使用します。これらの文を使用すれば、実
行時に、準備された文の内容を決定し、メモリーを動的に割り当てること
ができます。これらの文により、実行時に、WHERE 節の値を受け取る文の
ための WHERE 節を作成することもできます。
!
ALLOCATE DESCRIPTOR 文は、記述子によって識別されるシステム
記述子領域についてメモリーを割り当てます。この文は、
DESCRIBE 文によって取得された情報または文の WHERE 節に関す
る情報を保持するための場所をメモリー内に作成します。
(DEALLOCATE DESCRIPTOR 文は、割り当て済みのシステム記述子領
域を開放します。)
!
GET DESCRIPTOR 文を使用すると、システム記述子領域に記述され
ている値の数の判別や、システム記述子領域内に記述されている列
または式ごとの特性の判別が行えたり、FETCH 文の後でシステム記
述子領域から値をコピーしてホスト変数に入れたりできます。
!
SET DESCRIPTOR 文は、記述子によって識別されたシステム記述子
領域に値を割り当てます。
DESCRIBE 文は、準備された文を実行する前に、それに関する情報を戻しま
す。ESQL/C では、情報は、システム記述子領域 ( 記述子によって識別され
ます ) または sqlda 構造体 ( ポインターによって識別されます ) に格納でき
ます。
6-4 IBM Informix SQL リファレンス・ガイド
システム記述子領域の使用
システム記述子領域の使用
動的 SQL の X/Open インプリメンテーションにより、システム記述子領域を
持つメモリー内でスペースを割り当てることができます。それで、標準化
記述子領域構造体を使用して、さらに移植可能なコードを作成できます。
。
記述子 または記述子変数 によって識別されたシステム記述子領域を割り当
て、ALLOCATE DESCRIPTOR 文でそのサイズを指定できます。SELECT また
は INSERT 文上の DESCRIBE 文の出力をシステム記述子領域に送信できま
す。システム記述子の内容を明示的に設定することもできます。DESCRIBE
文に続いて GET DESCRIPTOR 文を実行することによって、そのようなシス
テム記述子領域に格納された情報を抽出できます。
SET DESCRIPTOR 文を使用して、割り当て済みのシステム記述子領域に値を
割り当てます。システム記述子領域の DATA フィールドのためのスペース
は、DESCRIBE 文または SET DESCRIPTOR 文によって自動的に割り振られま
す。
システム記述子領域を使用して、FETCH 文から戻される値にストレージを
割り振ることができます。DEALLOCATE DESCRIPTOR 文を使用して、システ
ム記述子領域と関連付けられたメモリーを解放します。
システム記述子領域の使用をサポートするその他の文として、EXECUTE、
OPEN、および PUT があります。動的 SQL およびシステム記述子の詳細につ
いては、7-13 ページの ALLOCATE DESCRIPTOR の説明、7-106 ページの
DEALLOCATE DESCRIPTOR の説明、7-172 ページの GET DESCRIPTOR の説明、
7-298 ページの SETD ESCRIPTOR の説明、7-127 ページの DESCRIBE の説明、
および 7-155 ページの FETCH の説明を参照してください。7-144 ページの
EXECUTE、7-210 ページの OPEN、および 7-234 ページの PUT も参照してく
ださい。
記述子の使用 6-5
システム記述子領域の使用
システム記述子領域には、SELECT 文によって戻されるか、または INSERT
文に挿入される値の count 用のフィールドがあります。入力または戻される
各値または項目用の一連のフィールドもあります。図 6-1 に、2 つの値のた
めの記述子領域を示します。
図 6-1
2 つの値のため
COUNT = 2
DATA
TYPE
LENGTH
INDICATOR
NAME
SCALE
PRECISION
NULLABLE
IDATA
ITYPE
ILENGTH
DATA
TYPE
LENGTH
INDICATOR
NAME
SCALE
PRECISION
NULLABLE
IDATA
ITYPE
ILENGTH
6-6 IBM Informix SQL リファレンス・ガイド






のシステム記述
子領域
値1
値2
システム記述子領域の使用
システム記述子領域
以下に示すのは、システム記述子領域内のフィールドです。
フィールド
説明
COUNT
次に示すような、システム記述子領域内の VALUES、項
目、またはオカレンス の数です。ALLOCATE
DESCRIPTOR の後で、オカレンスの数に設定されます。
DESCRIBE はそれを、SELECT または INSERT リスト内の
値の数に設定します。( これは、GET DESCRIPTOR を使
用して取得できます。) システム記述子領域を使用して
PUT、OPEN、または EXECUTE 文のパラメーターを保持
している場合、COUNT フィールドをパラメーターの数に
設定する必要があります。
DATA
データです。ホスト変数または数値リテラル、文字スト
リング・リテラル、DATETIME リテラル、INTERVAL リ
テラルのいずれでもかまいません。
TYPE
転送されるデータ型に対応する短整数です。整数の対応
関係は、図 6-2 および 図 6-3 で定義されています。
LENGTH
CHAR 型データのバイト単位のサイズ、DATETIME また
は INTERVAL データのエンコードされた修飾子、
DECIMAL または MONEY 値のサイズを指定する短整数で
す。
INDICATOR
短整数標識変数です。INDICATOR には 2 つの値を入れる
ことができます。0 は DATA フィールド内に非 NULL デー
タがあることを意味し、-1 は DATA フィールドに NULL
データがあることを意味します。
NAME
転送される列名または表示ラベルが含まれている文字ス
トリングです。
SCALE
DECIMAL データ型または MONEY データ型についてのみ
定義されます。DESCRIBE 文が実行された後で、ここに
は、列の小数点以下桁数が入れられます。SET
DESCRIPTOR 文では、DATA フィールド内の値の小数点
以下桁数を指示するよう設定する必要があります。
(2 の 1)
記述子の使用 6-7
システム記述子領域の使用
フィールド
説明
PRECISION
DECIMAL データ型または MONEY データ型についてのみ
定義されます。DESCRIBE 文が実行された後で、ここに
は、列の精度が入れられます。それ以外では、DATA
フィールド内の値の精度を指示するよう設定する必要が
あります。
NULLABLE
DESCRIBE 文が実行された後で、次のように、結果列に
NULL 値を含めることができるかどうかを指定します。1
は、列が NULL 値に対応できることを意味し、0 は、列が
NULL 値に対応 できない ことを意味します。
EXECUTE 文または 動的 OPEN 文が実行される前に、標
識値が INDICATOR フィールドに指定されていることを示
す場合は 1 に、また、指定されていない場合は 0 に、設定
する必要があります。( 動的 FETCH 文を実行するときに、
NULLABLE フィールドは無視されます。)
IDATA
ユーザー定義標識データか、または DATA フィールドの
標識データが含まれているホスト変数の名前です。
ITYPE
ユーザー定義の短整数標識のデータ型です。整数の対応
関係は、図 6-2 および 図 6-3 で定義されています。
ILENGTH
ユーザー定義標識の、バイト単位の長さです。
(2 の 2)
図 6-2 および図 6-3 は、X/Open モードおよび標準モードでの TYPE および
ITYPE の値を示します。
図 6-2
X/OpenSQL の TYPE および ITYPE フィールドの値
データ型
整数
CHARACTER
1
DECIMAL
3
INTEGER
4
SMALLINT
5
FLOAT
6
6-8 IBM Informix SQL リファレンス・ガイド
sqlda 構造体へのポインターの使用
図 6-3
X/OpenSQL を使用しない場合の TYPE および ITYPE フィールドの値
データ型
整数
CHARACTER
0
DECIMAL
5
INTEGER
2
SMALLINT
1
FLOAT
3
SMALLFLOAT
4
SERIAL
6
DATE
7
MONEY
8
DATETIME
10
BYTE
11
TEXT
12
VARCHAR
13
INTERVAL
14
FILE
116
sqlda 構造体へのポインターの使用
ESQL/C プログラムが動的メモリー割り当てを実行し、ユーザー・コード内
の動的変数ごとにそのメモリーを割り当てる場合に、sqlda 構造体へのポイ
ンターを使用します。
DESCRIBE 文は、sqlda 構造体へのポインターを設定し、記述された文識別
子が実行されるときに抽出されるデータを記述します。この情報は、
EXECUTE、FETCH、OPEN、および PUT など、sqlda 構造体へのポインター
をサポートする文で使用できます。
記述子の使用 6-9
sqlda 構造体へのポインターの使用
sqlda 構造体に対するメモリーの割り当ては、実行時に行われます。そのす
べてのコンポーネントが完全に定義されると、sqlda 構造体は、セット内の
各変数の必要な情報を含む、一連の sqlvar_struct 構造体の先頭を指示しま
す。
動的 SQL およびポインターの使用について詳しくは、7-127 ページの
DESCRIBE、7-144 ページの EXECUTE、7-155 ページの FETCH、7-210 ページ
の OPEN、および 7-234 ページの PUT の説明を参照してください。
sqlda.h ヘッダー・ファイル
sqlda 構造体の宣言は、図 6-4 に示されているとおり、sqlda.h ヘッダー・
ファイルに格納されます。これは、sqlvar_struct 構造体を指示する sqlda 構
造体を構成します。
図 6-4
sqlda.h ヘッダー・ファイル
struct sqlvar_struct
{
short sqltype;
short sqllen;
char *sqldata;
short *sqlind;
char *sqlname;
char *sqlformat;
short sqlitype;
short sqlilen;
char *sqlidata;
}
struct sqlda
{
short sqld;
struct sqlvar_struct *sqlvar;
char *desc_name;
short desc_occ;
struct sqlda *desc_next;
}
ヒント : バージョン 5.0 の sqlda 構造体内にはその他のフィールドがあるた
め、この構造体を使用する古いアプリケーションは再コンパイルして、新
しいライブラリーを利用できるようにする必要があります。
6-10 IBM Informix SQL リファレンス・ガイド
sqlda 構造体へのポインターの使用
sqlda 構造体
sqlda 構造体は、記述が含まれている sqlvar オカレンスの数を指定します。
!
DESCRIBE 文の実行後、sqld は、記述された文がカーソル仕様であ
れば、選択リスト列および式または挿入リスト列の数に設定され、
記述された文がカーソル仕様でない場合は、ゼロに設定されます。
!
EXECUTE 文または動的 OPEN 文が実行される前に、sqld を入力値の
数に設定する必要があります。
!
動的 FETCH 文が実行される前に、sqld は出力値の数に一致してい
る必要があります。
図 6-5 に、sqlda 構造体内のフィールドを示します。
図 6-5
sqlda 構造体内のフィールド
フィールド
説明
sqld
sqlvar 配列内の値の数を表す短整数です。
sqlvar
sqlvar_struct 構造体の配列へのポインターです。
sqlvar_struct 構造体
sqlvar_struct 構造体は、文に応じて、以下の情報の 1 つが入っている、
フィールドのグループを保持します。
!
カーソル仕様の結果列の説明
!
入力値とその説明
!
出力値とその説明
図 6-6 に、sqlvar_struct 構造体内のフィールドを示します。
記述子の使用
6-11
sqlda 構造体へのポインターの使用
図 6-6
sqlvar_struct 構造体内のフィールド
フィールド
説明
sqltype
転送されるデータ型に対応する短整数です。
sqllen
CHAR 型データのバイト単位のサイズまたは DATETIME
値もしくは INTERVAL 値の修飾子を指定する短整数です。
sqldata
文字データへのポインターです。
sqlind
短整数標識変数へのポインターです。
sqlname
転送される列名または表示ラベルが含まれている、文字
配列へのポインターです。
sqlformat
将来の利用に備えて予約されている、文字フィールドで
す。
sqlitype
短整数標識変数型です。整数の対応関係は、sqltypes.h
ヘッダー・ファイルで定義されます。
sqlilen
バイト単位の短整数標識の長さです。
sqlidata
文字標識データへのポインターです。
6-12 IBM Informix SQL リファレンス・ガイド
ESQL/COBOL でのシステム記述子領域
ESQL/COBOL でのシステム記述子領域
ESQL/COBOL では、システム記述子領域を使用することにより、メモリー
を動的に割り当てることができます。
システム記述子領域は、ALLOCATE DESCRIPTOR、GET DESCRIPTOR、および
SET DESCRIPTOR 文を使用するときに使用します。これらの文を使用すれ
ば、実行時に、準備された文の内容を決定し、メモリーを動的に割り当て
ることができます。これらの文により、実行時に WHERE 節の値を受け取る
文のための WHERE 節を作成することもできます。
!
ALLOCATE DESCRIPTOR 文は、記述子によって識別されるシステム
記述子領域についてメモリーを割り当てます。この文は、
DESCRIBE 文によって取得された情報または文の WHERE 節に関す
る情報を保持するための場所をメモリー内に作成します。
(DEALLOCATE DESCRIPTOR 文は、割り当て済みのシステム記述子領
域を開放します。)
!
GET DESCRIPTOR 文を使用すると、システム記述子領域に記述され
ている値の数の判別や、システム記述子領域内に記述されている列
または式ごとの特性の判別が行えたり、FETCH 文の後でシステム記
述子領域から値をコピーしてホスト変数に入れたりできます。
!
SET DESCRIPTOR 文は、記述子によって識別されたシステム記述子
領域に値を割り当てます。
DESCRIBE 文は、準備された文を実行する前に、それに関する情報を戻しま
す。情報はシステム記述子領域に格納されます。
システム記述子領域の使用
動的 SQL の X/Open インプリメンテーションにより、システム記述子領域を
持つメモリー内でスペースを割り当てることができます。それで、標準化
システム記述子領域を使用して、さらに移植可能なコードを作成できます。
記述子 または記述子変数 によって識別されたシステム記述子領域を割り当
て、ALLOCATE DESCRIPTOR 文でそのサイズを指定できます。ESQL/COBOL
内の DESCRIBE 文で使用できるのは、ALLOCATE DESCRIPTOR 文で割り当て
られているシステム記述子領域だけです。
記述子の使用 6-13
システム記述子領域の使用
SELECT または INSERT 文上の DESCRIBE 文の出力をシステム記述子領域に
送信できます。システム記述子の内容を明示的に設定することもできます。
DESCRIBE 文に続いて GET DESCRIPTOR 文を実行することによって、そのよ
うなシステム記述子領域に格納された情報を抽出できます。
SET DESCRIPTOR 文を使用して、割り当て済みのシステム記述子領域に値を
割り当てます。システム記述子領域の DATA フィールドのためのスペース
は、DESCRIBE 文または SET DESCRIPTOR 文によって自動的に割り振られま
す。
システム記述子領域を使用して、FETCH 文から戻される値にストレージ域
を割り振ることができます。DEALLOCATE DESCRIPTOR 文を使用して、シス
テム記述子領域と関連付けられたメモリーを解放します。
システム記述子領域の使用をサポートするその他の文として、EXECUTE、
OPEN、および PUT があります。動的 SQL およびシステム記述子について詳
しくは、7-13 ページの ALLOCATE DESCRIPTOR、7-106 ページの
DEALLOCATE DESCRIPTOR、7-172 ページの GET DESCRIPTOR、7-298 ページ
の SET DESCRIPTOR、7-127 ページの DESCRIBE、および 7-155 ページの
FETCH の説明を参照してください。7-144 ページの EXECUTE、7-210 ページ
の OPEN、および 7-234 ページの PUT も参照してください。
6-14 IBM Informix SQL リファレンス・ガイド
システム記述子領域の使用
システム記述子領域には、SELECT 文によって戻されるか、または INSERT
文に挿入される値の count 用のフィールドがあります。入力または戻される
各値または項目用の一連のフィールドもあります。図 6-7 に、2 つの値のた
めの記述子領域を示します。
図 6-7
2 つの値のため
COUNT = 2
DATA
TYPE
LENGTH
INDICATOR
NAME
SCALE
PRECISION
NULLABLE
IDATA
ITYPE
ILENGTH
DATA
TYPE
LENGTH
INDICATOR
NAME
SCALE
PRECISION
NULLABLE
IDATA
ITYPE
ILENGTH






のシステム記述
子領域
値1
値2
記述子の使用 6-15
システム記述子領域の使用
システム記述子領域
以下に示すのは、システム記述子領域内のフィールドです。
フィールド
説明
COUNT
次に示すような、システム記述子領域内の VALUES、項
目、またはオカレンス の数です。ALLOCATE
DESCRIPTOR の後で、オカレンスの数に設定されます。
DESCRIBE はそれを、SELECT または INSERT リスト内の
値の数に設定します。( これは、GET DESCRIPTOR を使
用して取得できます。) システム記述子領域を使用して
PUT、OPEN、または EXECUTE 文のパラメーターを保持
している場合、COUNT フィールドをパラメーターの数に
設定する必要があります。
DATA
データです。ホスト変数または数値リテラル、文字スト
リング・リテラル、DATETIME リテラル、INTERVAL リ
テラルのいずれでもかまいません。
TYPE
転送されるデータ型に対応する短整数です。整数の対応
関係は、図 6-8 および 図 6-9 で定義されています。
LENGTH
CHAR 型データのバイト単位のサイズ、DATETIME また
は INTERVAL データのエンコードされた修飾子、
DECIMAL または MONEY 値のサイズを指定する短整数で
す。
INDICATOR
短整数標識変数です。INDICATOR には 2 つの値を入れる
ことができます。0 は DATA フィールド内に非 NULL デー
タがあることを意味し、-1 は DATA フィールドに NULL
データがあることを意味します。
NAME
転送される列名または表示ラベルが含まれている文字ス
トリングです。
SCALE
DECIMAL データ型または MONEY データ型についてのみ
定義されます。DESCRIBE 文が実行された後で、ここに
は、列の小数点以下桁数が入れられます。SET
DESCRIPTOR 文では、DATA フィールド内の値の小数点
以下桁数を指示するよう設定する必要があります。
(2 の 1)
6-16 IBM Informix SQL リファレンス・ガイド
システム記述子領域の使用
フィールド
説明
PRECISION
DECIMAL データ型または MONEY データ型についてのみ
定義されます。DESCRIBE 文が実行された後で、ここに
は、列の精度が入れられます。それ以外では、DATA
フィールド内の値の精度を指示するよう設定する必要が
あります。
NULLABLE
DESCRIBE 文が実行された後で、次のように、結果列に
NULL 値を含めることができるかどうかを指定します。1
は、列が NULL 値に対応できることを意味し、0 は、列が
NULL 値に対応 できない ことを意味します。
EXECUTE 文または 動的 OPEN 文が実行される前に、標
識値が INDICATOR フィールドに指定されていることを示
す場合は 1 に、また、指定されていない場合は 0 に、設定
する必要があります。( 動的 FETCH 文を実行するときに、
NULLABLE フィールドは無視されます。)
IDATA
ユーザー定義標識データか、または DATA フィールドの
標識データが含まれているホスト変数の名前です。
ITYPE
ユーザー定義の短整数標識のデータ型です。整数の対応
関係は、図 6-8 および 図 6-9 で定義されています。
ILENGTH
ユーザー定義標識の、バイト単位の長さです。
(2 の 2)
図 6-8 および図 6-9 は、X/Open モードおよび標準モードでの TYPE および
ITYPE の値を示します。
図 6-8
X/OpenSQL の TYPE および ITYPE フィールドの値
データ型
整数
CHARACTER
1
DECIMAL
3
INTEGER
4
SMALLINT
5
FLOAT
6
記述子の使用 6-17
システム記述子領域の使用
図 6-9
X/OpenSQL を使用しない場合の TYPE および ITYPE フィールドの値
データ型
整数
CHARACTER
0
DECIMAL
5
INTEGER
2
SMALLINT
1
FLOAT
3
SMALLFLOAT
4
SERIAL
6
DATE
7
MONEY
8
DATETIME
10
BYTE
11
TEXT
12
VARCHAR
13
INTERVAL
14
FILE
116
6-18 IBM Informix SQL リファレンス・ガイド
構文
本章の内容 .
第
.
.
.
. 7-9
. . . . . . . . . . . . . . . .
データ定義文 . . . . . . . . . . . .
データ操作文 . . . . . . . . . . . .
カーソル操作文 . . . . . . . . . . .
動的管理文 . . . . . . . . . . . .
データ・アクセス文 . . . . . . . . . .
データ整合性文 . . . . . . . . . . .
問合せ最適化情報文 . . . . . . . . . .
ストアード・プロシージャー文 . . . . . .
補助文 . . . . . . . . . . . . . .
ALLOCATE DESCRIPTOR . . . . . . . . . . .
WITH MAX 節 . . . . . . . . . . . .
ALTER INDEX . . . . . . . . . . . . .
TO CLUSTER オプション . . . . . . . . .
TO NOT CLUSTER オプション . . . . . . .
ALTER TABLE . . . . . . . . . . . . .
DEFAULT 節 . . . . . . . . . . . . .
制約定義オプションのサブセット . . . . . .
BEGIN WORK . . . . . . . . . . . . . .
CHECK TABLE . . . . . . . . . . . . .
CLOSE . . . . . . . . . . . . . . .
CLOSE DATABASE . . . . . . . . . . . .
COMMIT WORK . . . . . . . . . . . . .
CREATE AUDIT . . . . . . . . . . . . .
CREATE DATABASE . . . . . . . . . . . .
バッファー付きロギングの指定 . . . . . .
ANSI 準拠のデータベースの指定 . . . . . .
ANSI 準拠の IBM Informix SE データベースの指定
CREATE INDEX . . . . . . . . . . . . .
UNIQUE オプション
. . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
SQL 文
.
.
.
.
.
.
.
.
.
.
.
.
.
7-9
7-10
7-10
7-10
7-11
7-11
7-11
7-11
7-12
7-12
7-13
7-15
7-17
7-18
7-19
7-20
7-23
7-25
7-37
7-39
7-41
7-45
7-47
7-48
7-50
7-53
7-53
7-54
7-55
7-56
7
章
CLUSTER オプション . . . . . . . . . . . . 7-56
複合インデックス . . . . . . . . . . . . . 7-57
ASC キーワードおよび DESC キーワード . . . . . . 7-57
CREATE PROCEDURE . . . . . . . . . . . . . . 7-59
DBA オプション . . . . . . . . . . . . . . 7-60
パラメーター・リストで使用できる SQL データ型のサブセット7-61
文ブロックで使用できる SQL 文のサブセット . . . . . 7-65
CREATE PROCEDURE FROM . . . . . . . . . . . . 7-68
CREATE SCHEMA . . . . . . . . . . . . . . . 7-69
CREATE SYNONYM . . . . . . . . . . . . . . . 7-71
同じ名前のシノニム . . . . . . . . . . . . 7-73
CREATE TABLE
. . . . . . . . . . . . . . . 7-76
制約定義の制限
. . . . . . . . . . . . . 7-78
制約の追加または削除 . . . . . . . . . . . . 7-78
主キー制約、一意性制約、および参照制約の実行 . . . . 7-79
制約名 . . . . . . . . . . . . . . . . 7-79
DEFAULT 節 . . . . . . . . . . . . . . . 7-82
列定義での NOT NULL の指定 . . . . . . . . . . 7-84
一意としての列の定義 . . . . . . . . . . . . 7-86
CHECK 節 . . . . . . . . . . . . . . . . 7-90
列定義オプションのサブセット . . . . . . . . . 7-92
制約定義オプションのサブセット . . . . . . . . 7-92
一時表に対する WITH NO LOG オプション . . . . . . 7-92
IN DB 領域節 . . . . . . . . . . . . . . 7-93
エクステント・オプション . . . . . . . . . . 7-95
LOCK MODE 節 . . . . . . . . . . . . . . 7-96
IN パス名オプション . . . . . . . . . . . . 7-97
CREATE VIEW . . . . . . . . . . . . . . . . 7-98
DATABASE . . . . . . . . . . . . . . . . . 7-102
DEALLOCATE DESCRIPTOR . . . . . . . . . . . . 7-106
DECLARE
. . . . . . . . . . . . . . . . 7-108
SELECT カーソル . . . . . . . . . . . . . 7-112
UPDATE カーソル . . . . . . . . . . . . . 7-112
INSERT カーソル . . . . . . . . . . . . . 7-112
順カーソル . . . . . . . . . . . . . . . 7-113
スクロール・ カーソル. . . . . . . . . . . . 7-113
HOLD カーソル . . . . . . . . . . . . . . 7-114
UPDATE カーソルと関連する SELECT 文のサブセット . . . 7-116
UPDATE カーソルによるロック . . . . . . . . . 7-116
列のリストによる FOR UPDATE の使用 . . . . . . . 7-117
INSERT カーソルと HOLD の併用 . . . . . . . . . 7-123
DELETE
. . . . . . . . . . . . . . . . . 7-124
CURRENT OF 節 . . . . . . . . . . . . . . 7-125
7-2 IBM Informix SQL リファレンス・ガイド
DESCRIBE . . . . . . . . . . . .
DROP AUDIT . . . . . . . . . . . .
DROP DATABASE . . . . . . . . . . .
DROP INDEX . . . . . . . . . . . .
DROP PROCEDURE . . . . . . . . . .
DROP SYNONYM . . . . . . . . . . .
DROP TABLE . . . . . . . . . . . .
DROP VIEW . . . . . . . . . . . .
EXECUTE . . . . . . . . . . . . .
USING 節 . . . . . . . . . . .
EXECUTE IMMEDIATE . . . . . . . . .
制限付きの文型 . . . . . . . . .
EXECUTE PROCEDURE . . . . . . . . .
FETCH . . . . . . . . . . . . .
行番号 . . . . . . . . . . . .
データベース・サーバーによる行の格納方法 .
SELECT の INTO 節の使用 . . . . . .
FETCH の INTO 節の使用 . . . . . . .
システム記述子の使用 . . . . . . .
FLUSH . . . . . . . . . . . . .
合計および保留中の行のカウント . . . .
FREE . . . . . . . . . . . . . .
GET DESCRIPTOR . . . . . . . . . .
COUNT キーワードの使用 . . . . . . .
VALUE 節 . . . . . . . . . . .
GRANT . . . . . . . . . . . . .
INFO . . . . . . . . . . . . . .
表、列、およびインデックスの表示 . . .
アクセス権、参照、および状態の表示 . . .
INSERT . . . . . . . . . . . . .
値と列型の互換性 . . . . . . . . .
SERIAL 列への値の挿入 . . . . . . .
VALUES 節での関数の使用 . . . . . .
VALUES 節での NULL の挿入 . . . . . .
LOAD . . . . . . . . . . . . . .
LOAD FROM ファイル . . . . . . . .
DELIMITER 節 . . . . . . . . . .
INSERT INTO 節 . . . . . . . . .
LOCK TABLE . . . . . . . . . . . .
OPEN . . . . . . . . . . . . . .
USING における変数の命名 . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7-127
7-133
7-134
7-136
7-138
7-139
7-141
7-143
7-144
7-146
7-149
7-150
7-152
7-155
7-158
7-158
7-159
7-160
7-160
7-164
7-166
7-167
7-172
7-174
7-175
7-178
7-188
7-189
7-190
7-192
7-198
7-199
7-199
7-199
7-202
7-203
7-206
7-206
7-207
7-210
7-214
構文
7-3
USING SQL DESCRIPTOR 節 . . . . . . .
OUTPUT
. . . . . . . . . . . . .
PREPARE . . . . . . . . . . . . .
文識別子 . . . . . . . . . . . .
文識別子の解放 . . . . . . . . . .
文テキスト . . . . . . . . . . .
許可される文 . . . . . . . . . .
PUT
. . . . . . . . . . . . . .
INSERT での定数値の使用 . . . . . . .
INSERT におけるプログラム変数の指名 . . .
PUT におけるプログラム変数の指名
. . .
システム記述子領域の使用 . . . . . .
sqlda 構造体の使用 . . . . . . . .
合計および保留中の行のカウント . . . .
RECOVER TABLE . . . . . . . . . . .
RENAME COLUMN . . . . . . . . . . .
RENAME TABLE
. . . . . . . . . . .
REPAIR TABLE
. . . . . . . . . . .
REVOKE
. . . . . . . . . . . . .
ROLLBACK WORK . . . . . . . . . . .
ROLLFORWARD DATABASE . . . . . . . . .
SELECT
. . . . . . . . . . . . .
重複の許容 . . . . . . . . . . .
選択リストの式 . . . . . . . . . .
表示ラベルの使用 . . . . . . . . .
標識変数を持つ INTO 節 . . . . . . .
カーソルを持つ INTO 節 . . . . . . .
SELECT...INTO 照会の PREPARE 文による処理 .
INTO 節を持つ配列変数の使用 . . . . .
エラー検査 . . . . . . . . . . .
表の別名を持つ AS キーワード . . . . .
WHERE 節での条件の使用 . . . . . . .
WHERE 節での結合の使用 . . . . . . .
選択番号の使用 . . . . . . . . . .
GROUP BY 節の NULL . . . . . . . .
導出列による整列 . . . . . . . . .
昇順および降順 . . . . . . . . . .
ORDER BY 節の NULL . . . . . . . .
入れ子にした整列 . . . . . . . . .
選択番号の使用 . . . . . . . . . .
DECLARE による ORDER BY 節 . . . . . .
INTO TEMP 節および INTO . . . . . . .
WITH NO LOG オプション . . . . . . .
7-4 IBM Informix SQL リファレンス・ガイド
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7-215
7-219
7-221
7-222
7-223
7-224
7-225
7-234
7-237
7-238
7-239
7-239
7-240
7-242
7-243
7-246
7-248
7-250
7-252
7-259
7-261
7-263
7-266
7-266
7-269
7-270
7-271
7-272
7-272
7-273
7-276
7-276
7-282
7-285
7-285
7-289
7-289
7-289
7-289
7-290
7-290
7-291
7-292
結合した SELECT に対する制限 . . . . .
結合した SELECT の重複行 . . . . . .
SET CONSTRAINTS . . . . . . . . . .
SET DEBUG FILE TO . . . . . . . . .
SET DESCRIPTOR . . . . . . . . . .
COUNT オプション . . . . . . . . .
VALUE オプション . . . . . . . . .
SET EXPLAIN . . . . . . . . . . .
SET ISOLATION . . . . . . . . . . .
SET LOCK MODE . . . . . . . . . . .
SET LOG . . . . . . . . . . . . .
SET OPTIMIZATION . . . . . . . . . .
START DATABASE . . . . . . . . . .
UNLOAD . . . . . . . . . . . . .
UNLOAD TO ファイル . . . . . . . .
DELIMITER 節 . . . . . . . . . .
UNLOCK TABLE . . . . . . . . . . .
UPDATE . . . . . . . . . . . . .
SET 節によるすべての列の選択 . . . . .
SET 節で使用できる式のサブセット . . .
SET 節で使用できる SELECT 文のサブセット .
単一列と単一式のペア . . . . . . .
複数式と等しい複数列 . . . . . . .
UPDATE STATISTICS . . . . . . . . .
WHENEVER . . . . . . . . . . . .
セグメント . . . . . . . . . . . .
条件 . . . . . . . . . . . . .
関係演算子条件 . . . . . . . .
BETWEEN 条件 . . . . . . . . .
IN 条件 . . . . . . . . . . .
IS NULL 条件 . . . . . . . . .
LIKE および MATCHES 条件 . . . . .
副照会で使用できる SELECT のサブセット
IN 副照会 . . . . . . . . . .
EXISTS 副照会 . . . . . . . . .
ALL/ANY/SOME 副照会 . . . . . . .
制約名 . . . . . . . . . . . .
データベース名 . . . . . . . . .
データ型 . . . . . . . . . . .
DATETIME フィールド修飾子 . . . . . .
式 . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7-292
7-293
7-294
7-296
7-298
7-300
7-301
7-306
7-312
7-316
7-319
7-321
7-323
7-325
7-326
7-328
7-329
7-331
7-335
7-335
7-335
7-335
7-336
7-341
7-343
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7-349
7-350
7-353
7-354
7-355
7-356
7-357
7-360
7-360
7-361
7-362
7-365
7-367
7-370
7-373
7-375
構文
7-5
文字列での文字部分列の使用 . . . . . . . . . .
行 ID の使用 . . . . . . . . . . . . . .
アットマークの使用 . . . . . . . . . . . .
式としての引用符付きストリング . . . . . . . .
USER 関数 . . . . . . . . . . . . . . .
SITENAME および DBSERVERNAME 関数 . . . . . . . .
式としてのリテラル番号 . . . . . . . . . . .
TODAY 関数 . . . . . . . . . . . . . . .
CURRENT 関数 . . . . . . . . . . . . . .
式としてのリテラル DATETIME . . . . . . . . .
式としてのリテラル INTERVAL . . . . . . . . .
UNITS キーワード . . . . . . . . . . . . .
DAY、MONTH、WEEKDAY、および YEAR 関数 . . . . . .
DATE 関数 . . . . . . . . . . . . . . .
EXTEND 関数 . . . . . . . . . . . . . . .
MDY 関数 . . . . . . . . . . . . . . . .
LENGTH 関数 . . . . . . . . . . . . . . .
HEX 関数 . . . . . . . . . . . . . . . .
ROUND 関数 . . . . . . . . . . . . . . .
TRUNC 関数 . . . . . . . . . . . . . . .
集計式で使用できる式のサブセット . . . . . . . .
行セットにおける重複のインクルードと除外 . . . . .
COUNT(*) キーワード . . . . . . . . . . . .
AVG キーワード . . . . . . . . . . . . . .
MAX キーワード . . . . . . . . . . . . . .
MIN キーワード . . . . . . . . . . . . . .
SUM キーワード . . . . . . . . . . . . . .
COUNT キーワード . . . . . . . . . . . . .
集計関数の動作の要約 . . . . . . . . . . . .
集計関数によるエラー検査 . . . . . . . . . .
識別子
. . . . . . . . . . . . . . . . .
列名としてのキーワードの使用 . . . . . . . . .
列名としての ALL、DISTINCT、または UNIQUE の使用 . .
列名としての INTERVAL または DATETIME の使用 . . . .
列名としての行 ID の使用 . . . . . . . . . .
AS を列ラベルと共に使用 . . . . . . . . . . .
AS を表の別名と共に使用 . . . . . . . . . . .
CURRENT、DATETIME、INTERVAL、および NULL の INSERT での
使用 . . . . . . . . . . . . . . .
条件での NULL および SELECT の使用 . . . . . . .
トレースでの <on>、<off>、または <procedure> の使用 .
変数名としての GLOBAL の使用 . . . . . . . . .
インデックス名 . . . . . . . . . . . . . . .
INTERVAL フィールド修飾子 . . . . . . . . . . .
リテラル DATETIME . . . . . . . . . . . . . .
7-6 IBM Informix SQL リファレンス・ガイド
7-379
7-379
7-379
7-381
7-381
7-382
7-383
7-383
7-383
7-385
7-385
7-386
7-389
7-390
7-391
7-392
7-393
7-393
7-394
7-395
7-398
7-398
7-398
7-399
7-399
7-399
7-400
7-400
7-400
7-401
7-403
7-407
7-407
7-408
7-409
7-410
7-411
7-413
7-413
7-414
7-414
7-417
7-419
7-421
リテラル INTERVAL . .
リテラル番号 . . .
プロシージャー名 . .
引用符付きストリング
関係演算子 . . . .
シノニム名
. . .
表名
. . . . .
ビュー名 . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7-424
7-427
7-429
7-431
7-434
7-438
7-440
7-444
構文
7-7
7-8 IBM Informix SQL リファレンス・ガイド
本章の内容
本章では、SQL 文の目的、構文、および使用法について記述し、さらに、
複数の SQL 文に共通するセグメントの要素について説明します。
SQL 文
SQL 文は、以下のカテゴリーに分けられます。
!
データ定義文
!
データ操作文
!
カーソル操作文
!
動的管理文
!
データ・アクセス文
!
データ整合性文
!
問合せ最適化情報文
!
ストアード・プロシージャー文
!
補助文
各カテゴリーに含まれる特定の文を以下にリストします。
構文 7-9
SQL 文
データ定義文
ALTER INDEX
CREATE VIEW
ALTER TABLE
DATABASE
CLOSE DATABASE
DROP DATABASE
CREATE DATABASE
DROP INDEX
CREATE INDEX
DROP PROCEDURE
CREATE PROCEDURE
DROP SYNONYM
CREATE PROCEDURE FROM
DROP TABLE
CREATE SCHEMA
DROP VIEW
CREATE SYNONYM
RENAME COLUMN
CREATE TABLE
RENAME TABLE
データ操作文
INSERT
SELECT
DELETE
UNLOAD
LOAD
UPDATE
カーソル操作文
CLOSE
FLUSH
DECLARE
OPEN
FETCH
PUT
7-10 IBM Informix SQL リファレンス・ガイド
SQL 文
動的管理文
ALLOCATE DESCRIPTOR
FREE
DEALLOCATE DESCRIPTOR
GET DESCRIPTOR
DESCRIBE
PREPARE
EXECUTE
SET DESCRIPTOR
EXECUTE IMMEDIATE
データ・アクセス文
GRANT
SET ISOLATION
LOCK TABLE
SET LOCK MODE
REVOKE
UNLOCK TABLE
データ整合性文
BEGIN WORK
REPAIR TABLE
CHECK TABLE
ROLLBACK WORK
COMMIT WORK
ROLLFORWARD DATABASE
CREATE AUDIT
SET CONSTRAINTS
DROP AUDIT
SET LOG
RECOVER TABLE
START DATABASE
問合せ最適化情報文
SET EXPLAIN
UPDATE STATISTICS
SET OPTIMIZATION
構文
7-11
SQL 文
ストアード・プロシージャー文
EXECUTE PROCEDURE
SET DEBUG FILE TO
補助文
INFO
OUTPUT
7-12 IBM Informix SQL リファレンス・ガイド
WHENEVER
ALLOCATE DESCRIPTOR
ALLOCATE DESCRIPTOR
目的
ALLOCATE DESCRIPTOR 文は、< 記述子 > または < 記述子変数 > によって
識別されるシステム記述子領域についてメモリーを割り当てるのに使用し
ます。この文を使用して、DESCRIBE 文によって取得された情報または文の
WHERE 節に関する情報を保持するための場所をメモリー内に作成します。
構文 7-13
構文
構文
ESQL
ALLOCATE
DESCRIPTOR
"
< 記述子 >
< 記述子
変数 >
"
WITH MAX
< オカレンス >
< 実現値
変数 >
< 記述子 >
システム記述子領域を識別する引用符付きストリングです。
< 記述子 > は、7-403 ページの識別子セグメントで説明され
ているとおり、あらゆる識別子と同じルールに準拠している
必要があります。
< 記述子
変数 >
割り当てられるシステム記述子領域を識別する埋め込み変数
名です。< 記述子変数 > は、7-403 ページの識別子セグメン
トで説明されているとおり、あらゆる識別子と同じルールに
準拠している必要があります。
< オカレンス > 0 より大きい値を指定する、符号のない INTEGER です。これ
は、システム記述子領域によって保持できる項目の数です。
< 実現値変数 > 0 より大きな値を指定する、埋め込み変数名です。そのデー
タ型は、INTEGER または SMALLINT でなければなりません。
これは、システム記述子領域によって保持できる項目の数で
す。
使用法
ALLOCATE DESCRIPTOR 文は、< 記述子 > または < 記述子変数 > によって
識別されたシステム記述子領域を作成します。
システム記述子領域には 1 つまたは複数の < 項目記述子 > が含まれます。
各項目記述子は、データベース・サーバーとの間で送受信可能なデータ値
を保持します。項目記述子には、型、長さ、小数点以下桁数、精度、ヌル
可能度など、データベースに関する情報も含まれます。
< オカレンス > または < 実現値変数 > は、システム < 記述子 > または < 記
述子 > 内で必要な項目記述子の数を指定します。
7-14 IBM Informix SQL リファレンス・ガイド
使用法
最初は、項目記述子領域のすべてのフィールドが未定義です。COUNT は、
指定されたオカレンスの数に設定されます。項目記述子内の TYPE、
LENGTH、およびその他の情報は、システム記述子を使用して DESCRIBE 文
が実行される場合に設定されます。DESCRIBE 文は、TYPE および LENGTH
情報に基づいて、各項目記述子の DATA フィールドにメモリーの割り当て
も行います。詳しくは、第 6 章、『記述子の使用』を参照してください。
同じ名前を持つ < 記述子 > または < 記述子変数 > が割り当てられると、シ
ステムはエラーを戻します。
WITH MAX 節
オプションの WITH MAX < オカレンス > 節を使用して、必要な値記述子の
数を指示できます。この数値は、ゼロより大きいものでなければなりませ
ん。WITH MAX 節が指定されない場合、< オカレンス > には 100 というデ
フォルト値が使用されます。
以下の例は、ALLOCATE DESCRIPTOR 文 を 3 つのプログラム言語に使用し
た場合を示したものです。いずれも、WITH MAX < オカレンス > 節を示し
ます。
それぞれのペアで、最初の例は埋め込み変数名を使用し、2 番目の例では引
用符付きストリングを使用して、割り当てるシステム記述子領域を識別し
ます。WITH MAX < オカレンス > 節は、埋め込み変数と符号なしの
INTEGER 3 を交代で使用します。
図 7-1
IBM Informix ESQL/C の場合のサンプル ALLOCATE DESCRIPTOR 文
$allocate descriptor $descname with max $occ;
$allocate descriptor "desc1" with max 3;
図 7-2
IBM Informix ESQL/COBOL の場合のサンプル ALLOCATE DESCRIPTOR 文
EXEC SQL ALLOCATE DESCRIPTOR :DESCNAME WITH MAX :OCC END-EXEC
EXEC SQL ALLOCATE DESCRIPTOR "DESC1" WITH MAX 3 END-EXEC
構文 7-15
参考資料
参考資料
本書では、DEALLOCATE DESCRIPTOR、DECLARE、DESCRIBE、EXECUTE、
FETCH、GET DESCRIPTOR、OPEN、PREPARE、PUT、 および SET DESCRIPTOR
と、第 6 章、『記述子の使用』を参照してください。
IBM Informix SQL チュートリアル・ガイド では、動的 SQL の説明を参照してく
ださい。
7-16 IBM Informix SQL リファレンス・ガイド
ALTER INDEX
ALTER INDEX
目的
ALTER INDEX 文は、既存のインデックスの順序で表内のデータを配列した
り、またはクラスター化属性からインデックスを解放したりするのに使用
します。
構文
+
ALTER INDEX
インデックス名
7-417 ページ
TO
CLUSTER
NOT
使用法
ALTER INDEX 文は、CREATE INDEX 文を使用して作成されたインデックスに
対してのみ働きます。CREATE TABLE 文を使用して作成された制約には影響
しません。
SE
ROLLBACK WORK 文を使用して ALTER INDEX 文を取り消すことはできませ
ん。ALTER INDEX 文がインクルードされているトランザクションをロール
バックした場合、インデックスは未変更のままで、エラー・メッセージは
出されません。
IBM Informix SE を使用しており、しかも表に更新記録がある場合、ALTER
INDEX 文を使用できません。監査された表のインデックスを変更する場合
は、まず最初に表の監査を削除し、インデックスを変更して、表について
新しい監査を作成する必要があります。♦
構文 7-17
使用法
TO CLUSTER オプション
TO CLUSTER オプションを使用すると、物理的な表で行が再配列され、イン
デックス付きの順序になります。
以下の例は、行を <orders> 表内で物理的に配列するための ALTER INDEX
TO CLUSTER 文の使用法を示しています。CREATE INDEX 文が表の
customer_num 列にインデックスを作成します。すると、ALTER INDEX 文に
より、行が物理的に配列されます。
CREATE INDEX ix_cust ON orders (customer_num)
ALTER INDEX ix_cust TO CLUSTER
再配列が行われると、ファイル全体が書き換えられます。このプロセスは
時間がかかる可能性があり、表を 2 部保持できるだけのディスク領域が必
要です。
表がクラスター化される間、表は EXCLUSIVE MODE でロックされます。 別の
プロセスで < インデックス名 > が属している表を使用する場合、データ
ベース・サーバーは、TO CLUSTER オプションを指定した ALTER INDEX 文
を実行できません。ロック・モードが WAIT に設定されていないかぎり、
エラーを戻します。( ロック・モードが WAIT に設定されている場合、デー
タベース・サーバーは ALTER INDEX 文を再試行します。)
やがて、表を変更すれば、初期のクラスターの利点もなくなります。クラ
スター・インデックスに対して ALTER INDEX TO CLUSTER 文をもう 1 つ出
すことによって、表を再クラスター化することができます。現在のクラス
ター・インデックスに対して、別の ALTER INDEX TO CLUSTER 文を出す前
に、クラスター・インデックスを削除する必要はありません。
7-18 IBM Informix SQL リファレンス・ガイド
参考資料
TO NOT CLUSTER オプション
NOT オプションは、物理的な表に影響を与えずに < インデックス名 > につ
いてのクラスター属性を削除します。1 つの表あたりクラスター・イン
デックスは 1 つしか存在し得ないため、NOT オプションを使用して、イン
デックスを別のインデックスに割り当てる前に、そのインデックスからク
ラスター属性を解放する必要があります。たとえば、以下の一連の文は、1
つのインデックスからクラスター化が削除され、2 番目のインデックスに
よって表が物理的に再クラスター化される様子を示します。
CREATE
ON
CREATE
ON
.
.
.
UNIQUE INDEX ix_ord
orders (order_num)
CLUSTER INDEX ix_cust
orders (customer_num)
ALTER INDEX ix_cust TO NOT CLUSTER
ALTER INDEX ix_ord TO CLUSTER
最初の 2 つの文は、orders 表のインデックスを作成し、customer_num 列で
物理的な表を昇順でクラスター化します。最後の 2 つの文は、order_num
列について物理的な表を昇順で再クラスター化します。
参考資料
本章では、CREATE INDEX および CREATE TABLE 文を参照してください。
IBM Informix SQL チュートリアル・ガイド では、クラスター・インデックスの
説明を参照してください。
構文 7-19
ALTER TABLE
ALTER TABLE
目的
ALTER TABLE 文は、表への列の追加、表からの列の削除、列に配置された
データ制約の変更、列または列の複合リストへの制約の追加、列または列
の複合リストと関連する制約の削除を行うために使用します。
構 文
+
ALTER TABLE
表名
7-440 ページ
ADD 節
7-22 ページ
シノニム
名
7-438 ページ
DROP 節
7-29 ページ
MODIFY 節
7-30 ページ
ADD CONSTRAINT 節
7-32 ページ
DROP CONSTRAINT
節 7-35 ページ
OL
MODIFY NEXT SIZE
節 7-35 ページ
LOCK MODE
節 7-36 ページ
使用法
ALTER TABLE 文を使用するためには、表名 を所有しているか、DBA 状態に
なっているか、または指定の表に対する Alter アクセス権を付与されている
必要があります。一時表を変更することはできません。
DB
ESQL
参照制約を追加するには、参照対象の列または参照対象の表に対して DBA
状態にあるか、または References アクセス権を持っている必要がありま
す。♦
7-20 IBM Informix SQL リファレンス・ガイド
使用法
制約を削除するには、DBA 状態になっているか、目的の表を所有している、
またはその表に対して Alter アクセス権を付与されている必要があります。
DB
ESQL
データベース内の制約を削除するには、DBA アクセス権を持っているか、
または制約の所有者でなければなりません。制約の所有者ではあるが、表
の所有者ではない場合、指定の表に対する Alter アクセス権を持っている必
要があります。制約を削除するのに、References アクセス権は必要ありま
せん。♦
ビューが依存する表を変更すると、ビューが無効になることがあります。
ADD、DROP、MODIFY, ADD CONSTRAINT、または DROP CONSTRAINT 節の 1
つまたは複数を使用し、それらを任意の順序に並べることができます。ア
クションは指定された順序で行われます。アクションのいずれかが失敗す
ると、操作全体が取り消されます。
SE
ROLLBACK WORK 文を使用して ALTER TABLE 文を取り消すことはできませ
ん。ALTER TABLE 文がインクルードされているトランザクションをロール
バックした場合、表は未変更のままで、エラー・メッセージは出されませ
ん。♦
構文 7-21
ADD 節
ADD 節
列の追加
節
ADD
,
(
)
列の追加
節
列の追加
節
<新
列名 >
データ型
7-370
ページ
NOT
NULL
DB
ESQL
,
制約定義
( サブセット )
7-25 ページ
DEFAULT
節
7-23 ページ
BEFORE
< 列名 >
< 列名 >
新列が配置される位置の後にある既存列の名前です。
< 新列名 >
追加する列の名前です。
ADD 節は、列を表に追加するのに使用します。表にデータが入っている場
合、SERIAL 列を表に追加することはできません。
7-22 IBM Informix SQL リファレンス・ガイド
ADD 節
DEFAULT 節
DEFAULT
節
DEFAULT
< リテラル >
NULL
CURRENT
7-383 ページ
DATETIME
フィールド
修飾子
7-373 ページ
USER
7-381 ページ
OL
TODAY
7-383 ページ
SITENAME
7-382 ページ
DBSERVERNAME
7-382 ページ
< リテラル > リテラル・デフォルトを表します。
DB
ESQL
デフォルト値は、明示的な値が指定されていない場合に列に挿入されます。
デフォルトが指定されておらず、列が NULL に対応できる場合、デフォル
トは NULL です。NULL を列のデフォルト値として指定した場合、列定義の
一部としてキーワード NOT NULL を使用することはできません。
SERIAL 列にデフォルトを配置することはできません。
変更済みの表にすでに行が入っている場合、新列には、すべての既存の行
にデフォルトが含まれます。
構文
7-23
ADD 節
定数項 はデフォルト値として指定することができます。定数項とは、ユー
ザーが定義したアルファまたは数値定数文字のストリングです。定数項を
デフォルト値として使用する場合は、以下の規則に従います。
!
INTEGER、SMALLINT、DECIMAL、MONEY、FLOAT、および SMALLFLOAT 列については整数を使用します。
!
DECIMAL、MONEY、FLOAT、および SMALLFLOAT 列については 10
進数を使用します。
!
CHAR、VARCHAR、および DATE 列については文字を使用します。
文字は、引用符で囲む必要があります。日付リテラルは、DBDATE
環境変数によって指定された形式でなければなりません。DBDATE
が設定されない場合、形式は mm/dd/yyyy であると想定されます。
!
INTERVAL 列についてはリテラル INTERVAL 値を使用します。リテ
ラル INTERVAL の使用法については、7-424 ページの『リテラル
INTERVAL』を参照してください。
!
DATETIME 列についてはリテラル DATETIME 値を使用します。リテ
ラル DATETIME の使用法について詳しくは、7-421 ページの『リテ
ラル DATETIME』を参照してください。
以下の表は、CURRENT、DBSERVERNAME、SITENAME、TODAY、または
USER 関数をデフォルト値として指定する、列のデータ型要件を示します。
関数名
データ型要件
CURRENT
一致する修飾子を持つ DATETIME 列
DBSERVERNAME
少なくとも 18 文字の長さの CHAR または VARCHAR 列
SITENAME
少なくとも 18 文字の長さの CHAR または VARCHAR 列
TODAY
DATE 列
USER
少なくとも 8 文字の長さの CHAR 列
次の例では、items 表に列を追加します。items で、新列 item_weight はリテ
ラルのデフォルト値を持ちます。
ALTER TABLE items ADD
item_weight DECIMAL (6, 2) DEFAULT 2.00 BEFORE total_price
7-24 IBM Informix SQL リファレンス・ガイド
ADD 節
この例で、items 表内の各既存 行は 、item_weight について 2.00 というデ
フォルト値を持ちます。♦
NOT NULL と ADD との併用
列についてデフォルト値を指示しない場合、列のデータ型の後に NOT NULL
キーワードをインクルードしない限り、デフォルトは NULL です。この場
合、NOT NULL キーワードが使用されると、列のデフォルト値はなく、列は
NULL に対応できません。ただし、列を追加するときに NOT NULL オプ
ションを使用できず (NOT NULL と、NULL 以外のデフォルト値の両方が指
定されている場合を除く )、表にデータが入っている場合に新列が一意性制
約または主キー制約を持つことを指定することもできません。一意性制約
を持つ列を追加したい場合は、ALTER TABLE 文を出すときに、表に 1 行の
データを含めることができます。NOT NULL または主キー制約を持つ列を追
加する場合、ALTER TABLE 文を出す時点で表は空でなければなりません。
以下の文は、items 表が空の場合にのみ有効です。
ALTER TABLE items
ADD (item_weight DECIMAL(6,2) NOT NULL
BEFORE total_price)
制約定義オプションのサブセット
制約定義
( サブセット )
UNIQUE
+
DB
ESQL
PRIMARY
KEY
CONSTRAINT
CONSTRAINT
名
7-365 ページ
REFERENCES
節
7-27 ページ
CHECK
節
7-28 ページ
I4GL
ISQL
表にデータが含まれている場合、新列に対して一意性制約を指定すること
はできません。BYTE または TEXT 列に対して一意性制約を持つこともでき
ません。一意性制約を持つ列を追加したい場合は、ALTER TABLE 文を出す
ときに、表に 1 行のデータを含めることができます。
構文
7-25
ADD 節
列または列セットに対して一意性制約を設定し、その列または列セットに
一意性インデックスがすでに存在する場合、制約はインデックスを共有し
ます。ただし、既存のインデックスが重複を許す場合、データベース・
サーバーはエラーを戻します。その場合は、一意性制約を追加する前に、
既存のインデックスを削除する必要があります。♦
DB
ESQL
表にデータが含まれている場合、新列に対して一意性制約または主キー制
約を指定することはできません。ただし、一意性制約の場合、表に 1 行の
データを含めることができます。主キー制約を持つ列を追加する場合、
ALTER TABLE 文を出す時点で表が空でなければなりません。
以下のルールは、既存列に対して一意性制約または主キー制約を設定する
場合に適用されます。
!
列または列セットに対して一意性制約または主キー制約を設定し、
その列または列セットに一意性インデックスがすでに存在する場
合、制約はインデックスを共有します。ただし、既存のインデック
スが重複を許す場合、データベース・サーバーはエラーを戻しま
す。その場合は、制約を追加する前に既存のインデックスを削除す
る必要があります。
!
列または列セットに対して一意性制約または主キー制約を設定し、
その列または列セットに参照制約がすでに存在する場合、重複イン
デックスは一意性インデックスにアップグレードされ ( 可能な場
合)、
インデックスは共有されます。
BYTE または TEXT 列に対して一意性制約を持つことはできません。これら
のタイプの列に対して参照制約またはチェック制約を設定することもでき
ません。BYTE または TEXT 列に対してチェック制約を設定することはでき
ます。ただし、チェックできるのは、IS NULL、IS NOTNULL、または
LENGTH だけです。♦
7-26 IBM Informix SQL リファレンス・ガイド
ADD 節
REFERENCES 節
REFERENCES
節
REFERENCES
表名
7-440
ページ
,
(
DB
ESQL
<列>
)
REFERENCES 節は、別の表内の列または列セットを参照するのに使用しま
す。ADD または MODIFY 節を使用する場合、参照できるのは 1 つの列だけ
です。ADD CONSTRAINT 節を使用した場合は、1 つの列または列セットを
参照できます。
参照制約は、2 つの表または同じ表内の列間の関係を確立します。列間の
関係は、通常、親子 関係と呼ばれます。この場合、子 ( 参照 ) 列のすべて
の項目について、親 ( 被参照 ) 列に一致する項目が存在する必要がありま
す。
被参照側列は、一意性制約または主キー制約の一部となっている列でなけ
ればなりません。被参照列がこの基準を満足しない場合、データベース・
サーバーはエラーを戻します。
外部キー ( 参照列 ) には、NULL 値および重複値を含めることができます
が、参照列内のすべての非 NULL 値 ( すなわち、すべての 外部キー列に非
NULL 値が含まれている ) が被参照列の値に一致する必要があります。
参照制約は、参照列と被参照列間に 1 対 1 の関係を持っています。すなわ
ち、主キーが列セットの場合、外部キーも、主キーに対応する列セットで
なければなりません。次の例は、cust_calls に新列、ref_order 列を作成しま
す。ref_order 列は、orders 表内の order_num 列を参照する外部キーです。
ALTER TABLE cust_calls ADD (
ref_order INTEGER REFERENCES orders (order_num) BEFORE user_id)
別の表内の主キーを参照する場合、その表内の主キー列を明示的に述べる
必要はありません。参照される列を指定しない被参照表は、デフォルトと
して主キー列を採用します。先の例では、order_num は orders 表内の主
キーであるため、その列を明示的に参照する必要はありません。
列または列セットに対して参照制約を設定し、その列または列セットに重
複または一意性インデックスがすでに存在する場合、インデックスは共有
されます。
構文
7-27
ADD 節
参照列および被参照列のデータ型は同じものでなければなりません。ただ
し、列が型 SERIAL である場合は除きます。この場合、主キーは型 SERIAL
で、外部キーは型 INTEGER です。
参照制約が作成されると、被参照表に排他的ロックが設定されます。ロッ
クは、ALTER TABLE 文が行われたとき、またはトランザクションの終わり
( データベース内の表をトランザクションで変更しており、しかもトランザ
クションを使用している場合 ) で解放されます。♦
CHECK 節
CHECK
節
CHECK
DB
ESQL
(
条件
7-350 ページ
)
チェック制約は、データが列に挿入される前 に満足する必要のある条件を
指定します。挿入または更新中に、表に対して定義されたチェック制約の
いずれかについて行が偽と評価された場合、データベース・サーバーはエ
ラーを戻します。
表を超えて列の制約をチェックすることはできません。ADD または
MODIFY 節を使用する場合、チェック制約は、同じ表の他の列内の値に依
存できません。以下の例は、新列 unit_price を items 表に追加し、入力され
る値が確実に 0 より大きいものであるようにする、チェック制約を含めま
す。
ALTER TABLE items ADD (
unit_price MONEY (6,2) CHECK (unit_price > 0) )
複数の列内で値をチェックする制約を作成するには、ADD CONSTRAINT 節
を使用します。次の例では、前の例と同じ列を追加します。ただし、
チェック制約は、今度は、表内の 2 つの列にまたがっています。
ALTER TABLE items ADD constraint
CHECK (unit_price < total_price)
♦
7-28 IBM Informix SQL リファレンス・ガイド
DROP 節
DROP 節
DROP
< 列名 >
,
(
< 列名 >
I4GL
ISQL
DB
< 列名 >
)
削除したい既存の列の名前です。
複数列インデックスの一部となっている列を削除するときに、複数列イン
デックスが自動的に削除されます。同様に、複数列制約の一部となってい
る列を削除するときに、複数列制約が自動的に削除されます。♦
列を削除した場合、以下のように、その列に配置されているすべての 制約
も削除されます。
ESQL
!
単一列制約はすべて削除されます。
!
当該列を参照する参照制約はすべて削除されます。
!
当該列を参照するチェック制約はすべて削除されます。
!
列が複数列一意性制約または主キー制約の一部である場合、複数の
列に設定された制約も削除されます。今度は、これがきっかけと
なって、複数の列を参照するすべての参照制約が削除されます。
1 つの列が削除されるときにその列と関連付けられた制約はすべて削除さ
れるため、この節を使用した場合、その他の 表も変更されることがありま
す。たとえば、削除された列がその他の表で参照される一意キーまたは主
キーの場合、それらの参照制約も削除されます。つまり、それらその他の
表の構造も変更されます。♦
構文
7-29
MODIFY 節
MODIFY 節
列の変更
節
MODIFY
,
(
)
列の変更
節
列の変更
節
< 列名 >
データ型
7-370 ページ
NOT
NULL
DB
ESQL
,
制約定義
( サブセット )
7-25 ページ
DEFAULT
節
7-23 ページ
< 列名 >
I4GL
変更したい既存の列の名前です。
MODIFY 節は、列のデータ型および文字列の長さを変更する、列内での
NULL への対応を許可する、あるいは不許可にするのに使用します。
ISQL
単一列制約 が関連付けられている列を変更した場合、それらの制約 ( この
場合は NOT NULL および UNIQUE 属性 ) はすべて 削除されます。列の特定の
属性を残したい場合は、それらを再度指定する必要があります。たとえば、
既存列のデータ型 quantity を SMALLINT に変更し、 しかも、この列内では
NULL を不許可にし続ける場合、以下の ALTER TABLE 文を出すことができ
ます。
ALTER TABLE items MODIFY (quantity SMALLINT NOT NULL)
複数列一意性制約の一部である列を変更した場合、すべての 単一 列制約は
削除されますが、複数列制約は削除されません。たとえば、NULL を許可
せず、複数列一意性制約の一部である列を変更した場合、NOTNULL 制約は
削除されますが、複数列制約は削除されません。列に対して NOTNULL 制約
を残したい場合、MODIFY 節に NOT NULL を再指定する必要があります。♦
DB
MODIFY 節は、列のデータ型および文字列の長さを変更する、列のデフォ
ESQL
ルト値を追加または変更する、および、列内での NULL への対応を許可あ
るいは不許可にするのに使用します。
7-30 IBM Informix SQL リファレンス・ガイド
MODIFY 節
列を変更する場合、その列と以前に関連付けられたすべての 属性 ( すなわ
ち、デフォルト値、単一列チェック制約、または参照制約 ) が削除されま
す。列の特定の属性を残したい場合は、それらを再指定する必要がありま
す。たとえば、既存列のデータ型 quantity を SMALLINT に変更し、 しかも、
デフォルト値 ( この場合 1) とその列の非 NULL 属性を保持する場合、以下
の ALTER TABLE 文を出すことができます。
ALTER TABLE items MODIFY (quantity SMALLINT DEFAULT "1" NOT NULL)
両方の属性が MODIFY 節に再度 指定されていることに注意してください。
列制約が関連付けられている列を変更した場合、以下の制約が削除されま
す。
!
単一列制約はすべて削除されます。
!
当該列を参照する参照制約はすべて削除されます。
!
変更された列が複数列一意性制約または主キー制約の一部である場
合、複数の列を参照するすべての参照制約も削除されます。
たとえば、一意性制約を持つ列を変更した場合、その一意性制約は削除さ
れます。この列が他の表の列によって参照されていた場合、それらの参照
制約も削除されます。また、列が複数列一意性制約または主キー制約の一
部である場合、複数列制約は削除されませんが、他の表によって列に設定
された参照制約はすべて削除されます。たとえば、列は複数列主キー制約
の一部です。この主キーは、他の 2 つの表内の外部キーによって参照され
ます。この列が変更されると、複数列主キー制約は削除されませんが、他
の 2 つの表によってその列に設定された参照制約は削除されます。
MODIFY 節を使用して、他の表の構造を変更できます。変更された列が他
の表によって参照された場合、それらの参照制約は削除されます。ALTER
TABLE 文を使用してそれらの制約を参照側の表に再度追加する必要があり
ます。♦
既存列のデータ型を変更した場合、数値から文字、および文字から数値
( 文字が数値を表す場合 ) を含め、すべてのデータが新しいデータ型に変換
されます。以下の文は、quantity 列のデータ型を変更します。
ALTER TABLE items MODIFY (quantity CHAR(6))
I4GL
ISQL
ただし、一意性制約変換は、制約に違反しない場合に限り、発生します。
データ変換 ( たとえば、FLOAT から SMALLFLOAT に変換したり、または
CHAR 値を切り捨てることによって ) の結果、値が重複する可能性がある場
合、ALTER TABLE 文は失敗します。♦
構文 7-31
ADD CONSTRAINT 節
ただし、一意性制約または主キー制約変換は、制約に違反しない場合に限
り、発生します。データ変換 ( たとえば、FLOAT から SMALLFLOAT に変換
したり、または CHAR 値を切り捨てることによって ) の結果、値が重複す
る可能性がある場合、ALTER TABLE 文は失敗します。♦
DB
ESQL
列制約に NULL 値が含まれていない場合、以前に NULL を許可していた既
存列を NULL を不許可にするよう変更できます。これを行うには、同じ <
列名 > とデータ型と、さらに NOT NULL キーワードを使用して、MODIFY を
指定してください。
NULL を許可していなかった 既存列を、NULL を許可するように変更でき
ます。これを行うには、< 列名 > と既存のデータ型を使用して MODIFY を
指定し、NOT NULL を省略してください。ただし、列に一意インデックスが
ある場合は、DROP INDEX 文を使用してそのインデックスを削除してくださ
い。
ADD CONSTRAINT 節
CONSTRAINT
定義
ADD CONSTRAINT
,
(
CONSTRAINT
定義
)
,
CONSTRAINT
定義
(
UNIQUE
<列>
)
+
DB
ESQL
CONSTRAINT
PRIMARY
KEY
FOREIGN
KEY
,
(
<列>
)
REFERENCES
節
7-27 ページ
CHECK
節
7-28 ページ
7-32 IBM Informix SQL リファレンス・ガイド
CONSTRAINT
名
7-365 ページ
ADD CONSTRAINT 節
<列>
制約が配置される列 ( 単数または複数 ) の名前です。
新列または既存列あるいは列セットに対して制約を指定するには、ADD
CONSTRAINT キーワードと一緒に ALTER TABLE 文を使用します。たとえば、
一意性制約を customer 表の fname 列および lname 列に追加するには、以下
の文を使用します。
ALTER TABLE customer
ADD CONSTRAINT UNIQUE (lname, fname)
制約を指定するには、この例を以下のように変更します。
ALTER TABLE customer
ADD CONSTRAINT UNIQUE (lname, fname) CONSTRAINT u_cust
制約名が指定されない場合、データベース・サーバーが提供します。
sysconstraints システム・カタログ表に制約の名前が入っています。sysconstraints システム・カタログ表について詳しくは、2-16 ページの
『SYSCONSTRAINTS』節を参照してください。
I4GL
ISQL
SE
DB
以下のルールは、一意性制約を追加する場合に適用されます。
!
列に入れられるのは、一意値だけです。
!
列または列セットに対して一意性制約を設定し、その列または列
セットに一意性インデックスがすでに存在する場合、制約はイン
デックスを共有します。ただし、既存のインデックスが重複を許す
場合、データベース・サーバーはエラーを戻します。その場合は、
一意性制約を追加する前に、既存のインデックスを削除する必要が
あります。
!
既存の一意性制約が、追加しようとする制約と同じ名前を持ってい
てはなりません。
!
複合リストに入れられる列名は 16 個以下です。すべての列の全長
が 255 バイトを超えてはなりません。♦
!
複合リストには最大 8 個の列名を入れることができ、すべての列の
全長が 120 バイトを超えてはなりません。♦
以下のルールは、一意性制約または主キー制約を追加する場合に適用され
ます。
ESQL
構文
7-33
ADD CONSTRAINT 節
I4GL
ISQL
DB
ESQL
!
列または列セットに対して一意性制約または主キー制約を設定し、
その列または列セットに一意性インデックスがすでに存在する場
合、制約はインデックスを共有します。ただし、既存のインデック
スが重複を許す場合、データベース・サーバーはエラーを戻しま
す。その場合は、制約を追加する前に、既存のインデックスを削除
する必要があります。
!
列または列セットに対して一意性制約または主キー制約を設定し、
その列または列セットに参照制約がすでに存在する場合、重複イン
デックスは一意性インデックスにアップグレードされ ( 可能な場
合 )、インデックスは共有されます。
!
列または列セットに対して参照制約を設定し、その列または列セッ
トに参照制約がすでに存在する場合、重複インデックスは一意性イ
ンデックスにアップグレードされ ( 可能な場合 )、インデックスは
共有されます。
!
既存の一意性制約が、追加しようとする制約と同じ名前を持ってい
てはなりません。
!
複合リストに入れられる列名は 16 個以下です。すべての列の全長
が 255 バイトを超えてはなりません。♦
表を所有しているか、表に対して Alter アクセス権を持っている場合、その
表に対して一意性制約を作成し、制約の所有者として自分を指定できます。
DBA アクセス権を持っている場合、他のユーザーのために制約を作成でき
ます。♦
表を所有しているか、表に対して Alter アクセス権を持っている場合、その
表に対して一意性制約、主キー制約、またはチェック制約を作成し、制約
の所有者として自分を指定できます。参照制約を追加するには、参照対象
の列または参照対象の表に対して References アクセス権を持っている必要
があります。DBA アクセス権を持っている場合、他のユーザーのために制
約を作成できます。♦
7-34 IBM Informix SQL リファレンス・ガイド
DROP CONSTRAINT 節
DROP CONSTRAINT 節
CONSTRAINT
名
7-365 ページ
DROP CONSTRAINT
,
(
CONSTRAINT
名
7-365 ページ
)
既存の制約を削除するには、DROP CONSTRAINT キーワードと制約の名前を
指定します。以下の文は、制約を削除する例です。
ALTER TABLE manufact DROP CONSTRAINT con_name
制約の作成時に < 制約名 > が指定されない場合、データベース・サーバー
が名前を生成します。制約の名前 (owner を含む ) について sysconstraints シ
ステム・カタログ表に問い合わせることができます。たとえば、items 表に
設定された制約の名前を見つけるために、以下の文を出すことができます。
SELECT constrname FROM sysconstraints
WHERE tabid = (SELECT tabid FROM systables
WHERE tabname = "items")
DB
ESQL
対応する外部キーを持つ一意性制約または主キー制約を削除した場合、そ
れらの参照制約は削除されます。たとえば、orders 表の order_num 列の主
キー制約を削除し、しかも order_num が items 表に外部キーとして存在し
ている場合、その参照関係も削除されます。♦
MODIFY NEXT SIZE 節
MODIFY NEXT SIZE
<KB>
<KB>
この表の次のエクステントについて割り当てる、K バイト単
位のサイズです。
MODIFY NEXT SIZE 節は、新規エクステントのサイズを変更するのに使用し
ます。32 KB のエクステント・サイズを指定する場合、以下の例のような
文を使用します。
ALTER TABLE customer MODIFY NEXT EXTENT SIZE 32
構文
7-35
LOCK MODE 節
既存のエクステントのサイズは変更されません。
LOCK MODE 節
LOCK MODE
(
PAGE
)
ROW
LOCK MODE キーワードは、表のロック・モードを変更するのに使用しま
す。PAGE キーワードは、デフォルトのロック・モードです。これは、
LOCK MODE 節なしで表が作成される場合に設定されます。以下の例は、
ロック・モードを行ロックに設定します。
ALTER TABLE items LOCK MODE (ROW)
参考資料
本書では、CREATE TABLE、DROP TABLE、および LOCK TABLE 文を参照して
ください。
IBM Informix SQL チュートリアル・ガイド では、データ整合性制約の説明と、
データベースおよび表の作成方法の説明を参照してください。
7-36 IBM Informix SQL リファレンス・ガイド
BEGIN WORK
BEGIN WORK
目的
BEGIN WORK 文は、トランザクション (COMMIT WORK 文または ROLLBACK
WORK 文によって終了される一連のデータベース操作 ) を開始するのに使
用します。
構文
+
BEGIN WORK
使用法
以下のコード・フラグメントは、トランザクション内に文を入れる方法を
示しています。
図 7-3
トランザクション内の文を示すコード・フラグメント
BEGIN WORK
LOCK TABLE stock
UPDATE stock SET unit_price = unit_price * 1.10
WHERE manu_code = "KAR"
DELETE FROM stock WHERE description = "baseball bat"
INSERT INTO manufact (manu_code, manu_name, lead_time)
VALUES ("LYM", "LYMAN", 14)
COMMIT WORK
トランザクション中に UPDATE、DELETE、または INSERT 文による影響を受
けた各行はロックされ、トランザクションが済むまで、ロックされたまま
になります。そのような文が多数インクルードされている、または多数の
行に影響する文がインクルードされているトランザクションは、オペレー
ティング・システムまたは IBM Informix OnLine 構成が同時ロックの最大数
に対して設定した制限を超えることがあります。他のユーザーが表にアク
セスしない場合、トランザクションを開始した後で LOCK TABLE 文を使用
して表をロックすることによって、ロック制限を無効にし、ロック・オー
バーヘッドを削減できます。すべてのロックの場合にそうであるように、
この表のロックは、トランザクションの終了時に解放されます。
構文
7-37
ANSI 標準準拠のデータベースの使用
トランザクションの最中に BEGIN WORK 文を出すと、データベース・サー
バーはエラーを戻します。
BEGIN WORK 文は、トランザクションが進行中でない場合に出すことがで
きます。
ESQL
WHENEVER 文によって呼び出されたルーチン内で BEGIN WORK 文を使用す
る場合、ROLLBACK WORK 文の前に WHENEVER SQLERROR CONTINUE およ
び WHENEVER SQLWARNING CONTINUE を指定してください。こうすると、
ROLLBACK WORK 文にエラーまたは警告が発生した場合に、プログラムの
ループを回避することができます。♦
ANSI 標準準拠のデータベースの使用
ANSI
トランザクションは暗黙的であるため、BEGIN WORK 文は不要です。以下の
文の直後に BEGIN WORK 文を使用すると、警告が生成されます。
!
DATABASE
!
COMMIT WORK
!
CREATE DATABASE
!
ROLLBACK WORK
!
START DATABASE
その他の文の後で BEGIN WORK 文を使用すると、エラーになります。♦
参考資料
本書では、COMMIT WORK および ROLLBACK WORK 文を参照してください。
IBM Informix SQL チュートリアル・ガイド では、トランザクションおよびロッ
クの説明を参照してください。
7-38 IBM Informix SQL リファレンス・ガイド
CHECK TABLE
CHECK TABLE
目的
CHECK TABLE 文は、表内のデータとそのインデックスが一致しているかど
うかを確認するために、それらを比較するのに使用します。この文は、電
源障害、コンピューター・クラッシュ、その他の予期せぬプログラム停止
などが原因でデータやインデックスが破損したと考えられる場合に使用し
てください。
構文
SE
DB
ISQL
+
CHECK TABLE
表名
7-440
ページ
使用法
データおよび関連インデックスをチェックしたいデータベース表の名前を
指定します。例 :
CHECK TABLE cust_calls
CHECK TABLE 文は bcheck ユーティリティーを呼び出します。bcheck ユー
ティリティーの詳しい説明については、IBM Informix SE Administrator’s Guide を
参照してください。
表を所有しているか、DBA 状態になっている場合を除き、表に対して
CHECK TABLE 文を使用できません。
システム・カタログ表 systables は、常にオープンになっているため、その
表に対して CHECK TABLE 文を使用することはできません。その代わり、オ
ペレーティング・システム・プロンプトから、bcheck ユーティリティーを
実行できます。informix ユーザーである場合を除き、他のシステム・カタ
ログ表に対して CHECK TABLE 文を使用することはできません。
構文
7-39
参考資料
参考資料
本書では、REPAIR TABLE 文を参照してください。
IBM Informix SE Administrator’s Guide では、bcheck ユーティリティーの説明を参
照してください。
7-40 IBM Informix SQL リファレンス・ガイド
CLOSE
CLOSE
目的
CLOSE 文は、SELECT カーソルによって生成された行を参照する必要がな
くなった場合、または INSERT カーソルをフラッシュして終了したい場合
に使用します。
構文
I4GL
ESQL
CLOSE
< カーソル名 >
< カーソル名 > DECLARE 文で宣言されているカーソルの名前です。
使用法
カーソルを終了すると、カーソルは OPEN または FREE 以外の文に使用でき
なくなり、データベース・サーバーがカーソルに割り当ててあったリソー
スが解放されます。INSERT 文と関連付けられているカーソルに対する
CLOSE 文による処理は、SELECT 文と関連付けられているものとは異なりま
す。
オープンされたことのないカーソルや、すでに終了されているカーソルを
終了することができます。これらの場合、アクションは行われません。
ANSI
オープンしていなかったカーソルを終了した場合、エラー・コードが戻さ
れます。その他のアクションは行われません。♦
構文 7-41
SELECT カーソルの終了
SELECT カーソルの終了
< カーソル名 > が SELECT 文と関連付けられている場合、カーソルをク
ローズすると、SELECT 文は終了されます。データベース・サーバーは、ア
クティブな行セット ( たとえば、整列されたセットを保持するのに使用し
た一時表 ) に割り当てた可能性のあるすべてのリソースを解放します。
データベース・サーバーは、カーソルで選択した行に保持していた可能性
のあるロックもすべて解放します。CLOSE 文がトランザクションにインク
ルードされている場合、COMMIT WORK または ROLLBACK WORK が実行さ
れるまで、ロックはデータベース・サーバーによって解放されません。
SELECT カーソルをクローズ後、カーソルを再オープンするまでは、その
カーソルを指定する FETCH 文を実行できません。
INSERT カーソルのクローズ
< カーソル名 > が INSERT 文と関連付けられている場合、CLOSE 文は、
バッファーに入れられた残りの行をデータベースに書き込みます。正常に
データベースに挿入された行の数は、SQLCA 構造体内の SQLERRD 配列の 3
番目の要素に入れて戻されます。以下の表に、製品固有の名前を示します。
(SQLERRD を使用して挿入された行の総数をカウントする方法については、
7-234 ページの PUT 文を参照してください。)
4GL
ESQL/C
ESQL/COBOL
SQLCA.SQLERRD[3]
sqlca.sqlerrd[2]
SQLERRD(3) OF SQLCA
SQLCA 構造体の SQLCODE フィールドは、INSERT カーソルについての
CLOSE 文の結果を指示します。バッファーに入れられたすべての行が正常
に挿入されると、SQLCODE はゼロに設定されます。エラーが検出された場
合、SQLCODE は、負のエラー・メッセージ番号に設定されます。各製品の
フィールド名については、以下の表を参照してください。
4GL
ESQL/C
ESQL/COBOL
STATUS
SQLCA.SQLCODE
sqlca.sqlcode
SQLCODE
SQLCODE OF SQLCA
7-42 IBM Informix SQL リファレンス・ガイド
トランザクションの終了を使用したカーソルのクローズ
SQLCODE がゼロの場合、行バッファー領域は開放され、カーソルはクロー
ズされます。すなわち、カーソルを再オープンするまで、そのカーソルを
指定している PUT または FLUSH 文を実行することはできません。
挿入が正常に行われなかった場合、正常に挿入された行数は SQLERRD に格
納されます。最後に正常に挿入された行の後にあるバッファーに入れられ
た行は廃棄されます。この場合、CLOSE 文は失敗したため、カーソルは終
了されません。バッファーに入っている行はもうないため、2 番目の
CLOSE 文は、正常に実行されます。後続の OPEN 文も正常に実行されます。
OPEN 文が暗黙的なクローズを実行し、正常に実行されるためです。CLOSE
文が失敗し、この設定を生成する状態の例として、挿入される行のいくつ
かに使用されるディスク領域が不足している場合が挙げられます。
トランザクションの終了を使用したカーソルのクロー
ズ
COMMIT WORK 文および ROLLBACK WORK 文は、保留として宣言されたも
の以外のすべてのカーソルをクローズします。ただし、すべてのカーソル
を明示的にクローズすることをお勧めします。SELECT カーソルの場合、
明示的にクローズすると、プログラムの意図が明確になります。WITH
HOLD 節がカーソルの宣言に後で追加された場合に、論理エラーを回避す
る上でも役立ちます。
INSERT カーソルの場合、エラー・コードをテストできるように、CLOSE
文を明示的に使用することが重要です。COMMIT WORK 文に続き、
SQLCODE は、カーソルのクローズの結果ではなく、COMMIT 文の結果を反
映します。最初に CLOSE 文を使用せずに COMMIT WORK 文を使用した場
合、および最後にバッファーに入れられた行がデータベースに書き込まれ
るときにエラーが発生した場合、トランザクションはそれでもコミットさ
れます。
INSERT カーソルの使用法および WITHHOLD 節については、7-108 ページの
DECLARE 文を参照してください。
参考資料
本書では、DECLARE、FETCH、FLUSH、FREE、OPEN、および PUT 文を参照
してください。
構文
7-43
参考資料
IBM Informix SQL チュートリアル・ガイド では、カーソルの説明を参照してく
ださい。
7-44 IBM Informix SQL リファレンス・ガイド
CLOSE DATABASE
CLOSE DATABASE
目的
CLOSE DATABASE 文は、現行データベースをクローズするのに使用します。
構文
+
CLOSE DATABASE
使用法
CLOSE DATABASE 文の後、正当な SQL 文は CREATE DATABASE、DATABASE、
および DROP DATABASE だけです。
SE
CLOSE DATABASE の後に、START DATABASE 文および ROLLFORWARD
DATABASE 文も使用できます。♦
CLOSE DATABASE 文は、現行データベースを削除する前に使用します。
データベースにトランザクションが入っている場合、トランザクションを
すでに開始しているのであれば、CLOSE DATABASE 文を使用する前に
COMMIT WORK 文を出す必要があります。
以下の例は、CLOSE DATABASE 文を使用して現行データベースを削除する
方法を示します。
DATABASE stores5
.
.
.
CLOSE DATABASE
DROP DATABASE stores5
I4GL
CLOSE DATABASE 文は、複数文 PREPARE 操作では表示できません。♦
ESQL
構文
7-45
参考資料
ESQL
WHENEVER 文によって呼び出されたルーチン内で CLOSE DATABASE 文を使
用する場合、ROLLBACK WORK 文の前に WHENEVER SQLERROR CONTINUE
および WHENEVER SQLWARNING CONTINUE を指定してください。こうする
と、ROLLBACK WORK 文にエラーまたは警告が発生した場合に、プログラ
ムのループを回避することができます。♦
参考資料
本書では、CREATE DATABASE、DATABASE、および DROP DATABASE 文を参
照してください。
7-46 IBM Informix SQL リファレンス・ガイド
COMMIT WORK
COMMIT WORK
目的
COMMIT WORK 文は、トランザクションが開始されて以降、データベース
に対して行われたすべての変更をコミットするのに使用します。
構文
COMMIT WORK
使用法
COMMIT WORK 文は、トランザクションが開始されて以降、データベース
に対して行われたすべての変更を保持する場合に使用します。
COMMIT WORK 文は、すべての行ロックおよび表ロックを解放します。
I4GL
COMMIT WORK 文は、保留として宣言されたカーソルを除く、すべての
オープン・カーソルをクローズします。♦
ESQL
I4GL
COMMIT WORK 文を FOREACH ループ内で使用しないでください。この文
は、保留として宣言されたカーソルを除く、すべてのオープン・カーソル
をクローズするためです。♦
参考資料
本書では、BEGIN WORK、ROLLBACK WORK、および DECLARE 文を参照し
てください。
IBM Informix SQL チュートリアル・ガイド では、トランザクションの説明を参
照してください。
構文
7-47
CREATE AUDIT
CREATE AUDIT
目的
CREATE AUDIT 文は、更新記録ファイルを作成し、IBM Informix SE データ
ベースの更新記録の書き込みを開始するのに使用します。
構文
SE
+
CREATE AUDIT FOR
表名
7-440
ページ
IN
"< パス名 >"
シノニム名
7-438
ページ
< パス名 >
更新記録ファイルの完全オペレーティング・システム・パス
名およびファイルを指定します。
使用法
表に対するすべての変更の記録を保持するために更新記録を作成できます。
更新記録とは、表に対するすべての追加、削除、および更新の完全な履歴
です。更新記録は、更新記録の作成時に作成された、バックアップ・コ
ピーから表を再構成するのに使用されます。
CREATE AUDIT 文は、IBM Informix SE でのみ使用できます。IBM Informix
OnLine は、ログ・ファイルを使用した完全データベース・ロギングを提供
します。
CREATE AUDIT 文を使用するためには、表 またはビュー を所有している
か、または DBA 状態になっている必要があります。データベースにアクセ
スする各クラスのユーザー ( 所有者、所有者のグループ、およびパブリッ
ク ) について、< パス名 > 内の < ルート > の下にある、すべてのディレク
トリーに対して EXECUTE アクセス権を設定する必要があります。同じパ
ス名を持つ更新記録がすでに存在する場合、CREATE AUDIT 文はなにも行い
ません。同じ表の更新記録が別のパス名で存在する場合、エラー・メッ
セージが戻されます。
7-48 IBM Informix SQL リファレンス・ガイド
参考資料
CREATE AUDIT 文を実行後すぐに、かつ、データベースにそれ以上の変更を
行う前に、データベース・ファイルのコピーを作成してください。( 例につ
いては、RECOVER TABLE 文を参照してください。) 可能であれば、データ
を保持している物理デバイスとは別のデバイスに更新記録ファイルを置い
てください。こうしておくと、一方のデバイスで障害が発生しても、他方
のデバイス上のデータは損傷を受けません。
更新記録を行うと、データベースへのアクセスはほんの少しだけ遅くなり
ます。データベースの各変更が、データベース・ファイルだけでなく、更
新記録ファイルにも記録されるためです。
以下の例は、UNIX 環境での CREATE AUDIT 文の使用法を示します。
CREATE AUDIT FOR orders IN "/u/safe/orders.aud"
参考資料
本書では、DROP AUDIT および RECOVER TABLE 文を参照してください。
更新記録について詳しくは、ご使用のアプリケーション開発支援ツールの
マニュアルを参照してください。
構文
7-49
CREATE DATABASE
CREATE DATABASE
目的
CREATE DATABASE 文は、新規データベースを作成するのに使用します。
構文
+
CREATE
DATABASE
データベース
名
7-367 ページ
IN<DB 領域 >
OL
SE
SE ログ節
OL
OL ログ節
SE ログ節
WITH LOG IN" パス名
"
MODE ANSI
OL ログ節
LOG
WITH
BUFFERED
LOG MODE ANSI
<DB 領域 >
このデータベースのデータを格納する DB 領域の名前です。
DB 領域はすでに存在するものでなければなりません。
< パス名 >
ログ・ファイルのファイル名を含む、絶対パス名。
7-50 IBM Informix SQL リファレンス・ガイド
使用法
使用法
作成したデータベースが現行データベースになります。
使用するデータベース名は、作業を行っている IBM Informix OnLine システ
ム内で一意なものでなければなりません。IBM Informix OnLine は、DB 領域
内のデータベース構造体を記述するデータ・ディクショナリーが含まれる、
システム・カタログ表を作成します。DB 領域を指定しない場合、
IBM Informix OnLine は、ルート DB 領域内にシステム・カタログ表を作成し
ます。
以下の文は、ルート DB 領域内に stores5 データベースを作成します。
CREATE DATABASE stores5
以下の文は、research DB 領域内に stores5 データベースを作成します。
CREATE DATABASE stores5 IN research
SE
以下の例は、現行ディレクトリー内に stores5 データベースを作成します。
CREATE DATABASE stores5
データベースのデータは、database-name.dbs という名前で、現行ディレク
トリーのサブディレクトリー内に入れられます。システム・カタログ、表、
データ、およびインデックス・ファイルは、どこか別のところに配置する
よう明示的に指示される (7-76 ページの CREATE TABLE 文を参照 ) 表の場合
を除き、このディレクトリーに入れられます。オペレーティング・システ
ム上のディレクトリー名のルールにより、データベースに選択する名前の
長さが決められます。♦
I4GL
IBM Informix 4GL および組み込み製品では、CREATE DATABASE 文を複数文
PREPARE 操作に表示することができません。♦
ESQL
構文 7-51
ANSI 標準準拠のデータベース
ANSI 標準準拠のデータベース
ANSI
オプションで、ANSI 準拠のデータベースを作成できます。
ANSI 準拠のデータベースは、以下の機能により、非 ANSI データベースと
は別に設定されます。
!
すべての文は、トランザクションに自動的に含まれます。
IBM Informix OnLine データベース・サーバー上のすべてのデータ
ベースは、バッファーなしログを使用します。
!
所有者名の指定が強制されます。所有者でない限り、各表、
ビュー、シノニム、インデックス、制約を参照する際に所有者名を
使用する必要があります。
!
IBM Informix OnLine データベース・サーバー上のデータベースにつ
いては、使用可能なデフォルトの排他レベルは反復可能読み取りで
す。
!
オブジェクトに対するデフォルトのアクセス権は、ANSI 準拠でな
いデータベース内のものとは異なります。特になにも指定しない限
り、ユーザーは、表およびシノニムに対する PUBLIC アクセス権を
受け取りません。
ANSI 準拠のデータベースとそうでないデータベースとは、この他にもわず
かに異なる点があります。これらの差異は、関連する SQL 文で適宜、示さ
れます。♦
IBM Informix OnLine でのロギング
以下の構文を使用して、IBM Informix OnLine システム上でデータベースに
対してロギング・トランザクションを開始します。
WITH
LOG
BUFFERED
LOG MODE ANSI
障害が発生した場合、IBM Informix OnLine は、このログを使用して、デー
タベース内のすべてのコミットされたトランザクションを再作成します。
7-52 IBM Informix SQL リファレンス・ガイド
IBM Informix SE でのロギング
WITH LOG 文を指定しない場合、トランザクションや、ロギングを持つデー
タベースと関連付けられた文 (BEGIN WORK、COMMIT WORK、ROLLBACK
WORK、SET LOG、および SET ISOLATION) を使用できません。
バッファー付きロギングの指定
以下の例は、バッファー付きログを使用するデータベースを作成します。
CREATE DATABASE stores5 WITH BUFFERED LOG
バッファー付きログを使用した場合、ロギングのパフォーマンスはわずか
に向上しますが、障害後に最後のいくつかのトランザクションを再作成で
きない場合があります。(IBM Informix SQL チュートリアル・ガイド に記載され
ているバッファー付きロギングの説明を参照してください。)
ANSI
ANSI 準拠のデータベースはバッファー付きロギングを使用しません。♦
ANSI 準拠のデータベースの指定
以下の例は、ANSI 準拠のデータベースを作成します。
CREATE DATABASE employees WITH LOG MODE ANSI
IBM Informix SE でのロギング
SE
以下の構文を使用して、IBM Informix SE データベースについてログ・ファイ
ルを開始します。
WITH LOG IN
"<
< パス名 >"
MODE ANSI
< パス名 >
ログのパス名を割り当てます。64 文字以下の長さでなければ
なりません。
以下の例は、ログ・ファイル付きの、accounts という名前の IBM Informix SE
データベースを作成します。絶対パス名を使用してログ・ファイルを指定
する必要があります。
CREATE DATABASE accounts WITH LOG IN "/acct/f1990/acct_log"
構文
7-53
参考資料
WITH LOG IN キーワードを指定すると、トランザクションおよびトランザ
クションと関連付けられた文 (BEGIN WORK、COMMIT WORK、および
ROLLBACK WORK) を使用できます。逆に、WITH LOG IN キーワードを指定
しないと、トランザクションを使用できません。
START DATABASE 文を使用して、ログ・ファイルを既存の IBM Informix SE
データベースに割り当てたり、別の名前を持つ新規ログ・ファイルを割り
当てることができます。
以下の SELECT 文を実行することにより、現行データベースのログ・ファ
イルの位置を決定できます。
SELECT dirpath FROM informix.systables
WHERE tabtype = "L"
♦
ANSI 準拠の IBM Informix SE データベースの指定
SE
以下の例は、ANSI 準拠のデータベースを作成します。
CREATE DATABASE employees WITH LOG IN "/u/acctg/lfile" MODE ANSI
♦
参考資料
本書では、CLOSE DATABASE、DATABASE、DROP DATABASE、 および START
DATABASE 文を参照してください。
IBM Informix SQL チュートリアル・ガイド では、データベースの作成の説明を
参照してください。
7-54 IBM Informix SQL リファレンス・ガイド
CREATE INDEX
CREATE INDEX
目的
CREATE INDEX 文は、表内の 1 つまたは複数の列についてインデックスを作
成したり、オプションで、インデックスの順に物理的表をクラスター化す
るのに使用します。複数の列がリストされた場合、列セットの連結は単一
の複合列として扱われてインデックス付けされます。
構文
+
CREATE
INDEX
UNIQUE
CLUSTER
インデッ
クス名
7-417
ページ
ON 節
DISTINCT
,
ON 節
ON
表名
7-440
ページ
(
)
< 列名 >
ASC
シノニム名
7-438
ページ
< 列名 >
DESC
インデックスを付ける列の名前です。いくつかの列に適用さ
れるインデックスを作成するには、コンマで区切られている
列名のリストを入力します。指定する列はすべて、同じ表に
属していなければなりません。
構文
7-55
使用法
使用法
CREATE INDEX 文を出すと、表は排他モードでロックされます。別のプロセ
スが表を使用している場合、データベース・サーバーは、CREATE INDEX 文
を実行できず、エラーを戻します。
特定のシーケンスの列について同じ昇順または降順で許されるインデック
スは 1 つだけです。
SE
ROLLBACK WORK 文を使用して CREATE INDEX 文を取り消すことはできま
せん。CREATE INDEX 文が含まれているトランザクションをロールバックし
た場合、インデックスは残るため、エラー・メッセージは出ません。♦
UNIQUE オプション
以下の例は一意性インデックスを作成します。
CREATE UNIQUE INDEX c_num_ix ON customer (customer_num)
このインデックスは、customer_num 列での重複を抑止します。一意性イン
デックスを持つ列は、多くても 1 つの NULL 値しか持つことができません。
DISTINCT キーワードはキーワード UNIQUE のシノニムであるため、以下の
文は同じタスクを行います。
CREATE DISTINCT INDEX c_num_ix ON customer (customer_num)
どちらの例のインデックスも、昇順で保持されます。昇順がデフォルトの
順序です。
CREATE TABLE 文または ALTER TABLE 文を作成することによって、列また
は列セット内での重複を抑止できます。詳細については、CREATE TABLE ま
たは ALTER TABLE 構文を参照してください。
CLUSTER オプション
CLUSTER オプションは、インデックスによって指定された順序で物理的な
表を再配列するのに使用します。CLUSTER インデックスがすでに存在する
場合、CREATE CLUSTER INDEX 文は失敗します。
CREATE CLUSTER INDEX c_clust_ix ON customer (zipcode)
この文は、customer 表に表を郵便番号で物理的に配列するインデックスを
作成します。
7-56 IBM Informix SQL リファレンス・ガイド
使用法
SE
更新記録を持つ表に CLUSTER インデックスを作成することはできませ
ん。♦
複合インデックス
以下の例は、stock 表の stock_num 列および manu_code 列を使用して複合
インデックスを作成します。
CREATE UNIQUE INDEX st_man_ix ON stock (stock_num, manu_code)
このインデックスは、stock_num と manu_code の指定の組み合わせの重複
を抑止します。インデックスは、特に指定しない限り、昇順です。
1 つの複合インデックスに最大 16 の列をインクルードできます。1 つの
CREATE INDEX 文にインデックス付けされたすべての列は、255 バイトを超
えることができません。
SE
1 つの複合インデックスで最大 8 個の列を使用できます。単一の CREATE
INDEX 文でインデックス付けされたすべての列は 120 バイトを超えること
ができません。♦
ASC キーワードおよび DESC キーワード
ASC オプションは、昇順で保持されるインデックスを指定するのに使用し
ます。ASC オプションは、デフォルトの昇順スキーマです。DESC オプショ
ンは、降順で保持されるインデックスを指定するのに使用します。列また
は列リストが CREATE TABLE 文または ALTER TABLE 文で一意として定義さ
れている場合、データベース・サーバーは、一意な昇順インデックスを作
成することにより、UNIQUE CONSTRAINT をインプリメントします。した
がって、CREATE INDEX 文を使用して、すでに一意として定義されている列
または列リストに昇順インデックスを追加することはできません。
構文
7-57
参考資料
前述の列に対して降順インデックスを作成すると、別の組み合わせの複合
昇順インデックスに前述の列をインクルードできます。たとえば、以下の
シーケンスの文が許されます。
CREATE TABLE customer
customer_num
fname
lname
company
address1
address2
city
state
zipcode
phone
)
(
SERIAL(101)UNIQUE,
CHAR(15),
CHAR(15),
CHAR(20),
CHAR(20),
CHAR(20),
CHAR(15),
CHAR(2),
CHAR(5),
CHAR(18)
CREATE INDEX cathtmp ON customer (customer_num DESC)
CREATE INDEX c_temp2 ON customer (customer_num, zipcode)
参考資料
本書では、ALTER INDEX、DROP INDEX、 および CREATE TABLE 文を参照し
てください。
IBM Informix SQL チュートリアル・ガイド では、インデックスの説明を参照し
てください。
7-58 IBM Informix SQL リファレンス・ガイド
CREATE PROCEDURE
CREATE PROCEDURE
目的
CREATE PROCEDURE 文は、プロシージャーに名前を付けて定義するのに使
用します。
構文
DB
ESQL
+
CREATE
PROCEDURE
DBA
文
ブロック
7-64
ページ
END
PROCEDURE
プロシー
ジャー
名
7-429
ページ
(
)
,
RETURNING
パラメーター
7-61
ページ
節
7-62 ページ
;
,
DOCUMENT
< パス名 >
引用符付き
ストリング
7-431 ページ
WITH
LISTING IN
"
< パス名 >
"
プロシージャーの警告を含めるファイルの絶対パス名です。
ファイルは、データベースとして機能するデータベース・
サーバーのホスト・マシン上になければなりません。
使用法
CREATE PROCEDURE 文の全長は、64 KB 未満でなければなりません。この
長さは、空白およびタブを含む、CREATE PROCEDURE 文のリテラル長です。
ESQL
CREATE PROCEDURE 文は、PREPARE 文の中でのみ使用できます。コンパイ
ル時にテキストが分かっているプロシージャーを作成したい場合は、
CREATE PROCEDURE FROM 文を使用する必要があります。♦
構文
7-59
使用法
CREATE PROCEDURE 文の文ブロック部分が空の場合、プロシージャーが呼
び出されても操作はなにも行われません。そのようなプロシージャーは、
プロシージャーの存在を確定したい場合に開発で使用することがあります
が、まだコード化は行っていません。
プロシージャーを作成するためには、データベースに対して少なくとも
Resource アクセス権を持っている必要があります。
SE
ROLLBACK WORK 文を使用して CREATE PROCEDURE 文を取り消すことはで
きません。CREATE PROCEDURE 文が含まれているトランザクションをロー
ルバックした場合、プロシージャーは残るため、エラー・メッセージは出
ません。♦
DBA オプション
DBA オプションを使用してプロシージャーを作成した場合、プロシー
ジャーは DBA アクセス権付きプロシージャーとして認識されます。DBA オ
プションを使用しない場合、プロシージャーは所有者アクセス権付きスト
アード・プロシージャーとして認識されます。プロシージャーの実行と関
連付けられたアクセス権は、プロシージャーが DBA キーワードを使用して
作成されるかどうかによって決定されます。詳しくは、8-16 ページの『ス
トアード・プロシージャーに対するアクセス権』を参照してください。
7-60 IBM Informix SQL リファレンス・ガイド
パラメーターの構文と使用法
パラメーターの構文と使用法
パラメーター
< 変数
名>
SQL データ型
( サブセット )
7-61 ページ
LIKE
<表>
REFERENCES
.
< デフォ
ルト値 >
<列>
BYTE
TEXT
<列>
DEFAULT
NULL
変数の型の列の名前です。
< デフォルト パラメーターのデフォルト値です。
値>
<表>
< 列 > が含まれる表の名前です。
< 変数名 >
プロシージャーで使用されるパラメーターの名前です。
パラメーターにデフォルト値を指定した場合、その値は、プロシージャー
が必要な数より少ない引数で呼び出されるたときに使用されます。
パラメーター・リストで使用できる SQL データ型のサブセッ
ト
SQL データ型サブセットには、SERIAL、TEXT、および BYTE を除く、すべ
ての SQL データ型が含まれます。すべての SQL データ型の完全な構文につ
いては、7-370 ページを参照してください。
TEXT 型または BYTE 型を使用するには、7-61 ページに示されているとおり
に、REFERENCES キーワードを使用してください。
構文 7-61
RETURNING 節
RETURNING 節
RETURNING
節
RETURNING
,
;
SQL データ型
( サブセット )
7-61 ページ
REFERENCES
BYTE
TEXT
1 つのプロシージャーは、ゼロ個以上の値または値のセットを戻すことが
できます。複数の値のセット (1 つの表の複数行など ) を戻すプロシー
ジャーは、cursory プロシージャーです。たとえば、以下の例に示されてい
る最初の RETURNING 節は、cursory プロシージャーでない場合はゼロ個以
上の値を戻すことができますが、cursory プロシージャーの場合は、1 つの
表の複数行を戻し、戻される行ごとに値が 1 つ含まれています。2 番目の
RETURNING 節は、ゼロ個または 2 つの値を戻すことができます。cursory の
場合、各行につき 2 つの値を付けて、複数の行を戻します。
RETURNING INT;
RETURNING INT, INT;
受信側プロシージャーまたはプログラムは、情報を受け入れるように適宜
作成される必要があります。
DOCUMENT 節内のプロシージャーの説明
DOCUMENT 節内の引用符付きストリング ( 単数または複数 ) は、プロシー
ジャーの一覧表と説明を提供する必要があります。DOCUMENT テキスト
は、プロシージャーのユーザーを対象としています。データベースにアク
セスする人は誰でも、sysprocbody システム・カタログ表に問い合わせて、
データベースに格納されている 1 つまたはすべてのプロシージャーの説明
を取得できます。
7-62 IBM Informix SQL リファレンス・ガイド
WITH LISTING IN オプション
たとえば、do_something という、すでに作成済みのプロシージャーの説明
を見つけるには、以下の問合せを実行します。
SELECT data FROM sysprocbody b, sysprocedures p
WHERE b.procid
= p.procid {join between the two catalogs}
AND
p.procname = "do_something" {look for procedure do_something}
AND b.datakey = 'D'
{ want user document }
ORDER BY b.seqno; {
... in order
}
戻される行は、CREATE PROCEDURE 文の DOCUMENT 節に指定されたとおり
の完全テキストです。
CREATE PROCEDURE ret_sal (dep_no INT, name CHAR(8) default user)
RETURNING INT;
.
.
.
END PROCEDURE
DOCUMENT
"Usage: salary (dept [required], name [default: your name])",
"returns your (or someone elses’s) salary",
"Warning: This procedure sends mail on illegal use"
WITH LISTING IN "/usr/tmp/sal.warnings";
WITH LISTING IN オプション
WITH LISTING IN オプションは、コンパイル時警告が送信される先のファイ
ル名を指定します。プロシージャーがコンパイルされた後、このファイル
は、1 つまたは複数のメッセージを保持します。
WITH LISTING IN オプションを使用しない場合、コンパイラーは警告のリス
トを生成しません。
構文
7-63
文ブロック
文ブロック
DEFINE
文
8-41 ページ
CALL
文
8-37 ページ
ON
EXCEPTION
文
8-66 ページ
CONTINUE
文
8-40 ページ
EXECUTE PROCEDURE
文
7-152 ページ
EXIT
文
8-49 ページ
FOR
文
8-51 ページ
FOREACH
文
8-55 ページ
IF
文
8-59 ページ
LET
文
8-63 ページ
RAISE EXCEPTION
文
8-72 ページ
RETURN
文
8-74 ページ
SYSTEM
文
8-77 ページ
TRACE
文
8-79 ページ
WHILE
文
8-83 ページ
SQL 文
BEGIN
7-64 IBM Informix SQL リファレンス・ガイド
文
ブロック
END
文ブロック
文ブロックは空にすることができますが、その場合、なにも行わないプロ
シージャーになります。
1 つのプロシージャー内で現行データベースをクローズしたり、新しい
データベースを選択することはできません。
1 つのプロシージャー内で現行プロシージャーを削除することはできませ
ん。ただし、別のプロシージャーを削除することはできます。
文ブロックで使用できる SQL 文のサブセット
文ブロックでは、図 7-4 にリストされているものを除き、任意の SQL 文を
使用できます。
図 7-4
ストアード・プロシージャーで使用できない SQL 文
CHECK
CLOSE DATABASE
CREATE DATABASE
CREATE PROCEDURE
CREATE PROCEDURE FROM
DATABASE
INFO
LOAD
OUTPUT
REPAIR
ROLL FORWARD DATABASE
START DATABASE
UNLOAD
SELECT 文を使用できるのは、次の 2 つの場合だけです。
!
INTO TEMP 節を使用して、SELECT 文の結果を一時表に入れること
ができる場合。
!
SELECT 文の SELECT...INTO フォームを使用して、結果として生じた
値をプロシージャー変数に入れることができる場合。
構文
7-65
文ブロック
データ操作文で呼び出されたプロシージャーの制限
ストアード・プロシージャーが INSERT、UPDATE、DELETE、または SELECT
文の一部として呼び出された場合、呼び出されたプロシージャーは、図 7-5
にリストされているどの文も実行できません。これにより、プロシー
ジャー呼び出しが含まれている SQL 文に影響する変更が行えないようにな
ります。
図 7-5
データ 操作文で呼び出されたプロシージャーで使用できない SQL 文
ALTER INDEX
ALTER TABLE
BEGIN WORK
COMMIT WORK
DELETE
DROP INDEX
DROP SYNONYM
DROP TABLE
DROP VIEW
INSERT
RENAME COLUMN
RENAME TABLE
ROLLBACK WORK
UPDATE
たとえば、以下の INSERT 文を使用した場合、呼び出されたプロシージャー
dup_name の実行は制限されます。
CREATE PROCEDURE sp_insert
.
.
.
INSERT INTO q_customer
VALUES (SELECT * FROM customer
WHERE dup_name ("lname") = 2)
.
.
.
END PROCEDURE;
先の例で、dup_name は図 7-5 にリストされている文を実行できません。た
だし、INSERT、UPDATE、SELECT、または DELETE 文 ( すなわち EXECUTE
PROCEDURE) でない文内で dup_name が呼び出された場合、dup_name は
図 7-5 にリストされている文を実行できます。
プロシージャーで BEGIN WORK 文および COMMIT WORK 文を使用できるこ
とに注意してください。プロシージャーで、トランザクションの開始、ト
ランザクションの終了、またはトランザクションの開始と終了を行えます。
7-66 IBM Informix SQL リファレンス・ガイド
参考資料
参考資料
本書では、DROP PROCEDURE、GRANT、EXECUTE PROCEDURE、UPDATE
STATISTICS、および REVOKE 文を参照してください。
IBM Informix SQL チュートリアル・ガイド では、ストアード・プロシージャー
の作成と使用に関する説明を参照してください。
構文
7-67
CREATE PROCEDURE FROM
CREATE PROCEDURE FROM
目的
CREATE PROCEDURE FROM 文は、プロシージャーを作成するのに使用しま
す。プロシージャーの実際のテキストは、別のファイルに収容されます。
構文
ESQL
+
"
CREATE PROCEDURE FROM
< ファイル名 >
"
ESQL
< 変数 >
< ファイル名 > CREATE PROCEDURE 文の完全テキストが含まれるファイルの
名前、または、パスとファイルの名前です。
< 変数名 >
CREATE PROCEDURE 文の完全テキストが含まれるファイルの
名前を保持するプログラム変数です。
使用法
この文に提供された < ファイル名 > は相対的なものです。単純なファイル
名が提供された場合、データベース・サーバーは、現行ディレクトリー内
で目的のファイルを探します。
参考資料
本書では、CREATE PROCEDURE 文を参照してください。
IBM Informix SQL チュートリアル・ガイド では、ストアード・プロシージャー
の作成と使用に関する説明を参照してください。
7-68 IBM Informix SQL リファレンス・ガイド
CREATE SCHEMA
CREATE SCHEMA
目的
CREATE SCHEMA 文は、CREATE 文と GRANT 文のブロックを 1 つの単位とし
て出せるようにします。CREATE 文と GRANT 文の後続ブロックについて選
択した所有者 / 権限授与者を指定できるようにします。
構文
DB
IS
CREATE SCHEMA
AUTHORIZATION
CREATE TABLE
7-76 ページ
< ユーザー名 >
+
CREATE INDEX
7-55 ページ
CREATE VIEW
7-98 ページ
+
CREATE SYNONYM
7-71 ページ
GRANT
7-178 ページ
< ユーザー名 > CREATE SCHEMA 文ブロックと、このブロックによって作成
されるオブジェクトが属しているユーザーの名前です。
使用法
影響を受けたデータベースが作成されるまで、CREATE SCHEMA 文を出すこ
とはできません。
Resource アクセス権を持つユーザーは、自分でスキーマを作成できます。
この場合、< ユーザー名 > は、CREATE SCHEMA 文を実行する、Resource ア
クセス権を持つユーザーの名前です。DBA アクセス権を持つ人は誰でも、
他の人物のためにスキーマを作成できます。この場合、< ユーザー名 > は、
CREATE SCHEMA 文を実行する人物以外のユーザーを識別できます。
構文
7-69
CREATE SCHEMA 文内でのオブジェクトの作成
以下の例に示すとおり、CREATE 文および GRANT 文を、任意の論理的な順
序で文内に入れることができます。文は、セミコロンまたはファイルの終
わり記号に達するまで、CREATE SCHEMA 文の一部と見なされます。
CREATE SCHEMA AUTHORIZATION sarah
CREATE TABLE mytable (mytime DATE, mytext TEXT)
GRANT SELECT, UPDATE, DELETE ON mytable TO rick
CREATE VIEW myview AS
SELECT * FROM mytable WHERE mytime > "12/31/1989"
CREATE INDEX idxtime ON mytable (mytime);
CREATE SCHEMA 文内でのオブジェクトの作成
CREATE SCHEMA 文によって作成されたオブジェクトはすべて、それぞれの
オブジェクトを明示的に指定しなくても、< ユーザー名 > によって所有さ
れます。DBA であれば、別のユーザーのためにオブジェクトを作成できま
す。DBA でないのに、< ユーザー名 > 以外の所有者のために何かを作成し
ようとすると、エラーが戻されます。
CREATE SCHEMA 文内でのアクセス権の付与
アクセス権を付与するには、CREATE 文および SCHEMA 文を使用する必要
があります。アクセス権を取り消したり、削除することはできません。
CREATE SCHEMA 文の外側でのオブジェクトの作成また
はアクセス権の付与
CREATE SCHEMA 文の外側でオブジェクトを作成したり、GRANT 文を使用
した場合、-ansi フラグを使用したり、DBANSIWARN を設定すると、警告が
出されます。
参考資料
本書では、CREATE TABLE、CREATE INDEX、CREATE VIEW、CREATE
SYNONYM、および GRANT 文を参照してください。
IBM Informix SQL チュートリアル・ガイド では、データ・モデルの作成につい
ての説明を参照してください。
7-70 IBM Informix SQL リファレンス・ガイド
CREATE SYNONYM
CREATE SYNONYM
目的
CREATE SYNONYM 文は、表またはビューの代替名を提供するのに使用しま
す。
構文
+
CREATE
SYNONYM
シノニム名
7-438
ページ
FOR
PUBLIC
PRIVATE
表名
7-440 ページ
ビュー名
7-444 ページ
使用法
パブリック・シノニムは、作成者だけでなく、すべてのユーザーに有効で
す。ユーザーは、シノニムが適用される表に対して、付与されているシノ
ニムに対するのと同じアクセス権を持ちます。
シノニムは、いったん作成されると、シノニムの所有者が DROP SYNONYM
文を実行するまで、存続します。このプロパティーは、SELECT 文の FROM
節で使用できる別名とシノニムを区別します。別名は、SELECT 文の有効期
間中のみ存続します。シノニムが同じデータベース内で表またはビューを
参照する場合、参照対象の表またはビューが削除されると、シノニムも削
除されます。
シノニムにシノニムを作成することはできません。
構文 7-71
使用法
ANSI
シノ ニムの名前は、シノニムの所有者 (owner.synonym) によって修飾されま
す。識別子 owner.synonym は、データベース内のすべてのシノニム、表、お
よびビューで一意でなければなりません。別のユーザーによって所有され
るシノニムを参照する場合は、<owner> を指定する必要があります。以下
の例は、その規則を示しています。
CREATE SYNONYM emp FOR accting.employee
♦
SE
ROLLBACK WORK 文を使用して CREATE SYNONYM 文を取り消すことはでき
ません。CREATE SYNONYM 文が含まれているトランザクションをロール
バックした場合、シノニムは残るため、エラー・メッセージは出ません。♦
OL
データベース・サーバー上の任意のデータベースの表またはビューについ
てシノニムを作成できます。表が ANSI 準拠のデータベースの一部である場
合、owner. 規則を使用してください。以下の例は、現行データベースの外
側の表についてのシノニムを示します。この場合、payables データベース
が含まれているのと同じデータベース・サーバー上で作業を行っているも
のと想定しています。
CREATE SYNONYM mysum FOR payables:jean.summary
♦
STAR
現行データベースが含まれているデータベース・サーバーだけでなく、任
意のネットワーク化データベース・サーバー上にある表またはビューにつ
いてシノニムを作成できます。シノニムを作成する時点で、目的の表を保
持するデータベース・サーバーはオンラインになっている必要があります。
IBM Informix STAR は、シノニムを作成する時点でシノニムのオブジェクト
が存在しているか検査します。
以下に、現行データベースに入っていないオブジェクトについてシノニム
を作成する例を示します。
CREATE SYNONYM mysum FOR payables@phoenix:jean.summary
識別子 mysum は、今度は表 jean.summary を参照します。この表は、
phoenix データベース・サーバー上の payables データベースに入っていま
す。summary 表が payables データベースから削除された場合、mysum シ
ノニムはそのままになることに注意してください。その後、mysum を使用
しようとすると、「表が見つかりません」エラーが戻されます。♦
7-72 IBM Informix SQL リファレンス・ガイド
PUBLIC シノニムと PRIVATE シノニム
PUBLIC シノニムと PRIVATE シノニム
PUBLIC キーワードを使用した ( またはキーワードをまったく使用しない )
場合、データベースへのアクセス権を持つ人ならだれでも、このシノニム
を使用できます。シノニムがパブリックである場合、ユーザーがシノニム
の所有者の名前を知っている必要はありません。ANSI 準拠でなく、しかも
データベース・サーバーのバージョン 5.0 より前に作成されたデータベー
ス内のシノニムは、いずれもパブリック・シノニムです。
ANSI
シノニムは、常にプライベートです。PUBLIC キーワードまたは PRIVATE
キーワードを使用すると、構文エラーが出されます。♦
PRIVATE キーワードを使用した場合、シノニムを使用できるのはシノニム
の所有者か、あるいは所有者の名前がシステムを使用して明示的に指定さ
れた場合だけです。同じデータベース内に同じ名前を持つプライベート・
シノニムが複数存在してもかまいません。ただし、その名前を持つ各シノ
ニムは、別のユーザーによって所有される必要があります。
与えられた名前で所有できるシノニムは 1 つだけです。同じ名前のプライ
ベート・シノニムとパブリック・シノニムを両方作成することはできませ
ん。たとえば、以下のコードではエラーになります。
CREATE SYNONYM our_custs FOR customer;
CREATE PRIVATE SYNONYM our_custs FOR cust_calls;-- ERROR!!!
同じ名前のシノニム
プライベート・シノニムを所有しており、同じ名前のパブリック・シノニ
ムが存在し、しかもその非修飾名でシノニムを使用する場合、プライベー
ト・シノニムが使用されます。
DROP SYNONYM をシノニムと一緒に使用し、同じ名前のシノニムが複数存
在する場合、プライベート・シノニムは削除されます。DROP SYNONYM 文
を再度出すと、パブリック・シノニムが削除されます。
構文
7-73
IBM Informix OnLine and IBM Informix STAR を使用したシノニムのチェーニン
IBM Informix OnLine and IBM Informix STAR を使用
したシノニムのチェーニング
OL
STAR
現行データベースに入っていない表についてシノニムを作成し、そのシノ
ニムの基本表が削除された場合、シノニムはそのまま留まります。その後、
削除された表の名前をシノニム名として使用して、削除された表について
新規シノニムを作成し、別の外部表またはリモート表を示すことができま
す。この方法により、表を新しい位置に移動し、シノニムをまとめて
チェーニングすると、元のシノニムは有効なままになります。( この方法
で、最大 16 のシノニムをチェーニングできます。) ♦
以下のステップでは、customer 表について 2 つのシノニムをまとめてチェー
ニングします。
それらは、
最終的に zoo データベース・サーバー上に収容され
ます。(CREATE TABLE 文は完全でないことに注意してください。)
1.
training というデータベース・サーバー上の stores5 データベースで
2.
accntg というデータベース・サーバー上で
3.
zoo というデータベース・サーバー上で
CREATE TABLE customer (lname CHAR(15)...)
CREATE SYNONYM cust FOR [email protected]
CREATE TABLE customer (lname CHAR(15)...)
4.
training というデータベース・サーバー上で
DROP TABLE customer
CREATE SYNONYM customer FOR [email protected]
accntg データベース・サーバー上のシノニム cust は、今度は、zoo データ
ベース・サーバー上の customer 表を指示します。
以下のステップは、2 つのシノニムをまとめてチェーニングし、シノニム
が指示する表を変更する例を示します。
1.
training というデータベース・サーバー上で
2.
accntg というデータベース・サーバー上で
CREATE TABLE customer (lname CHAR(15)...)
CREATE SYNONYM cust FOR [email protected]
3.
training というデータベース・サーバー上で
DROP TABLE customer
CREATE TABLE customer (lastname CHAR(20)...)
accntng データベース・サーバー上のシノニム cust は、今度は、training
データベース・サーバー上の customer 表の新規バージョンを指示します。
7-74 IBM Informix SQL リファレンス・ガイド
参考資料
参考資料
本書では、DROP SYNONYM 文を参照してください。
IBM Informix SQL チュートリアル・ガイド では、シノニムの説明を参照してく
ださい。
構文
7-75
CREATE TABLE
CREATE TABLE
目的
CREATE TABLE 文は、現行データベース内に新規表を作成し、その列または
列の組み合わせに対してデータ整合性制約を設定し、その初期および後続
エクステントのサイズを指定し、そして、そのロック方法を指定するのに
使用します。
構文
,
CREATE
TABLE
表名
7-440
ページ
列定義
7-81
ページ
(
)
,
,
ストレージ・
オプション
7-93
ページ
制約定義
7-85
ページ
,
+
TEMP
TABLE
< 一時
表名 >
(
一時表
列定義
( サブセット )
7-92
ページ
,
,
)
一時表
制約定義
( サブセット )
7-25
ページ
WITH NO LOG
< 一時表名 > 一時表に割り当てる名前です。owner. 規則を使用することは
できません。
7-76 IBM Informix SQL リファレンス・ガイド
使用法
使用法
表名は、同じデータベース内で一意なものでなければなりません。ただし、
一時表名は、現行データベース内の既存の表、ビュー、またはシノニム名
と異なるものでなければなりませんが、他のユーザーが使用する他の一時
表名と異なる必要はありません。
ANSI
ANSI 準拠のデータベースでは、組み合わせ owner.tablename は、データベー
ス内で一意なものでなければなりません。♦
特に指定のない限り、Connect アクセス権を付与されているすべてのユー
ザーは、新規表に対してすべてのアクセス権 (Alter、Index、および References を除く ) を持ちます。アクセス権をさらに制限するためには、
REVOKE 文を使用して、すべての アクセス権をパブリック ( システム上の
すべての人 ) から取り上げます。次に、GRANT 文を使用して、特定のユー
ザーに与えたいアクセス権を指定します。
ANSI
SE
ISQL
ANSI 準拠のデータベースには、デフォルトの表レベル・アクセス権はあり
ません。これらのアクセス権は、明示的に付与する必要があります。♦
ROLLBACK WORK 文を使用して CREATE TABLE 文を取り消すことはできま
せん。CREATE TABLE 文が含まれているトランザクションをロールバックし
た場合、表は残るため、エラー・メッセージは出ません。♦
CREATE TABLE 文を CREATE SCHEMA 文の外側で使用すると、-ansi フラグを
使用するか、DBANSIWARN を設定した場合に警告が生成されます。♦
DB
I4GL
CREATE TABLE 文を使用すると、-ansi フラグを使用するか、
DBANSIWARN を設定した場合、警告が出ます。♦
ESQL
制約の定義
表を作成する場合、いくつかの要素を定義する必要があります。たとえば、
表およびその表内の列は、一意な名前を持つ必要があります。また、表の
列はいずれも、データ型が少なくとも 1 つ関連付けられている必要があり
ます。さらに、オプションで、指定の列にいくつかの制約を設定できます。
たとえば、列が特定のデフォルト値を持つこと、または特定のデータ要件
を満足するよう、列に入力されたデータをチェックすることを指示できま
す。
構文
7-77
制約の定義
列に制約を設定することは、列にインデックスを設定する (CREATE INDEX
文を使用 ) ことと同じです。ただし、インデックスではなく制約を使用す
ると、データ整合性制約をインプリメントし、実効確認のオン / オフを切
り替えることもできます。データ整合性制約については、IBM Informix SQL
チュートリアル・ガイド を参照してください。実効確認については、7-294
ページの SET CONSTRAINTS 文を参照してください。
ヒント : ロギングのないデータベースでは、使用可能な制約確認モードだ
けが切り離されます。確認が切り離されると、制約確認が行単位で実行さ
れます。
制約は、列 レベルまたは表 レベルで定義できます。列レベルで制約を定義
するよう選択した場合、複数列制約を持つことはできません。すなわち、
列レベルで作成された制約は、単一の列にのみ適用されます。表レベルで
制約を定義するよう選択した場合、制約を単一または複数の列に適用でき
ます。どちらのレベルでも、単一列制約は同様に扱われます。
列に対してデータの制限を設定したときはいつでも、制約が自動的に作成
されます。オプションで、制約に名前を指定できます。制約に名前を指定
しないよう選択した場合、ユーザーに代わって、データベース・サーバー
が自動的にデフォルトの制約名を作成します。
制約定義の制限
一意性制約、主キー制約、または参照制約について、列のリストに最大 16
の列をインクルードできます。すべての列の全長が 255 バイトを超えては
なりません。
SE
IBM Informix SE 列のリストで最大 8 個の列を使用できます。すべての列の全
長が 120 バイトを超えてはなりません。♦
制約の追加または削除
CREATE TABLE 文を使用して列または列セットに制約を設定したら、列また
は列セットに制約を追加したり、削除するのに、ALTER TABLE 文を使用す
る必要があります。
7-78 IBM Informix SQL リファレンス・ガイド
制約の定義
主キー制約、一意性制約、および参照制約の実行
I4GL
一意性制約は、一意項目のみを許す昇順インデックスとしてインプリメン
トされます。列に対してこれらの制約のいずれかを設定後、データベー
ISQL
ス・サーバーは一意性制約のために一意性インデックスを作成します。
制約はインデックスを通じて実行されるため、列に対して設定されている
制約と同じ型のインデックスをその列に対して作成する (CREATE INDEX 文
を使用 ) ことはできません。たとえば、列に対して一意性制約が存在する
場合、その列に対して一意性インデックスも重複する昇順インデックスも
作成できません。♦
DB
ESQL
主キー制約、一意性制約、および参照制約は、一意項目のみを許す昇順イ
ンデックスまたは重複を許す昇順インデックスのどちらかとしてインプリ
メント されます。列に対してこれらの制約のいずれかが設定されている場
合、データベース・サーバーは、以下の機能を実行します。
!
一意性制約または主キー制約のための一意性インデックスの作成
!
参照制約に指定された列のための非一意性インデックスの作成
ただし、同じ列または列セットに対して制約がすでに作成されている場合、
インデックスは作成されません。その代わり、インデックスは制約によっ
て共有 されます。既存インデックスが非一意性の場合、その列に対して一
意性制約または主キー制約が設定されると、インデックスはアップグレー
ド されます。
これらの制約はインデックスを通じて実行されるため、列に対して設定さ
れている制約と同じ型のインデックスをその列に対して作成する (CREATE
INDEX 文を使用 ) ことはできません。たとえば、列に対して一意性制約が
存在する場合、その列に対して昇順の一意性インデックスも重複する昇順
インデックスも作成できません。♦
制約名
I4GL
ISQL
新規の一意性制約ごとに、sysindexes システム・カタログ表に 1 行追加され
ます。sysindexes システム・カタログ表内のインデックス名は、以下の
フォーマットで作成されます。
[space]<tabid>_<constraint id>
ここで、tabid および constraint id は、それぞれ systables および sysconstraints システム・カタログ表から取得したものです。
構文
7-79
制約の定義
制約名は、データベース内で一意でなければなりません。制約名 が指定さ
れない場合、データベース・サーバーは、以下のテンプレートを使用して
sysconstraints システム・カタログ表について制約名を生成します。
<constraint type><tabid>_<constraint id>
ここで、constraint type は、英字 u ( 一意性制約の場合 ) です。名前が既存
の識別子と対立する場合、データベース・サーバーがエラーを戻したら、
< 制約名 > を指定する必要があります。♦
DB
ESQL
既存の制約とインデックスを共有しない、新規主キー制約、一意性制約、
または参照制約ごとに、sysindexes システム・カタログ表に 1 行追加されま
す。sysindexes システム・カタログ表内のインデックス名は、以下の
フォーマットで作成されます。
[space]<tabid>_<constraint id>
ここで、tabid および constraint id は、それぞれ systables および sysconstraints システム・カタログ表から取得したものです。
制約名は、データベース内で一意でなければなりません。制約名 が指定さ
れない場合、データベース・サーバーは、以下のテンプレートを使用して
sysconstraints システム・カタログ表について制約名を生成します。
<constraint type><tabid>_<constraint id>
ここで、constraint type は、一意性制約または主キー制約の場合は英字 u、参照
制約の場合は r、チェック制約の場合は c です。
名前が既存の識別子と対立
する場合、データベース・サーバーがエラーを戻したら、< 制約名 > を指定す
る必要があります。♦
7-80 IBM Informix SQL リファレンス・ガイド
列定義オプション
列定義オプション
<列>
データ型
7-370
ページ
NOT NULL
DB
ESQL
制約定義
( サブセット )
7-25 ページ
DEFAULT
節
7-82 ページ
<列>
列の有効な識別子です。列名は、表内では一意でなければな
りませんが、同じデータベース内の別の表で同じ名前を使用
できます。
CREATE TABLE 文の列定義部分を使用して、列が重複値を許すかどうかを指
示するほか、単一列の 名前、データ型、デフォルト値、および制約をリス
トできます。
構文 7-81
列定義オプション
DEFAULT 節
DEFAULT 節
< リテラル >
DEFAULT
NULL
CURRENT
7-383 ページ
DATETIME
フィールド修飾子
7-373 ページ
USER
7-381 ページ
OL
TODAY
7-383 ページ
SITENAME
7-382 ページ
DBSERVERNAME
7-382 ページ
< リテラル > リテラル・デフォルトを表します。
DB
ESQL
デフォルト値は、明示的な値が指定されない場合に列に挿入されます。デ
フォルトが指定されておらず、列が NULL に対応できる場合、デフォルト
は NULL です。NULL を列のデフォルト値として指定した場合、列定義の一
部としてキーワード NOT NULL を使用することはできません。
シリアル列にデフォルト値を指定することはできません。列が型 TEXT ま
たは BYTE の場合、デフォルト値として指定できるのは NULL だけ です。
定数項 をデフォルト値として指定することができます。定数項とは、ユー
ザーが定義した文字または数値定数文字のストリングです。定数項をデ
フォルト値として使用する場合は、以下の規則に従います。
!
INTEGER, SMALLINT、DECIMAL、MONEY、FLOAT、および SMALLFLOAT 列については整数を使用します。
!
DECIMAL, MONEY、FLOAT、および SMALLFLOAT 列については 10
進数を使用します。
7-82 IBM Informix SQL リファレンス・ガイド
列定義オプション
!
CHAR、VARCHAR、および DATE 列については文字を使用します。
文字は、引用符で囲む必要があります。日付リテラルは、DBDATE
環境変数によって指定された形式でなければなりません。DBDATE
が設定されない場合、形式は mm/dd/yyyy であると想定されます。
!
INTERVAL 列については、リテラル INTERVAL を使用します。リテ
ラル INTERVAL の使用法については、7-424 ページの『リテラル
INTERVAL』を参照してください。
!
DATETIME 列についてはリテラル DATETIME 値を使用します。リテ
ラル DATETIME の使用法について詳しくは、7-421 ページの『リテ
ラル DATETIME』を参照してください。
主キーの一部である列についてデフォルト値として NULL を指定すること
はできません。
以下の表は、CURRENT、USER、TODAY、SITENAME、または DBSERVERNAME 関数をデフォルト値として指定する列のデータ型要件を示します。
関数名
データ型要件
CURRENT
一致する修飾子を持つ DATETIME 列
DBSERVERNAME
少なくとも 18 文字の長さの CHAR または VARCHAR 列
SITENAME
少なくとも 18 文字の長さの CHAR または VARCHAR 列
TODAY
DATE 列
USER
少なくとも 8 文字の長さの CHAR 列
次の例は、表 accounts を作成します。accounts で、acc_type 、および
acc_descr 列はリテラル・デフォルト値を持ちますが、acc_id はデフォルト
値としてユーザーのログイン名を採用します。
CREATE TABLE accounts (
acc_num INTEGER DEFAULT 0001,
acc_type CHAR(1) DEFAULT "A",
acc_descr CHAR(20) DEFAULT "New Account",
acc_id CHAR(8) DEFAULT USER)
♦
構文
7-83
列定義オプション
列定義での NOT NULL の指定
列についてデフォルト値を指示しない場合、列のデータ型の後に NOT
NULL キーワードをインクルードしない限り、デフォルトは NULL です。
この場合、列のデフォルト値はありません。以下の例は、newitems 表を作
成します。newitems で、列 manu_code は、デフォルト値を持たず、NULL
にも対応しません。
CREATE TABLE newitems (
newitem_num INTEGER,
manucode CHAR(3) NOT NULL,
promotype INTEGER,
descrip CHAR(20))
列を NOT NULL として指定した ( しかも、デフォルト値が指定されていない )
場合、行を挿入するか、または行内のその列を更新するときに、この列に値を
入力する必要があります。値を入力しないと、データベース・サーバーはエ
ラーを戻します。詳しくは、7-370 ページのデータ型の項を参照してくださ
い。
制約定義オプションのサブセット
UNIQUE
+
DB
ESQL
CONSTRAINT
PRIMARY
KEY
CONSTRAINT
名
7-365 ページ
REFERENCES
節
7-27 ページ
CHECK
節
7-28 ページ
I4GL
ISQL
表レベルの制約定義オプションと異なり、列レベルの制約は、単一列に限
定されます。つまり、一意性複数列制約は作成できません。一意性制約に
ついて詳しくは、7-85 ページの『制約定義オプション』を参照してくださ
い。♦
7-84 IBM Informix SQL リファレンス・ガイド
制約定義オプション
表レベルの制約定義オプションと異なり、列レベルの制約は、単一列に限
定されます。つまり、チェック制約、一意性制約、主キー制約、または外
部キー複数列制約を作成することはできません。一意性制約、主キー制約、
およびチェック制約について詳しくは、7-85 ページの『制約定義オプショ
ン』を参照してください。
DB
ESQL
以下の例は、一意および主キーを使用して単純な表を作成し、作成された
2 つの制約に名前を付けます。
CREATE TABLE accounts (
acc_num INTEGER PRIMARY KEY CONSTRAINT num,
acc_code UNIQUE CONSTRAINT code,
acc_descr CHAR(30))
♦
制約内での BLOB データ型の使用
BYTE 列または TEXT 列に対して一意性制約を持つことはできません。♦
I4GL
ISQL
BYTE 列または TEXT 列に対して一意性制約、主キー制約、または参照制約
を設定することはできません。ただし、BYTE 列または TEXT 列に対して
DB
ESQL
チェック制約を設定することによって、NULL 値または非 NULL 値の
チェックを行うことができます。♦
制約定義オプション
,
(
UNIQUE
<列>
)
DB
ESQL
+
CONSTRAINT
,
PRIMARY
KEY
FOREIGN KEY
CONSTRAINT
名
7-365 ページ
(
<列>
)
REFERENCES
節
7-27 ページ
CHECK
節
7-28 ページ
構文
7-85
制約定義オプション
<列>
列の名前です。
制約定義オプションを使用して、単一列または列セット用の制約を作成で
きます。列のリストに最大 16 の列をインクルードできます。すべての列の
全長が 255 バイトを超えてはなりません。
SE
IBM Informix SE 列のリストで最大 8 個の列を使用でき、すべての列の全長が
120 バイトを超えてはなりません。♦
一意としての列の定義
UNIQUE キーワードを使用して、単一の列または列セットが一意データの
み受け入れるようにすることができます。一意性制約を持つ列に重複値を
挿入することはできません。
一意性制約に指定される各列は、表内の列でなければならず、制約リスト
に複数回現れることはできません。以下の例は、その列のいずれかに一意
性制約を持つ単純な表を作成します。
CREATE TABLE accounts (a_name CHAR(12), a_code SERIAL,
UNIQUE (a_name) CONSTRAINT acc_name)
列レベルで制約を定義したい場合は、以下の例に示されているとおり、列
定義にキーワード UNIQUE および CONSTRAINT をインクルードするだけで
す。
CREATE TABLE accounts
(a_name CHAR(12) UNIQUE CONSTRAINT all_name, a_code SERIAL)
BYTE 列または TEXT 列に対して一意性制約を設定することはできません。
主キーとしての列の定義
DB
ESQL
主キーとは、表の各行について非 NULL 一意値が含まれている列または列
セットです。表に入れられる主キーは 1 つだけで、主キーとして定義され
た列を一意としても定義することはできません。先の 2 つの例で、一意性
制約は列 a_name に対して設定されています。次の例では、この列を
accounts 表の主キーとして作成します。
CREATE TABLE accounts
(a_name CHAR(12), a_code SERIAL, PRIMARY KEY (a_name))
BYTE 列または TEXT 列に対して主キー制約を設定することはできませ
ん。♦
7-86 IBM Informix SQL リファレンス・ガイド
制約定義オプション
外部キーとしての列の定義
DB
ESQL
外部キーは、表間の依存関係を結合 し、確立します。外部キーは、表内の
一意キーまたは主キーを参照します。外部キー列に非 NULL 値が含まれて
いる場合、外部キー列の項目ごとに、一意キー列または主キー列に一致す
る項目が存在する必要があります。BYTE 列または TEXT 列に外部キーを作
成することはできません。♦
REFERENCES 節
REFERENCES
節
REFERENCES
表名
7-440
ページ
,
(
DB
<列>
)
REFERENCES 節は、列または列セットを参照するのに使用します。REFERENCES 節を使用する場合、参照できるのは 1 つの列だけです。♦
ESQL
被参照列および参照列の要件
DB
ESQL
参照関係において、被参照 列は、表内の各行を一意に識別する表内の列ま
たは列セットです。つまり、被参照列または被参照列セットは、一意性制
約または主キー制約の一部でなければなりません。被参照列がこの基準を
満足しない場合、データベース・サーバーはエラーを戻します。
被参照列と異なり、参照 列または参照列セットには、NULL 値および重複
値を含めることができます。ただし、参照列内のどの非 NULL 値も、被参
照列内の値に一致しなければなりません。列がこの基準を満足していると、
それは外部キーと呼ばれます。
被参照列と参照列との関係を親子 関係といい、この場合、親は被参照列 ( つ
まり主キー) であり、子は参照列 ( つまり外部キー) です。この親子関係は、参
照制約により確立されます。
参照制約は、2 つの表または同じ表内 の列間で確立できます。たとえば、
emp_no 列が従業員番号により各従業員を一意に識別する employee 表を持
つことができます。その表の mgr_no 列には、その従業員を管理するマ
ネージャーの従業員番号が含まれます。この場合、mgr_no は、主キー ( つ
まり親 ) emp_no を参照する外部キー ( つまり子 ) です。
構文
7-87
制約定義オプション
参照制約は、参照列と被参照列間に 1 対 1 の関係を持っている必要があり
ます。すなわち、主キーが列セットの場合、外部キーも、主キーに対応す
る列セットでなければなりません。以下の例は、2 つの表を作成します。
最初の表は複数列の主キーを持っており、2 番目の表はこのキーを参照す
る参照制約を持っています。
CREATE TABLE accounts (
acc_num INTEGER,
acc_type INTEGER,
acc_descr CHAR(20),
PRIMARY KEY (acc_num, acc_type))
CREATE TABLE sub_accounts (
sub_acc INTEGER PRIMARY KEY,
ref_num INTEGER NOT NULL,
ref_type INTEGER NOT NULL,
sub_descr CHAR(20),
FOREIGN KEY (ref_num, ref_type) REFERENCES accounts
(acc_num, acc_type))
この例で、sub_accounts 表、ref_num および ref_type の外部キーは、
accounts 表内の主キー、acc_num および acc_type を参照します。挿入中に、
ref_num および ref_type の値が accounts 表内の既存行の acc_num および
acc_type の値に厳密に対応しない、1 行を sub_accounts 表に挿入しようとす
ると、データベース・サーバーはエラーを戻します。同様に、acc_num お
よび acc_type (accounts 表からのもの ) 内の同等値セットに対応しない、
ref_num および ref_type の値で sub_accounts を更新しようとすると、デー
タベース・サーバーはエラーを戻します。
別の表内の主キーを参照する場合、その表内の主キー列を明示的に述べる
必要はありません。参照される列を指定しない被参照表は、デフォルトと
して主キー列を採用します。先の例の references のセクションを、次のよう
に書き換えることができます。
...
FOREIGN KEY (ref_num, ref_type) REFERENCES accounts
...
acc_num および acc_type は accounts 表の主キーであり、その他の列が指定
されないため、外部キー、ref_num および ref_type はそれらの列を参照しま
す。♦
7-88 IBM Informix SQL リファレンス・ガイド
制約定義オプション
データ型制限
DB
ESQL
参照列および被参照列のデータ型は同じものでなければなりません。ただ
し、列が型 SERIAL である場合は除きます。この場合、被参照列は型
SERIAL で、参照列は型 INTEGER です。先の例では、主キーと外部キーの
データ型は 1 対 1 で対応しています。これらの列のいずれかが型 SERIAL と
して定義されている場合も、 文は正常に実行されます。
BYTE 列または TEXT 列に参照制約を設定することはできません。♦
ロックの含意
DB
ESQL
参照制約が作成されると、被参照表に排他的ロックが設定されます。ロッ
クは、CREATE TABLE 文が行われると解放されます。トランザクション付き
のデータベースに表を作成する場合、ロックは、トランザクションの終わ
りで解放されます。♦
列定義での REFERENCES
DB
ESQL
列定義レベルの参照オプションを使用した場合、参照できるのは 1 つの列
だけです。以下の例は、2 つの表、accounts および sub_accounts 、を作成し
ます。sub_accounts 表の外部キー ref_num と、accounts 表の主キー
acc_num 間に参照制約が作成されます。
CREATE TABLE accounts (
acc_num INTEGER PRIMARY KEY,
acc_type INTEGER,
acc_descr CHAR(20))
CREATE TABLE sub_accounts (
sub_acc INTEGER PRIMARY KEY,
ref_num INTEGER REFERENCES accounts (acc_num),
sub_descr CHAR(20))
ref_num は、列定義構文で明示的に外部キーとして指定されていないこと
に注意してください。列レベルでは、外部キーの指定は自動的に適用され
ます。
別の表内の主キーを参照する場合、被参照表を指定する必要はありません。
先の例では、列を指定しなくても accounts 表を単純に参照できます。
acc_num は、accounts 表の主キーであるため、特に指定しない限り、被参
照列になります。♦
構文
7-89
制約定義オプション
CHECK 節
CHECK
節
CHECK
DB
ESQL
(
条件
7-350 ページ
)
チェック制約は、INSERT 文または UPDATE 文中でデータを列に割り当てる
前 に満足しなければならない条件を指定できるようにします。挿入または
更新中に、表に対して定義されたチェック制約のいずれかについて行が偽
と評価された場合、データベース・サーバーはエラーを戻します。
チェック制約は < 検索条件 > を使用して定義されます。検索条件には、集
計関数、ホスト変数、行 ID、関数 CURRENT、USER、SITENAME、
DBSERVERNAME、または TODAY、あるいはストアード・プロシージャー呼
び出しという副問合せをインクルードできません。♦
列レベルでのチェック制約の定義
DB
ESQL
列レベルでチェック制約を定義した場合、チェック制約が検査できる列は、
その列自身だけです。つまり、チェック制約は、表の他の列の値に依存で
きません。たとえば、次の文に示すとおり、表 acct_chk にはチェック制約
を持つ 2 つの列があります。
CREATE TABLE acct_chk (
chk_id SERIAL PRIMARY KEY,
debit INTEGER REFERENCES accounts (acc_num),
debit_amt MONEY CHECK (debit_amt BETWEEN 0 AND 99999),
credit INTEGER REFERENCES accounts (acc_num),
credit_amt MONEY CHECK (credit_amt BETWEEN 0 AND 99999))
列 debit_amt および credit_amt は両方とも型 MONEY で、値が 0 ~ 99999 の
範囲内のものでなければなりません。ただし、両方の列が同じ値を持って
いることを検査したい場合、列レベルでチェック制約を作成することはで
きません。複数の列で値をチェックする制約を作成するには、表レベルで
制約を定義する必要があります。♦
7-90 IBM Informix SQL リファレンス・ガイド
TEMP TABLE オプション
表レベルでのチェック制約の定義
DB
ESQL
チェック制約が表レベルで定義される場合、検索条件の各列は、その表内
の列でなければなりません。表を超えた列のチェック制約を作成すること
はできません。次の例は、左記の例と同じ表および列を作成します。ただ
し、チェック制約は、今度は、表内の 2 つの列にまたがっています。
CREATE TABLE acct_chk (
chk_id SERIAL PRIMARY KEY,
debit INTEGER REFERENCES accounts (acc_num),
debit_amt MONEY,
credit INTEGER REFERENCES accounts (acc_num),
credit_amt MONEY,
CHECK (debit_amt = credit_amt))
この例で、debit_amt 列および credit_amt 列は互いに等しいものでなければ
なりません。そうでない場合、挿入または更新は失敗します。♦
TEMP TABLE オプション
一時表は、プログラムの期間中のみ存続します。データベースがトランザ
クションを使用し、一時表が WITH NO LOG キーワードを使用して作成され
ていない場合、データベースをクローズした時点で一時表は削除されます。
DB
ISQL
一時表は、アプリケーションを終了するまで存続します。データベースが
トランザクションを使用し、一時表が WITH NO LOG キーワードを使用して
作成されていない場合、データベースをクローズした時点で一時表は削除
されます。
INFO 文および Info Menu Option を一時表と一緒に使用することはできませ
ん。♦
STAR
INET
一時表は、ローカル・データベース・サーバー上に作成されます。( すなわ
ち、現行ディレクトリー内 ( 存在する場合 ) か、またはローカル・マシンの
データベース・サーバー・プロセス内。) 一時表を作成してから、データ
ベースをクローズすると、一時表は削除されます。ただし、現行データ
ベースがローカル・データベース・サーバー上にあり、このデータベース
をクローズしてリモート・データベースをオープンした場合、ローカル・
データベース・サーバーの一時表は、リモート・データベースをクローズ
してからローカル・データベースを再度オープンするまで 使用できませ
ん。♦
構文 7-91
TEMP TABLE オプション
データベースに対して Connect アクセス権を持っている場合、一時表を作
成することができます。一時表が作成されると、その表にインデックスを
作成できます。ただし、その一時表を見ることができるのは、ご自分だけ
です。
I4GL
ISQL
DB
ESQL
一時表に FORM4GL または PERFORM 画面を作成することはできません。
列定義オプションのサブセット
一時表の列に対して参照制約を設定することはできません。つまり、一時
列は、被参照列にも参照列にもなれません。一時表を作成する際に、以下
の制約定義キーワードは使用できません。
!
REFERENCES
!
CONSTRAINT
列制約定義オプションについて詳しくは、7-25 ページの『制約定義オプ
ションのサブセット』を参照してください。♦
制約定義オプションのサブセット
DB
ESQL
一時表の列に対して参照制約を設定することはできません。つまり、一時
列は、被参照列にも参照列にもなれません。一時表を作成する際に、以下
の表制約定義キーワードは使用できません。
!
FOREIGN KEY
!
REFERENCES
!
CONSTRAINT
表レベル制約定義オプションについて詳しくは、7-85 ページの『制約定義
オプション』を参照してください。♦
一時表に対する WITH NO LOG オプション
CREATE TABLE 文で WITH NO LOG キーワードを使用し、データベースがロ
ギングを使用しない場合、WITHNO LOG オプションは無視されます。
一時表のロギングをオフにすると、オンに戻すことはできません。した
がって、一時表は、常にログされるか、まったくログされないかのどちら
かです。
7-92 IBM Informix SQL リファレンス・ガイド
ストレージ・オプション
以下の例は、ロギングを使用するデータベース内での一時表のロギングを
抑止する方法を示しています。
CREATE TEMP TABLE tab2 (fname CHAR(15), lname CHAR(15))
WITH NO LOG
ストレージ・オプション
ストレージ・
オプション
OL
IN<DB 領域 >
SE
エクステント・
オプション
7-95 ページ
LOCK MODE
7-96 ページ
IN "< パス名 >"
<DB 領域 >
データベース表が格納される DB 領域の名前です。
< パス名 >
データベース表を格納する絶対オペレーティング・システ
ム・パスおよびファイル名を、ファイル名に拡張子を付けず
に指定します。
ストレージ・オプションは、データベース表が格納される場所と、表の
ロック範囲を指定できるようにします。
IN DB 領域節
指定する DB 領域は、すでに存在しており、ローカル IBM Informix OnLine
システム上にあるものでなければなりません。DB 領域を指定しない場合、
デフォルトは、現行データベースが収容されている DB 領域です。
IN <DB 領域 > 節は、表を分離する必要がある場合に、分離できるようにし
ます。たとえば、stores5 データベースが stockdata DB 領域内にあるが、
customer データを custdata という別の DB 領域に入れたい場合、以下の文
を使用します。
構文
7-93
ストレージ・オプション
図 7-6
他の DB 領域内の表の分離
CREATE DATABASE stores5 IN stockdata
CREATE TABLE customer
(
customer_num
SERIAL(101),
fname
CHAR(15),
lname
CHAR(15),
company
CHAR(20),
address1
CHAR(20),
address2
CHAR(20),
city
CHAR(15),
state
CHAR(2),
zipcode
CHAR(5),
phone
CHAR(18)
)
IN custdata EXTENT SIZE 16
CREATE TABLE orders
(
order_num
SERIAL(1001),
order_date
DATE,
customer_num
INTEGER,
ship_instruct
CHAR(40),
backlog
CHAR(1),
po_num
CHAR(10),
ship_date
DATE,
ship_weight
DECIMAL(8,2),
ship_charge
MONEY(6),
paid_date
DATE
)
EXTENT SIZE 24 NEXT SIZE 12
.
.
.
特に指定のない限り、orders 表は、stockdata 内で、データベースの残りが
付いています。
表に 1 つまたは複数の BLOB 列がある場合、表データと一緒に、または別
の BOLB 領域に、BLOB データを格納できます。詳しくは、7-370 ページの
『データ型』を参照してください。以下の例は、BLOB 領域と DB 領域の指
定方法を示しています。
7-94 IBM Informix SQL リファレンス・ガイド
ストレージ・オプション
この文は、resume 表を作成します。表のデータは、employ DB 領域に格納
されます。resume 列のデータは表と一緒に格納されますが、photo 列に関
連付けられたデータは photo_space という DB 領域に格納されます。
CREATE TABLE resume
(
fname
lname
phone
recd_date
contact_date
comments
resume
photo
)
IN employ
CHAR(15),
CHAR(15),
CHAR(18),
DATETIME YEAR TO HOUR,
DATETIME YEAR TO HOUR,
VARCHAR(250, 100),
TEXT IN TABLE,
BYTE IN photo_space
エクステント・オプション
EXTENT SIZE
< 最初の
KB>
NEXT SIZE
< 次の
KB>
< 最初の KB> 表の最初のエクステントの、KB 単位の長さです。デフォル
トのサイズは 8 KB です。
< 次の KB>
次のエクステントの、KB 単位の長さです。デフォルトのサ
イズは 8 KB です。
エクステント・サイズの計算方法については、IBM Informix SQL チュートリア
ル・ガイド を参照してください。
エクステントの最小サイズは 4 ページです。最小サイズより小さいエクス
テント・サイズ ( または次のエクステント・サイズ ) を指定した場合、デー
タベース・サーバーはエラーを戻します。
構文
7-95
ストレージ・オプション
以下の例は、最初の 20 KB のエクステントを指定し、エクステントの残り
がデフォルト・サイズを使用できるようにします。
CREATE TABLE emp_info
(
f_name CHAR(20),
l_name CHAR(20),
position CHAR(20),
start_date DATETIME YEAR TO DAY,
comments VARCHAR(255)
)
EXTENT SIZE 20
アンロードされた表のエクステント・サイズの修正
生成されたスキーマ・ファイルの CREATE TABLE 文を修正して、アンロー
ドされた表のエクステント・サイズおよび次のエクステント・サイズを修
正できます。詳細については、IBM Informix OnLine 管理者ガイド を参照して
ください。
LOCK MODE 節
LOCK MODE
PAGE
ROW
デフォルトのロック範囲は 1 ページです。
行レベルのロックは、最高レベルの並行性を提供します。一度に多数の行
を使用する場合、ロック管理オーバーヘッドは大きな意味を持ちます。ご
使用の OnLine システムによっては、使用可能なロックの最大数を超えるこ
ともできます。
ページ・ロックは、1 ページ分の行に対する 1 つのロックの取得と解放を行
えるようにします。ページ・ロックは、すべての行を処理するのに使用し
ているのと同じ順序で行がページにまとめられることが分かっている場合
に特に役立ちます。たとえば、表の内容をそのクラスター・インデックス
と同じ順序で処理している場合、ページ・ロックは、特に適しています。
ALTER TABLE 文を使用して、既存の表のロック・モードを変更できます。
7-96 IBM Informix SQL リファレンス・ガイド
参考資料
IN パス名オプション
SE
IN 節の パス名 は、任意の有効なディレクトリーを指定することができ、現
行データベースが含まれているディレクトリーに限定されません。これに
より、データベースには、ネットワーク上の別のホスト・マシン上にある
表をインクルードできます。
UNIX では、パス名 は最大 64 文字の長さで、引用符 (") で囲む必要がありま
す。パス名は、以下の形式になっています。
[/directory-name/...]filename
IN 節のパス名 が表名 とは別のファイル名を指定する場合は、必ず、表名
( ファイル名ではなく ) を使用して、後続の SQL 文の表を参照してくださ
い。
表の作成者は、パス内のすべてのディレクトリーに対して検索権限と、
ファイルを含めるディレクトリーに対する書き込み権限を持っている必要
があります。♦
参考資料
本書では、ALTER TABLE、CREATE INDEX、CREATE DATABASE、および
DROP TABLE 文を参照してください。7-370 ページのデータ型の項も参照し
てください。
IBM Informix SQL チュートリアル・ガイド では、データ整合性、表の作成方
法、およびエクステントのサイズ決めの説明を参照してください。
構文
7-97
CREATE VIEW
CREATE VIEW
目的
CREATE VIEW 文は、データベース内の既存の表およびビューに基づいて新
規ビューを作成するのに使用します。
構文
CREATE VIEW
ビュー
名
7-444 ページ
,
(
< 列名 >
AS
< 列名 >
SELECT
( サブセット )
7-99 ページ
WITH CHECK
OPTION
)
ビュー名 の列を指定する識別子です。指定する列の数は、選
択した列の数と同じでなければなりません。
使用法
以下のリストにある文を除き、表を使用できるすべての SQL 文でビューを
使用できます。
ALTER INDEX
DROP TABLE
ALTER TABLE
LOCK TABLE
CREATE INDEX
RECOVER TABLE
CREATE TABLE
RENAME TABLE
DROP INDEX
UNLOCK TABLE
7-98 IBM Informix SQL リファレンス・ガイド
CREATE VIEW で使用できる SELECT のサブセット
ビューは、名前 viewname を持つ表と同様に動作し、SELECT 文がこの
ビューを使用して実行されるたびに SELECT 文によって戻される行と列の
セットで構成されます。ビューは、基礎表に対する変更を反映しますが、1
つだけ例外があります。ビューが SELECT * 節を使用して定義された場合、
ビューの作成時には基礎表にのみ列が入ります。その後、ALTER TABLE 文
を使用して基礎表に追加された新規列は、ビューには表示されません。
ビューの列のデータ型は、列が取り出された表から継承されます。仮想列
のデータ型は、式の特性から判断されます。
ビューを作成するためには、ビューが導出されるすべての列に対する
SELECT アクセス権が必要です。
SELECT 文は、sysviews システム・カタログ表に格納されます。その後、別
の文でビューを参照したときに、データベース・サーバーは、新規文を実
行する間に、定義する SELECT 文を実行します。
SE
DB
ROLLBACK WORK 文を使用して CREATE VIEW 文を取り消すことはできませ
ん。CREATE VIEW 文が含まれているトランザクションをロールバックした
場合、ビューは残るため、エラー・メッセージは出ません。♦
CREATE SCHEMA 文の外側でビューを作成した場合、-ansi フラグを使用す
るか、または DBANSIWARN を設定すると、警告が出ます。♦
ISQL
I4GL
CREATE VIEW を使用した場合、-ansi フラグを使用するか、または
DBANSIWARN を設定すると、警告が出ます。♦
ESQL
CREATE VIEW で使用できる SELECT のサブセット
SELECT 文は、7-263 ページで説明されている形式の文ですが、ORDER BY
節、INTO TEMP 節、UNION 演算子を持つことはできません。選択リストで
表示ラベルを使用しないでください。表示ラベルは列名として解釈されま
す。
構文
7-99
ビュー列の命名
ビュー列の命名
ビュー名 に列のリストを指定しない場合、ビューは、基礎表の列名を継承
します。以下の例では、ビュー herostock は、SELECT 文の場合と同じ列名
を持っています。
CREATE VIEW herostock AS
SELECT stock_num, description, unit_price, unit, unit_descr
FROM stock WHERE manu_code = "HRO"
SELECT 文が式を戻した場合、ビュー内の対応する列は仮想 列と呼ばれま
す。仮想列に名前を付ける必要があります。表プレフィックスを取り除い
たときに選択された列が重複列名を持っている場合は、列名も付ける必要
があります。たとえば、orders.order_num と items.order_num の両方が
SELECT 文に入っている場合、以下の例に示されているとおり、CREATE
VIEW 文でそれらにラベルを付けるために 2 つの別個の列名を付ける必要が
あります。
CREATE VIEW someorders (custnum,ocustnum,newprice) AS
SELECT orders.order_num,items.order_num,
items.total_price*1.5
FROM orders, items
WHERE orders.order_num = items.order_num
AND items.total_price > 100.00
ビュー内の一部の列に名前を付けなければならない場合は、すべての列に
名前を付ける必要があります。つまり、列リストには、ビューに現れるす
べての列の項目が含まれている必要があります。
SELECT 文でのビューの使用
1 つのビューを、他のビューに関して定義することができます。ただし、
IBM Informix SQL チュートリアル・ガイド にリストされている問い合せに対す
る制限は遵守する必要があります。
7-100 IBM Informix SQL リファレンス・ガイド
WITH CHECK OPTION キーワード
WITH CHECK OPTION キーワード
WITH CHECK OPTION キーワードは、ビューを通じて行われた基礎表に対す
るすべての変更がビューの定義を満足することを確認するよう、データ
ベース・サーバーに指示します。
以下の例は、palo_alto という名前のビューを作成します。このビューは、
Palo Alto という都市に住むすべての顧客について customer 表にあるすべて
の情報を使用します。WITH CHECK OPTION が指定されているため、データ
ベース・サーバーは、palo_alto を使用して、customer に対して行われた変
更がないかチェックします。
CREATE VIEW palo_alto AS
SELECT * FROM customer
WHERE city = "Palo Alto"
WITH CHECK OPTION
ビューからの更新
1 つの表に対してビューが作成される場合、そのビューを定義した SELECT
文に以下のどの項目も含まれていなければ、ビューは更新可能 とされま
す。
!
集合値である、選択リストに入っている列
!
UNIQUE キーワードまたは DISTINCT キーワードを使用する、選択
リストに入っている列
!
GROUP BY 節
!
算術式を使用して作成された、列のための導出値
すなわち、更新可能ビューでは、ビューに値を挿入することにより基礎表
内の値を更新できます。
参考資料
本書では、CREATE TABLE、DROP VIEW、GRANT、および SELECT 文を参照し
てください。
IBM Informix SQL チュートリアル・ガイド では、第 11 章のビューおよびセキュ
リティーの説明を参照してください。
構文 7-101
DATABASE
DATABASE
目的
DATABASE 文を使用して、アクセス可能なデータベースを現行のデータ
ベースとして選択します。
構文
+
DATABASE
データベース
名
7-367 ページ
EXCLUSIVE
使用法
DATABASE 文を使用して、IBM Informix OnLine データベース・サーバー上の
任意のデータベースを選択することができます。他の OnLine データベー
ス・サーバー上のデータベースを選択するには、そのデータベース名とと
もにデータベース・サーバーの名前を指定します。
現行のデータベースが他のデータベース・サーバー上にない限り、
DATABASE 文は他のすべてのデータベースをクローズします。この場合は、
ユーザーが他のデータベース・サーバー上のデータベースをクローズしな
ければならないため、エラーが出ます。
I4GL
ESQL
複数の SQL 文を処理する PREPARE 文には、DATABASE 文を記述できません。
ユーザーが選択するデータベースの型を判別するには、SQLCA 構造体に含
まれている DATABASE 文の後の警告フラグを調べます。SQLCA 構造体の警
告部分の詳細については、本書の第 5 章を参照してください。
7-102 IBM Informix SQL リファレンス・ガイド
使用法
データベースがトランザクションを持っている場合は、DATABASE 実行後
に、sqlcawarn 構造体の 2 番目のエレメントに W が入れられます。各製品
に使用する変数の名前については、次の表をご覧ください。
4GL
ESQL/C
ESQL/COBOL
SQLCA.SQLAWARN[2]
sqlca.sqlwarn.sqlwarn1
SQLWARN1 OF SQLWARN
OF SQLCA
♦
I4GL
ESQL
データベースが ANSI に準拠している場合は、DATABASE 実行後に、
sqlcawarn 構造体の 3 番目のエレメントに W が入れられます。各製品に使
用する変数の名前については、次の表をご覧ください。
ANSI
4GL
ESQL/C
ESQL/COBOL
SQLCA.SQLAWARN[3]
sqlca.sqlwarn.sqlwarn2
SQLWARN2 OF SQLWARN
OF SQLCA
♦
I4GL
ESQL
データベースが IBM Informix OnLine データベースであれば、DATABASE 実
行後に、sqlcawarn 構造体の 4 番目のエレメントに W が入れられます。各
製品に使用する変数の名前については、次の表をご覧ください。
4GL
ESQL/C
ESQL/COBOL
SQLCA.SQLAWARN[4]
sqlca.sqlwarn.sqlwarn3
SQLWARN3 OF SQLWARN
OF SQLCA
♦
SE
SE
I4GL
ESQL
現行ディレクトリー、または DBPATH 環境変数で指定されたディレクト
リーに格納されたデータベースのみが認識されます。♦
現行ディレクトリー、または DBPATH 環境変数によって指定されたディレ
クトリーに常駐していないデータベースを指定したい場合は、DATABASE
キーワードの後ろにデータベースのフル・パス名を評価するプログラム変
数またはホスト変数を指定しなければなりません ( ただし、.dbs 拡張子を
除きます )。♦
構文 7-103
EXCLUSIVE キーワード
I4GL
DATABASE 文は、
2 つの目的 — プロシージャー的および非プロシージャー的
な目的を持っています。DATABASE 文は、指定されたデータベースを現行
データベースにし ( プロシージャー的 )、表の列のように定義した (LIKE
キーワードを使用して ) 変数に関する情報が格納されている場所をコンパ
イラーに知らせます ( 非プロシージャー的 )。
非プロシージャー的目的を果たすためには、DATABASE 文をすべてのルー
チンの外部で実行し、LIKE 節で直接データ入力を行うときに、GLOBALS 文
の前に置かなければなりません。< データベース名 > は、明示的に表現し、
プログラム変数として指定しないでください。この場合、EXCLUSIVE キー
ワードは使用できません。このように DATABASE 文を非プロシージャー的
方法で使用する場合、4GL は、< データベース名 > を現行のデータベース
と指定して MAIN プログラム・ブロックを開始します。
プログラム内のあるデータベースをクローズし、別のデータベースをオー
プンした場合は、後者のデータベースの列のように変数を定義することは
できません。
広域変数がデータベース列のように定義されてはいないが、それでもデー
タベースと対話したい場合は、DATABASE 文を純粋にプロシージャー的に
使用することができます。この場合は、DATABASE 文を関数内または MAIN
プログラム・ブロック内で実行する必要があり、また、すべての DEFINE 文
を関数内で実行する必要があります。またこの場合は、< データベース
名 > をプログラム変数にすることも、EXCLUSIVE キーワードを使用するこ
ともできます。♦
EXCLUSIVE キーワード
EXCLUSIVE キーワードは、データベースを排他モードでオープンし、現行
ユーザー以外のユーザーからアクセスできないようにします。他のユー
ザーからデータベースにアクセスできるようにするには、CLOSE DATABASE
文を実行して、EXCLUSIVE キーワードを指定せずにデータベースを再オー
プンしてください。
I4GL
DATABASE 文を関数または MAIN ブロックの外部で使用する場合は、
EXCLUSIVE キーワードは使用できません。♦
次の文は、stores5 データベースを training データベース・サーバーで排他
モードでオープンします。
DATABASE stores5@training EXCLUSIVE
7-104 IBM Informix SQL リファレンス・ガイド
参考資料
他のユーザーが要求されたデータベースをすでにオープンしている場合は、
排他アクセスが拒否され、エラーが戻され、データベースはオープンされ
ません。
参考資料
本書では、CLOSE DATABASE 文を参照してください。
IBM Informix SQL チュートリアル・ガイド では、データベース設計とデータ・
モデルのインプリメントに関する説明を参照してください。
構文 7-105
DEALLOCATE DESCRIPTOR
DEALLOCATE DESCRIPTOR
目的
DEALLOCATE DESCRIPTOR 文は、指定された < 記述子 > または < 記述子変
数 > に対してすでに割り当てられているシステム記述子領域を解放するた
めに使用します。
構文
ESQL
DEALLOCATE DESCRIPTOR
"
< 記述子 >
"
< 記述子
変数 >
< 記述子 >
ALLOCATE DESCRIPTOR 文で割り当てられたシステム記述子
領域を識別するストリングです。
< 記述子
変数 >
ALLOCATE DESCRIPTOR 文で割り当てられたシステム記述子
領域を識別する埋め込み変数名です。
使用法
DEALLOCATE DESCRIPTOR 文は、< 記述子 > または < 記述子変数 > によっ
て識別されたシステム記述子領域に関連するすべてのメモリーを解放しま
す。すべての値記述子 ( 値記述子内のデータ値に関するすべてのメモリー
を含む ) も解放されます。
< 記述子 > または < 記述子変数 > は、割り当てを解除した後、再利用でき
ます。割り当て解除は、プログラムの終了時に自動的に行われます。
存在していない < 記述子 > または < 記述子変数 > を割り当て解除するとエ
ラーになります。
E/C
DEALLOCATE DESCRIPTOR 文を使用して sqlda 構造体を割り当て解除するこ
とはできません。それを使用できるのは、システム記述子領域に割り当て
られたメモリーを解放するときだけです。♦
7-106 IBM Informix SQL リファレンス・ガイド
参考資料
以下の例は、DEALLOCATE DESCRIPTOR 文を 3 つのプログラム言語に使用し
た場合を示したものです。それぞれのペアで、最初の例は埋め込み変数名
を示し、2 番目の例は割り当て済みシステム記述子領域を識別する引用符
付きストリングを示しています。
図 7-7
IBM Informix ESQL/C の場合のサンプル DEALLOCATE DESCRIPTOR 文
$deallocate descriptor $descname;
$deallocate descriptor "desc1";
図 7-8
IBM Informix ESQL/COBOL の場合のサンプル DEALLOCATE DESCRIPTOR 文
EXEC SQL DEALLOCATE DESCRIPTOR :DESCNAME END-EXEC
EXEC SQL DEALLOCATE DESCRIPTOR "DESC1" END-EXEC
参考資料
本書では、ALLOCATE DESCRIPTOR、DECLARE、DESCRIBE、EXECUTE、
FETCH、GET DESCRIPTOR、OPEN、PREPARE、PUT、 および SET DESCRIPTOR
文を参照してください。
IBM Informix SQL チュートリアル・ガイド では、動的 SQL の説明を参照してく
ださい。
構文 7-107
DECLARE
DECLARE
目的
DECLARE 文は、SELECT または INSERT 文によって指定された行のアクティ
ブ・セットを表すカーソルを定義するために使用します。
構文
I4GL
ESQL
< カーソル
識別子 >
DECLARE
CURSOR
+
FOR
+
ESQL
+
WITH
HOLD
< カーソル
変数 >
+
+
SCROLL
CURSOR
INSERT
文
( サブセット )
7-122 ページ
SELECT
文 ( サブ
セット )
7-115
ページ
FOR
UPDATE
,
FOR
OF
WITH
HOLD
<列>
SELECT
文
7-263
ページ
< 文識別子 >
ESQL
+
< 文識別子
変数 >
EXECUTE
PROCEDURE
文
7-152 ページ
7-108 IBM Informix SQL リファレンス・ガイド
使用法
<列>
カーソルを使って更新できる列です。
< カーソル
識別子 >
その他の文のカーソルの識別子です。< カーソル識別子 >
は、7-403 ページの識別子セグメントで説明されているよう
に、すべての識別子と同じルールに準拠していなければなり
ません。
< カーソル
変数 >
その他の文のカーソルを識別する埋め込み変数名です。
< カーソル変数 > は、7-403 ページの識別子セグメントで説
明されているように、すべての識別子と同じルールに準拠し
ていなければなりません。
< 文識別子 > PREPARE 文で処理された文を表すデータ構造体の識別子で
す (7-221 ページの PREPARE 文を参照してください )。
< 文識別子
変数 >
PREPARE 文で処理された文を表すデータ構造体を識別する
埋め込み変数名です (7-221 ページの PREPARE 文を参照して
ください )。
使用法
DECLARE 文は、カーソルを SELECT、INSERT、または EXECUTE
PROCEDURE 文と、または PREPARE 文で処理された文の文識別子 (< 文識
別子 > または < 文識別子変数 >) と関連付けます。
DECLARE 文は、識別子をカーソルに割り当て、その使用を指定し、カーソ
ルを保持するためのストレージを割り当てるようにプリプロセッサーに指
示します。
SELECT 文で使用するカーソルは、SELECT 文が検索した行のアクティブ・
セット内にある特定の格納場所を示すデータ構造体です。INSERT 操作で複
数の行をデータベースに追加したい場合は、カーソルを INSERT 文に関連付
けます。INSERT 文で使用するカーソルは、INSERT 文がデータベースに追加
する行を示しています。
DECLARE 文は、プログラムの実行中にカーソルを参照する他のすべての文
の前になければなりません。
構文 7-109
使用法
1 つのプロセス内で一度に持つことができるオープン・カーソルの数と
PREPARE 文で処理された文の数の合計は、システム内の使用可能メモリー
の容量によって制限されます。FREE < 文識別子 > または FREE < 文識別子
変数 > を使用して、PREPARE 文で処理された文が保持しているリソース
を解放してください。また、FREE < カーソル識別子 > または FREE < カー
ソル変数 > を使用して、カーソルが保持しているリソースを解放してくだ
さい。
プログラムは、1 つ以上のソース・コード・ファイルからなっていること
があります。デフォルトでは、カーソルの範囲はプログラムに対してグ
ローバルになっています。つまり、1 つのファイルで宣言したカーソルは
他のファイルからも参照できます。
複数ファイル・プログラムで、カーソルの範囲をその宣言ファイルに制限
したい場合は、-local コマンド行オプションを使ってそれらのすべてのファ
イルをプリプロセッサーで処理する必要があります。-local オプションを指
定してプリプロセッサーで処理する場合の詳細説明、制限事項、およびパ
フォーマンスの問題については、ESQL 製品マニュアルを参照してくださ
い。
E/C
E/CO
ESQL
カーソル名や文識別子の代わりに使用する変数は、CHARACTER データ型に
なっていなければなりません。C では、それを $char として定義する必要が
あります。♦
カーソル名や文識別子の代わりに使用する変数は、CHARACTER データ型に
なっていなければなりません。COBOL では、これらの変数は、標準の
CHARACTER 型として宣言しなければなりません。♦
単一の文識別子を使用して複数のカーソルを宣言することができます。た
とえば、次の IBM Informix ESQL/C 例はエラーを戻しません。
図 7-9
IBM Informix ESQL/C での複数カーソルの宣言
$PREPARE
$DECLARE
$DECLARE
$DECLARE
pid FROM
x CURSOR
y SCROLL
z CURSOR
"SELECT * FROM customer";
FOR pid;
CURSOR FOR pid;
WITH HOLD FOR pid;
-ansi コンパイル・フラグをインクルードする ( または DBANSIWARN を設定
する ) と、動的カーソル名または基礎の文識別子名を使用する文に対して
警告が出ます。バージョン 5.0 より前のバージョンでは、一部のエラー検
査はコンパイル・フェーズの前に実行されましたが、現在はこれが実行時
に行われるようになっています。標準的な検査は次のとおりです。
7-110 IBM Informix SQL リファレンス・ガイド
カーソル型の概要
!
カーソルの不正使用 ( つまり、標準カーソルをスクロール・カーソ
ルとして使用 )
!
未宣言カーソルの使用
!
カーソルまたは文の不正な名前 ( 空 )
カーソルまたは文が識別子になっている場合にのみ、コンパイル時に、同
じ名前のカーソルによる複数宣言が検査されます。たとえば、以下の最初
の例のコードはコンパイル・エラーになりますが、2 番目の例のコードは
エラーになりません。
図 7-10
コンパイル・エラーになる複数カーソル宣言
$DECLARE x CURSOR FOR SELECT * FROM customer;
. . .
$DECLARE x CURSOR FOR SELECT * FROM customer; -- error
図 7-11
コンパイル・エラーにならない複数カーソル宣言
$DECLARE x CURSOR FOR SELECT * FROM customer;
. . .
strcpy(s, "x");
$DECLARE $s CURSOR FOR SELECT * FROM customer;
♦
カーソル型の概要
機能的には、カーソルを SELECT 文 (SELECT カーソル ) または INSERT 文
(INSERT カーソル ) と関連付けることができます。SELECT カーソルを使用
して行を更新または削除することができます。このため、このカーソルは
UPDATE カーソルと呼ばれます。
カーソルを 文識別子にも関連付けることができます。このためユーザー
は、動的に PREPARE 文で処理された INSERT または SELECT 文でカーソル
を使用することができ、また、同じカーソルを使って異なる文を異なる時
点で使用することができます。この場合、カーソルの型は、カーソルを
オープンしたときに PREPARE 文で処理した文に応じて異なります (7-210
ページの OPEN 文を参照してください )。
構文 7-111
カーソル特性
SELECT カーソル
SELECT カーソルを使用すれば、以下のように、複数行のデータを走査し
たり、データ行を行別に受け取り変数セットに移動したりできます。
1.
DECLARE 文を使用して SELECT 文用のカーソルを定義します。
2.
OPEN 文を使ってカーソルをオープンします。データベース・サー
バーは、アクティブ・セットの最初の行が入っている場所または構
成されている場所についての照会を処理します。
3.
FETCH 文を使って連続するデータ行を検索します。
4.
アクティブ・セットが不要になったら、CLOSE 文を使ってカーソル
をクローズします。
UPDATE カーソル
UPDATE カーソルは、FOR UPDATE キーワードを使用して宣言されます。
UPDATE カーソルを使用すれば、現在行の修正 ( 更新または削除 ) を行うこ
とができます。
ANSI
ANSI 準拠データベースでは、SELECT カーソルを使用してデータを更新ま
たは削除できます。ただし、それが、7-116 ページに記述されている制約事
項を守っている場合に限られます。カーソルを宣言する場合は、FOR
UPDATE キーワードを使用する必要はありません。♦
INSERT カーソル
INSERT カーソルは、処理効率を高めます (INSERT 文を直接埋め込む場合
と比較して )。INSERT カーソルを使用すれば、バルク挿入データをメモ
リーのバッファーに格納し、バッファーがいっぱいになったらディスクに
書き込むことができます。このプロセスは、プログラムとデータベース・
サーバー間の通信を減らし、挿入の速度を高めます。
カーソル特性
構造上、カーソルを順カーソル ( デフォルト条件 )、スクロール・カーソル
(SCROLL キーワードを使用 )、または HOLD カーソル (WITH HOLD キー
ワードを使用 ) として宣言することができます。これらの構造特性につい
ては、以下のセクションで説明します。
7-112 IBM Informix SQL リファレンス・ガイド
カーソル特性
順カーソル
DECLARE 文で CURSOR キーワードしか使用しない場合は、順カーソルを作
成してください。順カーソルは、次の順番の行しかアクティブ・セットか
ら取り出すことができません。順カーソルは、アクティブ・セットをオー
プンするたびに 1 回しかそれを読み取ることができません。順カーソルを
使用する場合は、各 FETCH 操作のたびに、データベース・サーバーが現在
行の内容を戻し、アクティブ・セット内の次の行を見つけます。
次の IBM Informix ESQL/C 例は、順カーソルを作成します。
図 7-12
IBM Informix ESQL/C プログラムでの順カーソルの作成
$DECLARE s_cur CURSOR FOR
SELECT fname, lname INTO $st_fname, $st_lname
FROM orders WHERE customer_num = 114;
スクロール・ カーソル
SCROLL キーワードはスクロール・カーソルを作成します。スクロール・
カーソルを使用すれば、アクティブ・セットの行を任意の順序で取り出す
ことができます。データベース・サーバーは、アクティブ・セットを保持
するための一時表を作成してスクロール・カーソルをインプリメントしま
す。アクティブ・セットを表として保存しておけば、先頭行、最終行、ま
たは任意の中間行を取り出したり、カーソルのクローズや再オープンを行
わずに、反復して行を取り出したりできます。これらの権限については、
FETCH 文のところで説明します (7-155 ページを参照 )。
データベース・サーバーは、カーソルがクローズされるまで、スクロー
ル・カーソル用のアクティブ・セットを保存します。マルチユーザー・シ
ステムでは、アクティブ・セット行が派生した元の表内の行が、一時表へ
のコピー後に変更されることがあります。トランザクションでスクロー
ル・カーソルを使用する場合は、排他レベルを繰り返し読み込み
(IBM Informix OnLine の場合にのみ使用可能 ) に設定するか、またはトラン
ザクション実行中に表全体を共有モードにロックすることにより、コピー
された行が変更されないようにすることができます。(7-312 ページの SET
ISOLATION 文、および 7-207 ページの LOCK TABLE 文の説明を参照。)
スクロール・カーソルを INSERT 文に関連付けることはできません。また、
FOR UPDATE キーワードでスクロール・カーソルを宣言することはできませ
ん。
構文 7-113
カーソル特性
以下の例はスクロール・カーソルを作成します。
図 7-13
スクロール・カーソルの作成
DECLARE sc_cur SCROLL CURSOR FOR
SELECT * FROM orders
HOLD カーソル
WITH HOLD キーワードを使用する場合は、HOLD カーソルを作成してくだ
さい。HOLD カーソルは、トランザクションの終了まで保持されます。
WITH HOLD キーワードを使って、順カーソルもスクロール・カーソルも作
成できます。次の例は HOLD カーソルを作成します。
図 7-14
HOLD カーソルの作成
DECLARE hld_cur CURSOR WITH HOLD FOR
SELECT customer_num, lname, city FROM customer
HOLD カーソルを使用すれば、複数のトランザクションにまたがって、割
り込みなしに行のセットにアクセスすることができます。すべてのカーソ
ルは、通常、トランザクションの終了時にクローズされますが、HOLD
カーソルはクローズされません。HOLD カーソルは、以下の 4GL コードの
フラグメントに示されているような形で使用できます。このコード・フラ
グメントは、HOLD カーソルを主カーソルとして使用して 1 つのレコード・
セットを走査し、順カーソルを従カーソルとして使用して、別の表に入っ
ているレコードをポイントしています。主カーソルによって走査されたレ
コードは、従カーソルによってポイントされたレコードを更新するための
基礎になります。この例では、最初の WHILE ループの各反復の終了時に、
COMMIT WORK 文が HOLD カーソル c_master をオープン状態にしますが、
順カーソル c_detail をクローズしてすべてのロックを外します。この技法
により、データベース・サーバーがロックや未完了トランザクションに使
用するリソースが最小化されるため、他のユーザーは更新された行に即時
アクセスすることができます。
図 7-15
IBM Informix 4GL プログラムにおける HOLD カーソルの使用
DEFINE p_custnum INTEGER, p_orddate DATE, save_status INTEGER
PREPARE st_1 FROM
"SELECT order_date ",
"FROM orders WHERE customer_num = ? FOR UPDATE"
DECLARE c_detail CURSOR FOR st_1
DECLARE c_master CURSOR WITH HOLD FOR
SELECT customer_num
7-114 IBM Informix SQL リファレンス・ガイド
更新カーソルの宣言
FROM customer WHERE city = "Pittsburgh"
OPEN c_master
IF status = 0 { the open worked } THEN
FETCH c_master INTO p_custnum { discover first customer }
END IF
WHILE status = 0 { while no errors and not end of pittsburgh customers }
BEGIN WORK { start transaction for customer p_custnum }
OPEN c_detail USING p_custnum
IF status = 0 { detail open succeeded } THEN
FETCH c_detail INTO p_orddate { get first order }
END IF
WHILE status = 0 { while no errors and not end of orders }
UPDATE orders SET order_date = "08/15/90"
WHERE CURRENT OF c_detail
IF status = 0 { update was ok } THEN
FETCH c_detail INTO p_orddate { next order }
END IF
END WHILE
IF status = NOTFOUND { correctly updated all found orders } THEN
COMMIT WORK { make updates permanent, set status }
ELSE { some failure in an update }
LET save_status = status { save error for loop control }
ROLLBACK WORK
LET status = save_status { force loop to end }
END IF
IF status = 0 { all updates, and the commit, worked ok } THEN
FETCH c_master INTO p_custnum { next customer? }
END IF
END WHILE
CLOSE c_master
HOLD カーソルをクローズする場合は、CLOSE 文を使用して明示的にク
ローズするか、または CLOSE DATABASE 文を使用して暗黙的にクローズし
ます。(CLOSE DATABASE はすべてのカーソルをクローズします。)
更新カーソルの宣言
FORUP DATE キーワードは、更新が可能になったことをデータベース・サー
バーに通知します。このため、SELECT カーソルの場合よりも厳重なロッ
クを使用できるようになります。この節を使用しない限り、カーソルで
データを修正することはできません。ユーザーは更新できる特定の列を指
定することができます。
UPDATE カーソルを作成したら、WHERE CURRENT OF 節を指定した
UPDATE 文または DELETE 文を使用して、現在選択されている行を更新した
り削除したりできます。CURRENT OF という語は、最も新しく取り出され
た行を指します。この語は、WHERE 節の通常テスト式に代わるものです。
構文 7-115
更新カーソルの宣言
UPDATE カーソルを使用すれば、UPDATE 文では行えない更新を行うこと
ができます。それは、更新の決定と新規データ項目の値が、どちらも行の
元の内容に基づいているからです。UPDATE 文は、更新する表に対して照会
をすることはできません。
ANSI
単一の SELECT カーソルは、FOR UPDATE キーワードなしで宣言されていて
も、潜在的にはすべて UPDATE カーソルです。( 次のセクションの SELECT
文に関する制限事項を参照してください。) ♦
UPDATE カーソルと関連する SELECT 文のサブセット
必ずしもすべての SELECT 文が UPDATE カーソルに関連付けられているわ
けではありません。DECLARE 文にインクルードされている ( 直接または
PREPARE 文で処理されて ) SELECT 文は、次の制限事項に準拠していなけ
ればなりません。
!
データの選択は 1 つの表からしか行えません。
!
文には集計関数 (AVG、COUNT、MAX、MIN、または SUM) をインク
ルードすることはできません。
!
文には、以下の節またはキーワードをインクルードすることはでき
ません。
DISTINCT
INTO TEMP
UNION
GROUP BY
ORDER BY
UNIQUE
SELECT 構文と使用法の詳しい説明については、7-263 ページの SELECT 文
の説明を参照してください。
UPDATE カーソルによるロック
プログラムが SELECT 文の一部として取り出した行を更新 ( または削除 ) す
る可能性があることを、データベース・サーバーに知らせるために、
UPDATE カーソルを宣言します。UPDATE カーソルは、取り出した行に対
して増進可能な ロックを使用します。他のプログラムはロックされた行を
読み取ることはできますが、増進可能なロックや書き込みロックをかける
ことはできません。行を変更する前に、行ロックは排他ロックに置かれま
す。
7-116 IBM Informix SQL リファレンス・ガイド
更新カーソルの宣言
SE
IBM Informix SE データベース・サーバーは、増進可能なロックを使用しませ
ん。プログラムが行を修正する前に、データベース・サーバーはその行の
排他ロックを取得します。♦
UPDATE カーソル WITH HOLD を宣言することはできますが、それを行う唯
一の理由は、長い一連の更新を小さなトランザクションに分割することに
あります。ある操作に大量の行の取り出しや更新が含まれている場合は、
データベース・サーバーが管理できるロック表はオーバーフローすること
があります。このオーバーフローを防止するための通常の方法は、更新す
る表全体をロックすることです。これが不可能な場合は、代替法として、
HOLD カーソルで更新し、COMMIT WORK を繰り返し実行します。ただし、
このようなアプリケーションの計画は細心の注意を払って行う必要があり
ます。なぜならば、COMMIT WORK は、HOLD カーソルで掛けられたロッ
クも含め、すべてのロックを外すからです。
列のリストによる FOR UPDATE の使用
UPDATE カーソルを宣言する場合、更新を特定の列に限定することができ
ます。それを行うには、OF キーワードと列のリストをインクルードしま
す。後続の UPDATE 文では、指定された列のみを修正するだけで済みます。
それらの列は、SELECT 節の選択リストに含まれている必要はありません。
この列制限は、UPDATE 文にのみ適用されます。OF 列 節は、WHERE
CURRENT OF 節を使用する後続の DELETE 文には影響を与えません。
(DELETE 文はすべての列を修正します。)
列を指定することの大きな利点は、プログラムの可読性の向上とプログラ
ミング・エラーの防止です。( データベース・サーバーは他の列の更新を拒
否します。) SELECT 文が次の 2 つの基準を満たす場合、もう 1 つの利点は
速度です。
!
インデックスを使用して SELECT 文を処理できる
!
リストされた列は、SELECT 文の処理に使用されるインデックスの
一部ではない
構文 7-117
更新カーソルの宣言
更新する列が SELECT 文の処理に使用されるインデックスの一部であれば、
データベース・サーバーは、更新した各行のリストを保管して、行が 2 回
更新されることがないようにする必要があります。OF キーワードを使用し
て更新可能な列を指定する場合は、データベース・サーバーは、更新済み
行のリストを保管するかどうかを決定します。そのリストが不要であると
データベース・サーバーが決定した場合は、リストを保管する作業がなく
なるため、パフォーマンス上の利益が得られます。OF キーワードを使用し
ない場合は、更新済み行のリストを保管する必要がなくても、データベー
ス・サーバーがそれを保管します。
次の例には、更新する列を限定する 4GL DECLARE 文が含まれています。
図 7-16
IBM Informix 4GL プログラムでの OF キーワードの使用
DECLARE up_curs CURSOR FOR
SELECT * FROM customer WHERE customer_num > 110
FOR UPDATE OF fname, lname
次の例には、DELETE 文で UPDATE カーソルを使用して現在行を削除する
IBM Informix ESQL/C コードが含まれています。行が削除されるたびに、カー
ソルは行間に残っています。データを削除したら、ユーザーは、FETCH 文
を使用してカーソルを次の行へ進めてから、後続の DELETE 文または
UPDATE 文のカーソルを参照することができます。
図 7-17
行を削除するための IBM Informix ESQL/C における UPDATE カーソルの使用
$declare q_curs cursor for
select * from customer where lname matches $last_name
for update;
$open q_curs;
for (;;)
{
$fetch q_curs into $cust_rec;
if (sqlca.sqlcode != 0)
break;
/* Display customer values and prompt for answer */
if (answer[0] == 'y')
$delete from customer where current of q_curs;
if (sqlca.sqlcode != 0)
break;
}
$close q_curs;
7-118 IBM Informix SQL リファレンス・ガイド
カーソルと PREPARE 文で処理された文との関連付け文
カーソルと PREPARE 文で処理された文との関連付け
文
PREPARE 文を使用すれば、SQL 文のテキストを実行時にアセンブルし、そ
の文テキストをデータベース・サーバーに渡して実行することができます。
動的に PREPARE 文で処理された SELECT 文が複数のデータ行を作成すると
予想される場合は、PREPARE 文で処理した文をカーソルと関連付ける必要
があります。(PREPARE 文による SQL 文の処理の詳細については、7-221
ページの PREPARE 文の説明を参照してください。)
PREPARE 文の結果は、PREPARE 文で処理した文テキストを表すデータ構造
体である文識別子 (< 文識別子 > または < 文識別子変数 >) です。カーソル
と文識別子を関連付けて、文テキスト用のカーソルを宣言してください。
順カーソルを PREPARE 文で処理された任意の SELECT 文に関連付けること
ができます。スクロール・カーソルを INSERT 文に関連付けることはできま
せん。また、FOR UPDATE 節をインクルードするように PREPARE 文で処理
された SELECT 文に関連付けることもできません。
あるカーソルをオープンし、使用し、クローズしたら、その文識別子の下
で別の文を PREPARE 文で処理することができます。こうして、1 つのカー
ソルを異なる時点で異なる文に使用することができます。
次の例には、SELECT 文を PREPARE 文で処理し、処理済み文テキストに対
してカーソルを宣言する 4GL コードが含まれています。st_1 文識別子は、
まず、PREPARE 文で SELECT 文から処理されます。次に、st_1 に対して
カーソル c_detail が宣言されます。
図 7-18
IBM Informix 4GL プログラムにおける PREPARE 文で処理された文に対するカーソル
の宣言
PREPARE st_1 FROM
"SELECT order_date ",
"FROM orders WHERE customer_num = ?"
DECLARE c_detail CURSOR FOR st_1
PREPARE 文で処理された SELECT 文を使用してデータを修正したい場合
は、次の 4GL 例に示されているように、PREPARE 文で処理したい文テキス
トに FOR UPDATE 節を追加してください。
構文 7-119
トランザクションでのカーソルの使用
図 7-19
IBM Informix 4GL プログラムにおける FOR UPDATE を指定した SELECT に対する
カーソルの宣言
PREPARE sel_1 FROM "SELECT * FROM customer FOR UPDATE"
DECLARE sel_curs CURSOR for sel_1
トランザクションでのカーソルの使用
修正をロールバックするには、その修正をトランザクション内で実行しな
ければなりません。トランザクションが開始されるのは、BEGIN WORK 文
を実行したときだけです。
ANSI
ANSI 準拠のデータベースでは、トランザクションは常に有効になっていま
す。♦
データベース・サーバーは、SELECT および UPDATE カーソルに対して次
のガイドラインを実行します。これらのガイドラインは、修正を正しくコ
ミットまたはロールバックできるようにするためのものです。
!
INSERT または UPDATE カーソルをトランザクション内でオープン
する。
!
PUT および FLUSH 文を 1 つのトランザクション内にインクルードす
る。
!
データを 1 つのトランザクション内で修正 ( 更新、挿入、または削
除 ) する。
データベース・サーバーでは、トランザクションの外部で HOLD カーソル
のオープンとクローズを行うことができます。ただし、所定の修正に関係
するすべての行を取り出してから、すべての修正を単一トランザクション
内で実行する必要があります。HOLD または UPDATE カーソル以外のカー
ソルをトランザクションの外部でオープンしたりクローズしたりすること
はできません。
次のコード例は、データベースが update 行を実行しようとするとエラーを
作成します。
$declare q_curs cursor for
select * from customer where lname matches $last_name
for update;
$open q_curs;
$fetch q_curs into $cust_rec;
$begin work;
$update customer where current of q_curs;
$commit work;
7-120 IBM Informix SQL リファレンス・ガイド
トランザクションでのカーソルの使用
次のコード例は、データベースが update 行を実行しようとしたときにエ
ラーを作成しません。
$declare q_curs cursor for
select * from customer where lname matches $last_name
for update;
$open q_curs;
$begin work;
$fetch q_curs into $cust_rec;
$update customer where current of q_curs;
$commit work;
ある行をあるトランザクション内で更新すると、その行は、カーソルがク
ローズされるか、またはそのトランザクションがコミットまたはロール
バックされるまで、ロックされた状態を続けます。トランザクションが有
効でないときに行を更新した場合、行ロックは、修正された行がディスク
に書き込まれるときにアンロックされます。
トランザクションの外部で行の更新または削除を行う場合は、操作をロー
ルバックすることはできません。
INSERT 文に対して宣言されたカーソルは INSERT カーソルです。トランザ
クションを使用するデータベースでは、INSERT カーソルが HOLD カーソ
ルと一緒に宣言されていない限り、それをトランザクションの外部でオー
プンすることはできません。
構文 7-121
順カーソルと関連する INSERT のサブセット
順カーソルと関連する INSERT のサブセット
INSERT カーソルを作成するには、順カーソルを制限付きフォームの
INSERT 文と関連付けます。INSERT 文には VALUES 節が含まれていなければ
なりません。SELECT 文を含めることはできません。
次の例には、INSERT カーソルを宣言する 4GL コードが含まれています。
図 7-20
IBM Informix 4GL プログラムにおける INSERT カーソルの宣言
DECLARE ins_cur CURSOR FOR
INSERT INTO customer VALUES (p_customer.*)
次の例には、INSERT カーソルを宣言する IBM Informix ESQL/C コードが含ま
れています。
図 7-21
IBM Informix ESQL/C プログラムにおける INSERT カーソルの宣言
$DECLARE ins_cur CURSOR FOR INSERT INTO stock VALUES
($stock_no,$manu_code,$descr,$u_price,$unit,$u_desc);
INSERT カーソルはデータの行のみを挿入します。このカーソルをデータ
の取り出しに使用することはできません。INSERT カーソルをオープンす
ると、行のブロックを入れるためのバッファーがメモリー内に作成されま
す。バッファーは、PUT 文の実行中にデータ行を受け取ります。バッ
ファーがいっぱいになると、これらの行はディスクに書き込まれます。
バッファーがいっぱいになっていなくても、CLOSE、FLUSH、または
COMMIT WORK 文を使用してそれをフラッシュすることができます。この
点については、PUT および CLOSE 文の説明のところでさらに詳しく解説し
ます。プログラム終了の前にバッファー内の行をデータベースに挿入する
には、INSERT カーソルをクローズする必要があります。カーソルを正し
くクローズしないと、データが失われることがあります。
7-122 IBM Informix SQL リファレンス・ガイド
参考資料
INSERT カーソルと HOLD の併用
HOLD カーソルを INSERT 文に関連付ける場合、トランザクションを使用
して一連の長い PUT 文を PUT 文のより小さなセットに分割することができ
ます。PUT 文でバッファーがいっぱいになり、データベースへの自動書き
込みがトリガーされるのを待つことなく、ユーザー自身が COMMIT WORK
文を実行して行バッファーをフラッシュすることができます。HOLD カー
ソルを使用した場合は、COMMIT WORK 文は挿入済み行をコミットします
が、さらに挿入が行われるようにカーソルをオープン状態にしておきます。
保留された非コミットの作業がデータベース・サーバーのリソースを消費
するので、この方法は、大量の行を挿入する場合に適しています。
参考資料
本書では、CLOSE、DELETE、FETCH、FREE、INSERT、OPEN、PREPARE、
PUT、SELECT、および UPDATE 文を参照してください。
IBM Informix SQL チュートリアル・ガイド では、カーソルとデータ変更の説明
を参照してください。
構文 7-123
DELETE
DELETE
目的
DELETE 文は、1 つ以上の行を表から削除するために使用します。
構文
DELETE FROM
表名
7-440
ページ
WHERE
ビュー名
7-444
ページ
シノニム名
7-438
ページ
I4GL
ESQL
条件
7-350
ページ
CURRENT OF
< カーソル
名>
< カーソル名 > 前に宣言して位置付けしたカーソルの名前です。
使用法
WHERE 節を指定しないで DELETE 文を使用すると、表内のすべての行が削
除されます。
いくつかのトランザクションを使用するデータベース内のトランザクショ
ンの外部で DELETE 文を使用すると、実行している各 DELETE 文が単一の
トランザクションとして扱われます。
トランザクション内で DELETE 文によって影響を受ける各行は、そのトラ
ンザクションの実行中ロックされます。したがって、大量の行に影響を与
える単一の DELETE 文は、その操作全体が完了するまでロックされます。
影響を受ける行が非常に多い場合は、オペレーティング・システムが同時
ロックの最大数として設定している限度を超えることがあります。このよ
うな状態になった場合は、DELETE 文の範囲を縮小するか、または表全体を
ロックしてからこの文を実行してください。
7-124 IBM Informix SQL リファレンス・ガイド
WHERE 節
ビュー名を指定する場合は、そのビューを更新可能にしておく必要があり
ます。更新可能ビューの説明については、7-101 ページの『ビューからの更
新』を参照してください。
DB
ISQL
SQL メニューで作業しているときに WHERE 節を省略すると、IBM Informix
SQL から、すべての行を表から削除することを確認するプロンプトが出ま
す。コマンド・ファイル内で DELETE 文を実行する場合は、プロンプトは
出ません。♦
ANSI
文は、ANSI 準拠データベースの暗黙的なトランザクションの内部で処理さ
れます。したがって、DELETE 文をトランザクションの外部に置くことはで
きません。♦
WHERE 節
WHERE 節は、削除したい 1 つ以上の行を指定するために使用します。
WHERE 条件は、SELECT 文の場合の条件と同じです。たとえば次の文は、
オーダー番号が 1043 未満の項目
項目表の行をすべて削除します。
項目
DELETE FROM items
WHERE order_num < 1034
DB
表のすべての項目を選択する WHERE 節をインクルードした場合は、
IBM Informix SQL は、プロンプトを出さず、すべての行を削除します。♦
ISQL
CURRENT OF 節
I4GL
CURRENT OF 節を使用するには、前もって、FOR UPDATE 節を伴う DECLARE
文を使用して < カーソル名 > を宣言しておかなければなりません。
ESQL
CURRENT OF 節を使用する場合は、DELETE 文が、カーソルの現行位置にあ
るアクティブ・セットの行を削除します。削除されると、現在行はなくな
ります。FETCH 文でカーソルを位置変更するまで、カーソルを使用して行
の削除や更新を行うことはできません。♦
ANSI
ANSI 準拠データベースでは、SELECT カーソルは潜在的に UPDATE カーソ
ルです。CURRENT OF 節は、どの SELECT カーソルとでも使用できます。♦
I4GL
ESQL
構文 7-125
参考資料
参考資料
本書では、INSERT、UPDATE、DECLARE、 および FETCH を参照してくださ
い。
IBM Informix SQL チュートリアル・ガイド では、カーソルとデータ変更の説明
を参照してください。
7-126 IBM Informix SQL リファレンス・ガイド
DESCRIBE
DESCRIBE
目的
DESCRIBE 文は、PREPARE 文で処理された文を実行する前に、それに関す
る情報を取得するために使用します。DESCRIBE 文は、PREPARE 文で処理
された文の型を戻し、SELECT または INSERT 文の場合は、照会から戻され
た値の数、データ型、およびサイズ、列または式の名前を戻します。これ
らの情報は、システム記述子領域に格納されるか、または ESQL/C の場合
は、sqlda 構造体に格納されます。
構文
ESQL
+
DESCRIBE
USING
SQL DESCRIPTOR
< 文識別子 >
< 文識別子
変数 >
"
< 記述子 >
"
< 記述子
変数 >
E/C
INTO
<sqlda ポインター >
< 記述子 >
割り当て済みシステム記述子領域を識別する引用符付きスト
リングです。
< 記述子
変数 >
割り当て済みシステム記述子領域を識別する埋め込み変数名
です。
<sqlda
sqlda 構造体をポイントします。
ポインター >
< 文識別子 > PREPARE 文で処理された文を表すデータ構造体の識別子で
す。(7-221 ページの PREPARE 文を参照してください。)
< 文識別子
変数 >
PREPARE 文で処理された文を表すデータ構造体を識別する
埋め込み変数名です。(7-221 ページの PREPARE 文を参照して
ください。)
構文 7-127
使用法
使用法
DESCRIBE 文を使用すれば、PREPARE 文で処理された文の型および
PREPARE 文で処理された照会が実行時に戻すデータの数と型を、実行時に
判別することができます。この情報があれば、取り出した値を保持したり、
それらを取り出した後で表示または処理したりするためのメモリーを割り
当てるコードを書くことができます。
文型の記述
DESCRIBE 文は、文識別子を PREPARE 文から入力として受け取ります。
DESCRIBE 文を実行すると、データベース・サーバーは、文型を示すため
『SQLCA を
に、SQLCA の SQLCODE フィールドの値を設定します ( 第 5 章、
使用したエラー処理』を参照 )。つまり、文が始まるキーワードです。
PREPARE 文で処理された文テキストに複数の SQL 文が含まれている場合
は、DESCRIBE 文は、テキスト内の最初の文の型を戻します。
SQLCODE がゼロに設定されて、SELECT 文に INTO TEMP 節が伴っていない
ことを示します。これが最も普通の状態です。その他の SQL 文の場合は、
SQLCODE が正の整数に設定されます。
この数を定義済み定数名でテストすることができます。IBM Informix ESQL/C
では、定数名は sqlstype.h ヘッダー・ファイルに定義済みです。可能な値
とその定数名の印刷リストが、各組込み言語製品のマニュアルに記載され
ています。
DESCRIBE 文は、他の文と異なる方法で SQLCODE フィールドを使用し、正
常に実行された場合、非ゼロ値を戻します。必要であれば、この方法を取
り入れるように、標準のエラー検査ルーチンを修正することができます。
WHERE 節の存在の検査
DESCRIBE 文が、PREPARE 文で処理された文に、WHERE 節を伴わない
UPDATE または DELETE 文が含まれていることを検出した場合、DESCRIBE
文は、次の SQLCA 変数を W に設定します。
ESQL/C
sqlca.sqlwarn.sqlwarn4
ESQL/COBOL
SQLWARN4 OF SQLWARN OF SQLCA
7-128 IBM Informix SQL リファレンス・ガイド
SELECT によって戻された、または INSERT に必要な値の記述
WHERE 節が伴っていない場合は、更新または削除アクションが表全体に適
用されます。この変数を検査することにより、表に対する意図的でない一
括変更を防止できます。
SELECT によって戻された、または INSERT に必要な値
の記述
PREPARE 文で処理された文テキストに、INTO TEMP 節を伴わない SELECT
文、または INSERT 分が含まれている場合は、DESCRIBE は、SELECT または
INSERT リストに含まれている各列または式の記述も戻します。これらの記
述は、sqlda 構造体を指すポインターまたはシステム記述子領域に入れられ
ます。
この記述には、次の情報が含まれています。
!
表で定義されている列のデータ型
!
列の長さ ( バイト単位 )
!
列または式の名前
sqlda 構造体と記述の詳細については、第 6 章、『記述子の使用』を参照し
てください。
システム記述子領域の情報を修正し、その情報を、EXECUTE、FETCH、
OPEN、PUT などの USING SQL DESCRIPTOR 節をサポートする文で使用する
ことができます。記述した値を受け取るメモリーのアドレスを指示するに
は、システム記述子領域を修正する必要があります。データ型を他の任意
の互換型に変更することができます。この変更を行うと、データを取り出
すときにデータ変換が行われます。
sqlda データ構造体とシステム記述子領域に入っているデータの解釈と使用
の詳細については、本書の 第 6 章 に加え、組み込む言語製品のマニュアル
も参照してください。
構文 7-129
USING SQL DESCRIPTOR 節
USING SQL DESCRIPTOR 節
USING SQL DESCRIPTOR 節を使用すれば、SELECT または INSERT リストの記
述を、ALLOCATE DESCRIPTOR 文によって作成されたシステム記述子領域に
格納することができます。PREPARE 文で処理された文の列に関する情報を
システム記述子領域から取得することができます。sqlda 構造体ではなく、
システム記述子領域をポイントするには、USING SQL DESCRIPTOR キーワー
ドを使用します。
DESCRIBE 文は、システム記述子領域の COUNT フィールドを SELECT また
は INSERT リスト内の値の数に設定します。COUNT がシステム記述子領域
の項目記述子の個数より多い場合は、システムがエラーを戻します。多く
なければ、TYPE、LENGTH、NAME、SCALE、PRECISION、 および NULLABLE
情報が設定され、DATA フィールド用のメモリーが自動的に割り当てられま
す。
DESCRIBE 文が実行されると、SCALE および PRECISION フィールドに、それ
ぞれ列のスケールと精度が入れられます。SCALE と PRECISION が SET
DESCRIPTOR 文に設定され、TYPE が DECIMAL または MONEY に設定される
と、10 進数値のスケールと精度に調整するために LENGTH フィールドが修
正されます。TYPE が DECIMAL または MONEY に設定されていないと、
SCALE と PRECISION の値は設定されず、LENGTH は影響を受けません。
INTO sqlda ポインター節
E/C
INTO sqlda ポインター 節を使用すれば、SELECT または INSERT リストの記
述を sqlda ポインターに格納することができます。DESCRIBE 文は、
sqlda.sqld 変数を SELECT または INSERT リスト内の値の数に設定します。
sqlda 構造体には、データ記述子 (sqlvar 構造体 ) の配列が、SELECT または
INSERT リスト内の各値ごとに 1 つずつ含まれています。DESCRIBE 文が実
行されると、sqlda.sqlvar 構造体には、TYPE、LENGTH、および NAME
フィールド・セットが入れられます。
DESCRIBE 文は、sqlda ポインターがプログラムで宣言されると、そのポイ
ンター用のメモリーを割り当てます。ただし、アプリケーション・プログ
ラムは、sqlvar.sqldata フィールドのストレージ域を指定しなければなりま
せん。♦
7-130 IBM Informix SQL リファレンス・ガイド
参考資料
E/CO
これらの製品は、sqlda 構造体を指すポインターをサポートしていません。
それを使用する DESCRIBE 文を実行しようとすると、これらの製品からエ
ラーが戻されます。IBM Informix ESQL/COBOL の DESCRIBE 文では、
ALLOCATE DESCRIPTOR 文で割り当てられたシステム記述子領域しか使用で
きません。列の内容を表示するには、DESCRIBE 文に続いて GET
DESCRIPTOR 文を、指定のシステム記述子に対して実行します。♦
次の例のペアは、3 つの IBM Informix ESQL 製品で DESCRIBE 文のシステム記
述子を使用した場合を示しています。各ペアの最初の例では、記述子は引
用符付きストリングです。各ペアの 2 番目の例では、記述子は埋め込み変
数名です。
図 7-22
ESQL/C におけるシステム記述子文によるサンプル DESCRIBE 操作
main()
{
. . .
$ ALLOCATE DESCRIPTOR "desc1" WITH MAX 3;
$ PREPARE curs1 FROM "SELECT * FROM tab";
$ DESCRIBE curs1 USING SQL DESCRIPTOR "desc1";
}
$ DESCRIBE curs1 USING SQL DESCRIPTOR $desc1var;
図 7-23
ESQL/COBOL におけるシステム記述子文によるサンプル DESCRIBE 操作
EXEC SQL ALLOCATE DESCRIPTOR "DESC1" WITH MAX 3 END-EXEC.
EXEC SQL PREPARE CURS1 FROM "SELECT * FROM TAB" END-EXEC.
EXEC SQL DESCRIBE CURS1 USING SQL DESCRIPTOR "DESC1" END-EXEC.
EXEC SQL DESCRIBE CURS1 USING SQL DESCRIPTOR :DESC1VAR END-EXEC.
参考資料
本書では、動的管理文の使用の詳細について、ALLOCATE
DESCRIPTOR、DEALLOCATE DESCRIPTOR、DECLARE、EXECUTE、FETCH、
GET DESCRIPTOR、OPEN、PREPARE、PUT、および SET DESCRIPTOR 文を参
照してください。
IBM Informix SQL チュートリアル・ガイド では、DESCRIBE 文の説明を参照して
ください。
構文 7-131
参考資料
FETCH...USING DESCRIPTOR または INSERT...USING DESCRIPTOR 文を使用する
場合の、sqlda ポインターまたはシステム記述子領域の使用法について詳し
くは、アプリケーション開発支援ツールのマニュアルを参照してください。
また、第 6 章の sqlda 構造体に関する説明も参照してください。
7-132 IBM Informix SQL リファレンス・ガイド
DROP AUDIT
DROP AUDIT
目的
DROP AUDIT 文は、更新記録ファイルを削除するために使用します。
構文
SE
+
DROP AUDIT FOR
表名
7-440 ページ
シノニム名
7-438 ページ
使用法
データベース・ファイルのバックアップを取る作業が終わったら、DROP
AUDIT 文を使用して、以前の更新記録ファイルを削除します。CREATE
AUDIT 文を使用して表に対する新規の更新記録を開始します。
DROP AUDIT 文を使用するには、表の所有者であるか、または DBA 状態に
なっていなければなりません。
次の例では、stores5 データベースをバックアップしたところであると想定
しています。この例は、orders 表の既存の更新記録を削除します。
DROP AUDIT FOR orders
参考資料
本書では、CREATE AUDIT および RECOVER TABLE 文を参照してください。
IBM Informix SE Administrator’s Guide では、更新記録の説明を参照してくださ
い。
構文 7-133
DROP DATABASE
DROP DATABASE
目的
DROP DATABASE 文は、システム・カタログ、インデックス、およびデータ
を含め、データベース全体を削除するために使用します。
構文
+
DROP DATABASE
データ
ベース名
7-367 ページ
使用法
DROP DATABASE 文を正常に実行するには、DBA 状態になっているか、また
はユーザー informix でなければなりません。そうでないと、データベー
ス・サーバーはエラー・メッセージを出し、データベースを削除しません。
現行データベースや、他のユーザーが使用しているデータベースは削除で
きません。データベースのすべてのユーザーは、まず、CLOSE DATABASE 文
を実行する必要があります。
DROP DATABASE 文は、複数文 PREPARE 文では表示できません。
次の文は、stores5 データベースを削除します。
DROP DATABASE stores5
SE
DB
ISQL
トランザクション付きデータベースを削除すると、そのデータベースに関
連するトランザクション・ログ・ファイルが削除されます。♦
この文は注意して使用してください。DBA アクセス権を持っている場合は、
DB-Access および IBM Informix SQL は、データベース全体を削除することを
確認するプロンプトを出しません。♦
7-134 IBM Informix SQL リファレンス・ガイド
参考資料
I4GL
ESQL
SE
単一のデータベース名をプログラムまたはホスト変数に使用することもで
きるし、完全データベース・サーバーおよびデータベース名を使用するこ
ともできます。詳細については、7-367 ページのデータベース名の説明を参
照してください。♦
データベース表とそのインデックス用に作成されたファイル以外のファイ
ルがデータベース・ディレクトリーに含まれている場合は、DROP
DATABASE 文はそのディレクトリーを削除しません。
次の例に示されているように、データベースのフル・パス名を引用符で囲
んで指定することができます。
DROP DATABASE "/u/training/stores5"
ROLLBACK WORK 文を使用して DROP DATABASE 文を元に戻すことはできま
せん。DROP DATABASE 文が含まれているトランザクションをロールバック
する場合は、データベースは再生されず、エラー・メッセージは出ませ
ん。♦
SE
I4GL
ローカル・ディレクトリーまたは DBPATH に入っていないデータベースを
指定するには、完全オペレーティング・システム・ファイルをデータベー
ス名の変数 に入れます。
ESQL
LET db_var = "/u/training/stores5"
DROP DATABASE db_var
♦
参考資料
本書では、CREATE DATABASE および CLOSE DATABASE 文を参照してくださ
い。
構文 7-135
DROP INDEX
DROP INDEX
DROP INDEX 文は、インデックスを削除するために使用します。
構文
+
DROP INDEX
インデックス
名
7-417 ページ
使用法
DROP INDEX 文を使用するには、インデックスの所有者であるか、または
DBA 状態になっていなければなりません。
次の例は、joed が所有している o_num_ix インデックスを削除します。
stores5 データベースは現行データベースでなければなりません。
DROP INDEX stores5:joed.o_num_ix
列 ( 複数の場合もある ) の DROP INDEX 文を使用して、CREATE TABLE 文で
作成された一意性制約を削除することはできません。CREATE TABLE または
ALTER TABLE 文で制約として作成されたインデックスを削除するには、
ALTER TABLE 文を使用する必要があります。
DB
ESQL
インデックスが制約によって共有されている場合は、そのインデックスが
実際に削除されることはありません。代わりに、次のフォーマットを使用
して、sysindexes システム・カタログ表にリネームされます。
[space]<tabid>_<constraint id>
ここで、tabid および constraint_id は、それぞれ systables および sysconstraints システム・カタログ表から取得したものです。sysconstraints の
idxname ( インデックス名 ) 列は、次に、この変更を反映するように更新さ
れます。
このインデックスが、参照制約によって共用されている一意性インデック
スであれば、そのインデックスは、リネームされた後、重複インデックス
に低下します。♦
7-136 IBM Informix SQL リファレンス・ガイド
参考資料
SE
ROLLBACK WORK 文を使用して、DROP INDEX 文を元に戻すことはできませ
ん。DROP INDEX 文が含まれているトランザクションをロールバックする場
合は、インデックスは再生されず、エラー・メッセージは出ません。♦
参考資料
本書では、ALTER TABLE、CREATE INDEX、および CREATE TABLE 文を参照し
てください。
IBM Informix SQL チュートリアル・ガイド では、インデックスの説明を参照し
てください。
構文 7-137
DROP PROCEDURE
DROP PROCEDURE
目的
DROP PROCEDURE 文は、
データベースからプロシージャーを削除するために
使用します。
構文
DB
ESQL
L
ESQ
+
DROP PROCEDURE
プロシージャー
名
7-429 ページ
使用法
DROP PROCEDURE 文を使用するには、プロシージャーの所有者であるか、
または DBA 状態になっていなければなりません。
プロシージャーを削除すると、プロシージャーのテキストと実行可能バー
ジョンが削除されます。
SE
ROLLBACK WORK 文を使用して DROP PROCEDURE 文を元に戻すことはでき
ません。DROP PROCEDURE 文が含まれているトランザクションをロール
バックする場合は、プロシージャーは再生されず、エラー・メッセージは
出ません。♦
参考資料
本書では、CREATE PROCEDURE 文を参照してください。
IBM Informix SQL チュートリアル・ガイド では、プロシージャーの使用に関す
る説明を参照してください。
7-138 IBM Informix SQL リファレンス・ガイド
DROP SYNONYM
DROP SYNONYM
目的
DROP SYNONYM 文は、定義済みのシノニムを削除するために使用します。
構文
+
DROP SYNONYM
シノニム
名
7-438 ページ
使用法
DROP SYNONYM 文を使用するには、シノニムの所有者であるか、または
DBA 状態になっていなければなりません。
次の文は、cathyg によって所有された nj_cust を削除します。
DROP SYNONYM cathyg.nj_cust
ある表を削除すると、その表と同じデータベースの、その表を参照するす
べてのシノニムが削除されます。
あるシノニムが外部表を参照していて、その表が削除された場合は、ユー
ザーが DROP SYNONYM を使用してそのシノニムを明示的に削除するまで、
そのシノニムは所定の場所に残っています。削除された表の代わりに別の
表またはシノニムを作成し、新規オブジェクトに削除された表の名前を与
えることができます。そうすると、以前のシノニムは新規オブジェクトを
参照します。シノニム・チェーニングの詳細については、CREATE
SYNONYM 文を参照してください。
SE
ROLLBACK WORK 文を使用して、DROP SYNONYM 文を元に戻すことはでき
ません。DROP SYNONYM 文が含まれているトランザクションをロールバッ
クする場合は、シノニムは再生されず、エラー・メッセージは出ません。♦
構文 7-139
参考資料
参考資料
本書では、CREATE SYNONYM 文を参照してください。
IBM Informix SQL チュートリアル・ガイド では、シノニムの説明を参照してく
ださい。
7-140 IBM Informix SQL リファレンス・ガイド
DROP TABLE
DROP TABLE
目的
DROP TABLE 文は、表およびそれに関連するインデックスとデータを削除し
ます。
構文
+
DROP TABLE
表名
7-440
ページ
シノニム名
7-438 ページ
使用法
DROP TABLE 文を使用するには、表の所有者であるか、または DBA 状態に
なっていなければなりません。
DROP TABLE 文は注意して使用してください。表を削除すると、それに格納
されているデータも削除されるほか、列上のインデックスおよび制約 ( そ
の列に置かれたすべての参照制約も含む )、それに割り当てられたすべての
ローカル・シノニム、および表について付与されたすべての認可も削除さ
れます。その表に基づいているすべてのビューも削除されます。外部デー
タベースに作成した表のシノニムは削除されません。
システム・カタログ表は削除できません。現行データベースに入っていな
い表は削除できません。
ISQL
DB-Access または IBM Informix SQL で DROP TABLE 文を出した場合は、表全体
を削除することを確認するプロンプトが出ません。♦
DB
SE
ROLLBACK WORK 文を使用して、DROP TABLE 文を元に戻すことはできませ
ん。DROP TABLE 文が含まれているトランザクションをロールバックする場
合は、表は再生されず、エラー・メッセージは出ません。♦
構文 7-141
参考資料
次の例は 2 つの表を削除します。両方の表は現行データベース内にあり、
現行ユーザーによって所有されています。
DROP TABLE customer
DROP TABLE stores5@accntg:joed.state
参考資料
本書では、CREATE TABLE、DROP DATABASE を参照してください。
IBM Informix SQL チュートリアル・ガイド では、データ整合性と表作成の説明
を参照してください。
7-142 IBM Informix SQL リファレンス・ガイド
DROP VIEW
DROP VIEW
目的
DROP VIEW 文は、ビューをデータベースから削除するために使用します。
構文
+
DROP VIEW
ビュー名
7-444
ページ
シノニム名
7-438
ページ
使用法
DROP VIEW 文を使用するには、ビューの所有者であるか、または DBA 状態
になっていなければなりません。
< ビュー名 > を削除すると、< ビュー名 > で定義されたすべてのビューが
削除されます。どのビューが他のビューに依存しているかを判別するには、
sysdepend システム・カタログ表を照会します。
次の文は、cust1 というビューを削除します。
DROP VIEW cust1
SE
ROLLBACK WORK 文を使用して、DROP VIEW 文を元に戻すことはできませ
ん。DROP VIEW 文が含まれているトランザクションをロールバックする場
合は、ビューは再生されず、エラー・メッセージは出ません。♦
参考資料
本書では、CREATE VIEW および DROP TABLE 文を参照してください。
IBM Informix SQL チュートリアル・ガイド では、ビューの説明を参照してくだ
さい。
構文 7-143
EXECUTE
EXECUTE
目的
EXECUTE 文は、前に PREPARE 文で処理された文を実行するために使用し
ます。
構文
I4GL
ESQL
+
EXECUTE
< 文識別子 >
,
ESQL
USING
< 文識別子
変数 >
< 変数名 >
ESQL
SQL DESCRIPTOR
E/C
"
< 記述子 >
"
< 記述子変数 >
DESCRIPTOR
<sqlda ポインター >
< 記述子 >
割り当て済みシステム記述子領域を識別する引用符付きスト
リングです。
< 記述子
変数 >
割り当て済みシステム記述子領域を識別する埋め込み変数名
です。
<sqlda
PREPARE 文で処理された文の中の未定義値を記述する sqlda
ポインター > 構造体 を指す IBM Informix ESQL/C ポインターです。
< 文識別子 > 同一モジュール内の前の PREPARE 文で定義されている SQL
文識別子です。
7-144 IBM Informix SQL リファレンス・ガイド
使用法
< 文識別子
変数 >
同一モジュール内の前の PREPARE 文で定義されている SQL
文を識別する埋め込み変数名です。
< 変数名 >
PREPARE 文で処理された文に必要な疑問符 (?) 位置指定値と
して置換される、IBM Informix 4GL プログラム変数または
IBM Informix ESQL ホスト変数です。
使用法
EXECUTE 文は、PREPARE 文で処理された SQL 文を実行のためにデータ
ベース・サーバーに渡します。文に ? 位置指定値が含まれている場合は、
実行の前に、それらの文字に対して特定の値が与えられます。PREPARE 文
での処理が終わると、SQL 文を必要な頻度で実行することができます。
(PREPARE 文で処理された ) SELECT 文を除き、PREPARE 文で処理されたす
べての文を実行することができます。PREPARE 文で処理された SELECT 文
は、データ行を戻します。それらのデータ行を取り出すには、DECLARE、
OPEN、および FETCH カーソル文を使用する必要があります。( ただし、
PREPARE 文で処理された SELECT INTO TEMP 文に EXECUTE を使用すること
ができます。)
EXECUTE 文の後で、SQLCA (SQLCA については、第 5 章、
『SQLCA を使用
したエラー処理』を参照 ) が EXECUTE 文のエラーを示している場合があり
ます ( たとえば、error -260、Cannot execute a SELECT statement that is PREPAREd must use cursor) が、通常は、実行された文そのものの正常終了または失敗を
示しています。
IBM Informix 4GL プログラム内における EXECUTE 文の例を、次に示します。
図 7-24
IBM Informix 4GL プログラムにおける EXECUTE 文の使用
PREPARE sel_1 FROM
"DELETE FROM customer ",
"WHERE customer_num = 119"
EXECUTE sel_1
プログラムは、1 つ以上のソース・コード・ファイルからなっていること
があります。デフォルトでは、文識別子の範囲はプログラムに対してグ
ローバルになっています。つまり、1 つのファイルで実行した文識別子は
他のファイルからも参照できます。
構文 7-145
使用法
複数ファイルのプログラムで、文識別子の範囲をそれが実行されるファイ
ルに制限したい場合は、-local コマンド行オプションを指定して、すべての
ファイルをプリプロセッサー処理する必要があります。-local オプションを
指定してプリプロセッサー処理を行う場合の詳細説明、制限、およびパ
フォーマンス上の問題については、ESQL 製品マニュアルを参照してくださ
い。
USING 節
USING 節は、PREPARE 文で処理された文の中の ? 位置指定値を置き換える
値を指定します。PREPARE 文で処理された文の中の ? 位置指定値を置き換
える値を EXECUTE 文に提供することを、PREPARE 文で処理された文のパ
ラメーター化と呼ぶことがあります。
ある文を実行する前に、その文の中の ? 位置指定値を置き換えるために、
次のいずれかの項目を指定することができます。
!
ホストまたはプログラム変数名 ( コンパイル時に疑問符の数とデー
タ型が分かっている場合 )
ESQL
!
システム記述子領域を識別するシステム記述子 ♦
E/C
!
sqlda 構造体を指すポインターである記述子 ♦
ホストまたはプログラム変数を介したパラメーターの提供
各位置指定値ごとに 1 つの < 変数名 > を提供する必要があります。各変数
のデータ型は、PREPARE 文で処理された文に必要な、対応する値と互換性
がなければなりません。
ESQL
< 変数名 > には、標識変数をインクルードすることができます。ただし、
PREPARE 文で処理された文の中の対応するポイントで、その使用が適切な
場合に限られます。♦
次の 2 つの例は、IBM Informix 4GL および IBM Informix ESQL/C で表されたも
のと同じ UPDATE 文 (PREPARE 文で処理された文 ) を実行します。
図 7-25
IBM Informix 4GL におけるサンプル EXECUTE 文
LET stm_1 = "UPDATE orders SET order_date = ? ",
"WHERE po_num = ?"
PREPARE statement_1 FROM stm_1
EXECUTE statement_1 USING x_o_date, x_po_num
7-146 IBM Informix SQL リファレンス・ガイド
使用法
図 7-26
IBM Informix ESQL/C におけるサンプル EXECUTE 文
stm1 = "UPDATE orders SET order_date = ? WHERE po_num = ?";
$PREPARE statement_1 from stm1;
$EXECUTE statement_1 USING $order_date:ord_ind, $po_num;
システム記述子を介したパラメーターの提供
ESQL
1 つ以上の値のデータ型とメモリー格納場所を記述するシステム記述子領
域を作成し、記述子 を EXECUTE 文の USING SQL DESCRIPTOR 節に指定する
ことができます。
EXECUTE 文を実行するたびに、システム記述子領域によって記述された値
が、PREPARE 文の中の ? 位置指定値を置き換えるために使用されます。こ
の方法は、変数のリストで USING キーワードを使用するのと似ています
が、ユーザーのプログラムがデータ値のメモリー格納場所の完全制御を行
うという点が異なります。
COUNT フィールドは、PREPARE 文で処理された文の中の動的なパラメー
ターの数と対応しています。COUNT の値は、ALLOCATE DESCRIPTOR 文で
システム記述子領域を割り当てたときに指定した項目記述子の数の値以下
でなければなりません。
システム記述子の詳細については、本書の第 6 章、および使用している
IBM Informix ESQL 製品のマニュアルを参照してください。
次の例は、3 つの IBM Informix ESQL 製品でシステム記述子を使用して、
PREPARE 文で処理された文を実行する方法を示しています。
図 7-27
ESQL/C におけるサンプル EXECUTE USING SQL DESCRIPTOR 文
$ EXECUTE prep_stmt USING SQL DESCRIPTOR "desc1";
図 7-28
ESQL/COBOL におけるサンプル EXECUTE USING SQL DESCRIPTOR 文
EXEC SQL EXECUTE PREP_STMT USING SQL DESCRIPTOR "DESC1" END-EXEC
♦
構文 7-147
sqlda 構造体を介したパラメーターの提供
sqlda 構造体を介したパラメーターの提供
E/C
sqlda ポインターを EXECUTE 文の USING DESCRIPTOR 節に指定することが
できます。EXECUTE 文を実行するたびに、sqlda 構造体によって記述され
た値が、PREPARE 文の中の ? 位置指定値を置き換えるために使用されます。
この方法は、変数のリストで USING キーワードを使用するのと似ています
が、ユーザーのプログラムがデータ値のメモリー格納場所の完全制御を行
うという点が異なります。
sqlda 構造体の詳細については、使用している IBM Informix ESQL/C のバー
ジョンに関するマニュアルと本書の第 6 章を参照してください。
次の例は、IBM Informix ESQL/C で sqlda 構造体を使用して、PREPARE 文で
処理された文を実行する方法を示しています。
図 7-29
ESQL/C におけるサンプル EXECUTE USING DESCRIPTOR 文
$EXECUTE prep_stmt USING DESCRIPTOR pointer2;
♦
参考資料
本書では、ALLOCATE DESCRIPTOR、DEALLOCATE DESCRIPTOR、DECLARE、
EXECUTE IMMEDIATE、GET DESCRIPTOR、PREPARE、PUT、および SET
DESCRIPTOR 文を参照してください。
IBM Informix SQL チュートリアル・ガイド では、EXECUTE 文の説明を参照して
ください。
7-148 IBM Informix SQL リファレンス・ガイド
EXECUTE IMMEDIATE
EXECUTE IMMEDIATE
目的
EXECUTE IMMEDIATE 文は、PREPARE、EXECUTE、および FREE の SQL 文の
関数を 1 ステップで実行するために使用します。
構文
I4GL
ESQL
EXECUTE IMMEDIATE
引用符付き
ストリング
7-431 ページ
< 文変数名 >
< 文変数名 > 1 つ以上の SQL 文からなる文字ストリングが含まれているプ
ログラムまたはホスト変数です。
使用法
引用符付きストリングは、1 つ以上の SQL 文からなる文字ストリングです。
ストリング、つまり < 文変数名 > は、構文解析され、正しければ、実行さ
れます。次に、すべてのデータ構造体とメモリー・リソースが即時に解放
されます。通常の動的実行方法では、これらの関数は PREPARE、EXECUTE、
および FREE 文に分散されます。
EXECUTE IMMEDIATE 文は、プログラム実行時に構成された単一の単純な
SQL 文を簡単に動的に実行できるようにします。たとえば、プログラム入
力からデータベースの名前を入手して、DATABASE 文をプログラム変数と
して構成し、EXECUTE IMMEDIATE を使用して文を実行し、データベースを
オープンすることができます。
構文 7-149
使用法
制限付きの文型
EXECUTE IMMEDIATE 文を使用して、次の SQL 文を実行することはできませ
ん。
CLOSE
EXECUTE
OPEN
SELECT
DECLARE
FETCH
PREPARE
WHENEVER
動的に構成された SELECT 文を実行するには、PREPARE 文を使用してくだ
さい。
引用符付きストリングまたは < 文変数名 > に含まれた文には、次の制約が
適用されます。
ESQL
!
文にホスト言語コメントを含めることはできない。
!
ホスト言語変数の名前は、PREPARE 文で処理された文テキストで
は認識されない。使用できる識別子は、表名や列名など、データ
ベースで定義された名前だけである。
!
文はホスト変数リストまたは記述子を参照できない。したがって、
PREPARE 文で使用できるような、? 位置指定値をそれに含めること
はできない。
!
埋め込み SQL 文プレフィックスまたは終了文字 ( たとえば、ドル記
号やセミコロン )、または EXEC SQL という語をテキストに含める
ことはできない。♦
次の IBM Informix 4GL 例では、削除する表の名前を入力するよう要求するプ
ロンプトがユーザーに出されます。文テキストは、IBM Informix 4GL 文字式
を使用して書式化されます。
図 7-30
IBM Informix 4GL におけるサンプル EXECUTE IMMEDIATE 文
DEFINE tabname CHAR(18)
PROMPT "Drop which table?" FOR tabname
EXECUTE IMMEDIATE "DROP TABLE ", tabname
IBM Informix ESQL/C を使用した EXECUTE IMMEDIATE の例を示します。
図 7-31
IBM Informix ESQL/C におけるサンプル EXECUTE IMMEDIATE 文
sprintf(cdb_text, "create database %s", usr_db_id);
$EXECUTE IMMEDIATE $cdb_text;
7-150 IBM Informix SQL リファレンス・ガイド
参考資料
参考資料
本書では、EXECUTE、FREE、 および PREPARE 文を参照してください。
IBM Informix SQL チュートリアル・ガイド では、高速実行の説明を参照してく
ださい。
構文 7-151
EXECUTE PROCEDURE
EXECUTE PROCEDURE
目的
EXECUTE PROCEDURE 文は、DB-Access 対話型エディター、埋め込み言語プ
ログラム、または別のストアード・プロシージャーからプロシージャーを
実行するために使用します。
構文
DB
ESQL
+
EXECUTE PROCEDURE
プロシー
ジャー名
7-429 ページ
(
)
,
引数
ESQL
SPL
,
INTO
< ホスト
変数 >
引数
SPL 式
8-23 ページ
< パラメー
ター名 >
=
SELECT 文
( 単一の )
7-263 ページ
< ホスト
変数 >
呼び出し側プログラム内に定義されている変数です。
< パラメー
ター名 >
その CREATE PROCEDURE 文によって定義されたパラメーター
の名前です。
7-152 IBM Informix SQL リファレンス・ガイド
使用法
使用法
EXECUTE PROCEDURE 文は、プロシージャー名で指定されるプロシー
ジャーを起動します。
呼び出されるプロシージャーによって予期された数よりも多くの引数が
EXECUTE PROCEDURE 文に入っている場合は、エラーが戻されます。
呼び出されるプロシージャーによって予期された数よりも少ない引数が
EXECUTE PROCEDURE 文に含まれている場合は、引数が欠落していると見
なされます。デフォルト値が指定されていれば、欠落した引数は、対応す
るデフォルト値に初期化されます。(7-59 ページの CREATE PROCEDURE を
参照してください。) この初期化は、プロシージャー本体の最初の実行可能
文の前に行われます。
引数が欠落していて、デフォルト値が指定されていない場合は、それらの
引数は UNDEFINED の値に初期化されます。UNDEFINED の値を持つ変数を
使用しようとすると、エラーになります。
プロシージャー引数は、名前または位置でプロシージャー引数パラメー
ターに結合されますが、名前と位置の両方では結合されません。つまり、
parametername = 構文は、1 つの EXECUTE PROCEDURE 文で指定されたすべ
ての引数に使用するか、またはどの引数にも使用しないかのいずれかです。
たとえば、次の例に示すように、3 つの文字引き数 t、n、および d を持つプ
ロシージャーには、両方のプロシージャー呼び出しが有効です。
EXECUTE PROCEDURE add_col (t="customer", d ="integer", n = "newint")
EXECUTE PROCEDURE add_col("customer","newint","integer")
ESQL
EXECUTE PROCEDURE 文が複数の行を戻す場合、それらを SPL FOREACH
ループで囲むか、またはカーソルでアクセスするかしなければなりませ
ん。♦
INTO 節
ESQL
SPL
< ホスト変数 > リストは、プロシージャー呼び出しから戻された値を受け
取るホスト変数のリストです。複数の行を戻すプロシージャーはカーソル
で囲む必要があります。プロシージャー内からプロシージャーを実行する
と、リストにはプロシージャー変数が入ります。♦
構文 7-153
参考資料
参考資料
本書では、CREATE PROCEDURE、GRANT、および CALL を参照してくださ
い。
IBM Informix SQL チュートリアル・ガイド では、データ・モデル作成の説明を
参照してください。
7-154 IBM Informix SQL リファレンス・ガイド
FETCH
FETCH
目的
FETCH 文は、カーソルをアクティブ・セットの新規行に移動し、行値を検
索してメモリーに入れ、プログラムで使用できるようにするために使用し
ます。
構文
,
I4GL
ESQL
INTO
< カーソル
FETCH
< データ変数 >
識別子 >
ESQL
+
NEXT
ESQL
+
< カー
ソル
変数 >
PREVIOUS
< 標識 >
+
PRIOR
FIRST
:< 標識
変数 >
< 標識
変数 >
ESQL
LAST
USING
SQL DESCRIPTOR
"< 記述子 >"
CURRENT
< 行位置 >
RELATIVE
+
DESCRIPTOR
ABSOLUTE
< 記述子
変数 >
E/C
<sqlda ポイ
ンター >
< 行位置 >
< カーソル
識別子 >
前の DECLARE 文によって作成されたカーソルの識別子です。
< カーソル
変数 >
前の DECLARE 文によって作成されたカーソルを識別する埋
め込み変数名です。
< データ
変数 >
FETCH 文を使用して取り出した行から 1 つの値を受け取る、
プログラム変数またはホスト・オブジェクトです。
構文 7-155
使用法
< 記述子 >
ALLOCATE DESCRIPTOR 文で割り当てられたシステム記述子
領域を識別するストリングです。
< 記述子
変数 >
ALLOCATE DESCRIPTOR 文で割り当てられたシステム記述子
領域を識別する埋め込み変数名です。
< 標識変数 > 対応する < データ変数 > に NULL データが入れられた場合に
戻りコードを受け取るプログラム変数です。
< 行位置 >
整数値が含まれている整数または変数で、アクティブ・セッ
ト行の必要行の位置を示します。
<sqlda
FETCH 文を使用して取り出した行から値を受け取る sqlda 構
ポインター > 造体を指すポインターです。
使用法
FETCH 文は、データベースから複数行を戻す照会で使用される 4 つの文の
うちの 1 つです。4 つの文 DECLARE、OPEN、FETCH、および CLOSE は、次
の順序で使用されます。
!
カーソルでアクティブ・セットの行を制御することを宣言する。
!
カーソルをオープンして照会の実行を開始する。
!
各行の内容を検索するために FETCH 文を使用してカーソルから取
り出す。
!
カーソルをクローズして、カーソルとアクティブ・セット間の関連
を切断する。
カーソルは、順カーソルまたはスクロール・カーソルのいずれかとして作
成されます。データベース・サーバーがアクティブ・セットのメンバーを
作成し格納して、アクティブ・セットから行を取り出す方法は、カーソル
が順カーソルであるかスクロール・カーソルであるかによって異なります。
( カーソルの型について詳しくは、7-108 ページの DECLARE 文を参照して
ください。)
X/O
X/Open モードの場合に、カーソル出力先値 (NEXT や RELATIVE など ) が指
定されていれば、文が X/Open 標準に準拠していないことを示す警告メッ
セージが表示されます。♦
7-156 IBM Informix SQL リファレンス・ガイド
順カーソルによる FETCH
順カーソルによる FETCH
順カーソルは、アクティブ・セットから次の順番の行のみを取り出すこと
ができます。順カーソルで使用できるキーワード・オプションは、デフォ
ルト値 NEXT だけです。順カーソルは、表をオープンするたびに 1 回しか
それを読み取ることができません。IBM Informix ESQL/C による次の例は、順
カーソルの使用法を示したものです。
$FETCH seq_curs INTO $fname,$lname;
プログラムが順カーソルをオープンすると、データベース・サーバーは、
最初のデータ行が入っている場所または構成されている場所についての照
会を処理します。データベース・サーバーの目的は、できるだけ少数のリ
ソースを結合することです。
順カーソルは次の行しか検索できないため、データベース・サーバーが一
度に 1 つずつ行を作成するという状況がよく発生します。各 FETCH 操作で、
データベース・サーバーは現在行の内容を戻し、次の行を見つけます。
データベース・サーバーがアクティブ・セット全体を作成しないと、どれ
が最初の行であるかを判別できないような場合 ( たとえば、SELECT 文に
ORDER BY 節が含まれている場合 ) は、この「一度に 1 つずつ」というスト
ラテジーは不可能です。
スクロール・カーソルによる FETCH
スクロール・カーソルは、絶対行位置または相対オフセットのいずれかを
指定して、アクティブ・セットの任意の行を取り出すことができます。検
索したい特定の行を指定するには、キーワードを使用します。
NEXT
アクティブ・セットの次の行を検索します。
PREVIOUS
アクティブ・セットの前の行を検索します。
PRIOR
PREVIOUS と同義。アクティブ・セットの前の行を検索しま
す。
FIRST
アクティブ・セットの最初の行を検索します。
LAST
アクティブ・セットの最終行を検索します。
構文 7-157
スクロール・カーソルによる FETCH
CURRENT
アクティブ・セットの現在行を検索します ( 前の FETCH 文が
スクロール・カーソルから戻す行と同じ )。
RELATIVE
アクティブ・セットの現行カーソル位置から数えて n 番目の
行を検索します。この場合、n は < 行位置 > によって提供さ
れます。負の値は、現行カーソル位置より n 番目前の行であ
ることを示します。< 行位置 > がゼロであれば、現在行が取
り出されます。
ABSOLUTE
アクティブ・セットの n 番目の行を検索します。ここで、n
は < 行位置 > によって提供されます。絶対行位置は 1 から番
号が付けられています。
次の 4GL 例は、FETCH 文のいくつかの使用法を示しています。
図 7-32
IBM Informix 4GL におけるサンプル FETCH 文
FETCH PREVIOUS q_curs INTO orders.*
FETCH LAST q_curs INTO orders.*
FETCH RELATIVE -10 q_curs INTO orders.*
PROMPT "Which row?" FOR row_num
FETCH ABSOLUTE row_num q_curs INTO orders.*
行番号
ABSOLUTE キーワードで使用する行番号は、カーソルがオープンしている
ときだけ有効です。行番号と行値を混同しないでください。行 ID 値は表内
の行位置に基づいており、表が再作成されるまで有効です。FETCH 文の行
番号は、カーソルのアクティブ・セットの行位置に基づいています。この
ため、次にカーソルをオープンすると、異なる行が選択されます。
データベース・サーバーによる行の格納方法
データベース・サーバーは、カーソルがクローズされるまで、すべての行
をスクロール・カーソル用のアクティブ・セットに保存します。それは、
プログラムが次にどの行を要求するかデータベース・サーバーに分からな
いからです。スクロール・カーソルがオープンすると、データベース・
サーバーはアクティブ・セットを一時表としてインプリメントします。た
だし、この表を即時に埋めるわけではありません。
7-158 IBM Informix SQL リファレンス・ガイド
値を格納するメモリー内の場所
行を初めて取り出したときに、データベース・サーバーは、それを一時表
にコピーし、同時にそれをプログラムに戻します。行を 2 回目に取り出す
ときは、一時表から取り出すことができます。プログラムがすべての行を
取り出す前に照会を中止する場合は、この方式は最も少ないリソースを使
用します。取り出されない行は、通常、作成も格納もされません。
値を格納するメモリー内の場所
照会の選択リストから取り出した各値は、プログラムで使用するために、
メモリー格納場所へ戻さなければなりません。これらの宛先を指定するに
は、以下のいずれかの方法を使用します。
E/C
!
SELECT 文の INTO 節の使用
!
FETCH 文の INTO 節の使用
!
システム記述子の使用
!
sqlda 構造体の使用 ♦
SELECT の INTO 節の使用
カーソルと関連する SELECT 文には、どのプログラム変数が値を受け取る
かを指定する INTO 節を含めることができます。この方法は、SELECT 文が
カーソル宣言の一部として書かれている場合にのみ使用できます (7-108
ページの DECLARE 文を参照 )。この場合、FETCH 文に INTO 節を含めるこ
とはできません。IBM Informix 4GL における例を示します。
図 7-33
4GL におけるプログラム変数を指定するための SELECT の INTO 節の使用
DECLARE ord_date CURSOR FOR
SELECT order_num, order_date, po_num
INTO o_num, o_date, o_po
OPEN ord_date
FETCH NEXT ord_date
ESQL
SELECT から戻されたデータが NULL である可能性がある場合は、標識変数
を使用してください。標識変数の詳細については、埋め込み言語製品のマ
ニュアルを参照してください。♦
構文 7-159
値を格納するメモリー内の場所
FETCH の INTO 節の使用
SELECT 文で INTO 節を省略するときは、行を取り出すたびにデータの宛先
を指定する必要があります。FETCH 文に INTO 節を含めて、取り出したデー
タを変数のセットに渡すことができます。この方法には、異なる行をそれ
ぞれ別のメモリー格納場所に格納できるという利点があります。
INTO 節でホスト変数の配列を使用することはできません。
次の IBM Informix 4GL 例では、一連の完全な行がプログラム配列に取り入れ
られます。
図 7-34
4GL による一連の行の取り出し
DEFINE cust_list ARRAY[100] OF RECORD LIKE customer.*
DEFINE wanted_state LIKE customer.state
DEFINE row_count SMALLINT
DECLARE cust CURSOR FOR
SELECT * FROM customer WHERE state = wanted_state
PROMPT "Enter 2-letter state code:" FOR wanted_state
OPEN cust
LET row_count = 0
WHILE status = 0
LET row_count = row_count + 1
FETCH NEXT cust INTO cust_list[row_count].*
END WHILE
CLOSE cust
プログラム配列エレメントに取り入れるには、FETCH 文で INTO 節を使用す
る以外に方法はありません。カーソルを宣言するときは、SQL 文内の配列
エレメントを参照しないでください。
システム記述子の使用
ESQL
システム記述子領域を出力変数として使用することができます。キーワー
ド USING SQL DESCRIPTOR は、行の内容を取り入れる先のシステム記述子領
域を提示します。FETCH 文によって戻された値は、次に、GET DESCRIPTOR
文を使用して、システム記述子領域からホスト変数へ転送されます。
詳細については、本書の第 6 章、および、使用している IBM Informix ESQL
製品のマニュアルを参照してください。
次に、3 つの IBM Informix 埋め込み言語製品におけるシステム記述子の使用
法を示します。
7-160 IBM Informix SQL リファレンス・ガイド
sqlda 構造体の使用
図 7-35
ESQL/C におけるサンプル FETCH USING SQL DESCRIPTOR 文
$ FETCH selcurs USING SQL DESCRIPTOR "desc";
図 7-36
ESQL/COBOL におけるサンプル FETCH USING SQL DESCRIPTOR 文
EXEC SQL FETCH SEL_CURS USING SQL DESCRIPTOR "DESC" END-EXEC.
♦
sqlda 構造体の使用
E/C
宛先を指定するには、sqlda 構造体を指すポインターを使用します。この構
造体にはデータ記述子が含まれていて、それぞれのデータ記述子は、選択
された 1 つの値に関するデータ型とメモリー格納場所を指定しています。
詳細については、本書の第 6 章、および IBM Informix ESQL/C Programmer’s
Manual を参照してください。キーワード USING DESCRIPTOR は、sqlda ポイ
ンター構造体の名前を提示します。
SELECT 文を動的に作成した場合は、PREPARE 文で処理された文でホスト
変数を命名できないため、INTO < ホスト変数 > 節を使用できません。選択
リスト内の値の数と型が分かっている場合は、INTO < ホスト変数 > 節を
FETCH 文で使用することができます。ただし、照会がユーザー入力によっ
て生成された場合は、選択する値の数と型が分からないことがあります。
この場合は、次のように、sqlda ポインターを使用してください。
!
DESCRIBE 文を使用して sqlda を埋める。
!
データ値を保持するメモリーを割り当てる。
!
FETCH 文の sqlda を命名する。
図 7-37
IBM Informix ESQL/C におけるサンプル FETCH USING DESCRIPTOR 文
$ FETCH selcurs USING DESCRIPTOR pointer2;
♦
更新のための行の取り出し
FETCH 文は、通常、取り出した行をロックしません。したがって、取り出
した行は、ユーザー・プログラムでそれを受け取った後、すぐに別のプロ
セスで変更 ( 更新または削除 ) することができます。取り出した行がロック
されるのは、次の場合です。
構文 7-161
更新のための行の取り出し
ANSI
n
排他レベルを「繰り返し可能読み込み」に設定すると、取り出した
それぞれの行が読み込みロックでロックされ、カーソルをクローズ
するか、または現行のトランザクションが終了するまで、それを変
更できなくなります。他のプログラムもロックされた行を読み取る
ことができます。
!
排他レベルを「カーソル安定性」に設定すると、現在行がロックさ
れます。
!
ANSI 準拠データベースでは、
「繰り返し可能読み込み」の排他レベ
ルがデフォルトです。ユーザーはそれを他の設定に変えることがで
きます。♦
!
UPDATE カーソル (FOR UPDATE に対して宣言されたカーソル ) に取
り入れる場合は、取り出したそれぞれの行が増進可能なロックで
ロックされます。他のプログラムはロックされた行を読み取ること
ができますが、他のプログラムが増進可能なロック、または書き込
みロックを掛けることはできません。したがって、他のユーザー
が、UPDATE または DELETE の WHERE CURRENT OF 節を使用してそ
れを変更しようとしても、その行は未変更のままになっています。
行を修正すると、ロックが書き込みロックにアップグレードされ、
カーソルをクローズするか、またはトランザクションが終了するま
で、そのままになっています。行を修正しない場合は、別の行を取
り出したときに、設定された排他レベルに応じて、アンロックされ
たりされなかったりします。「繰り返し読み込み」排他を使用して
いない限り、未変更行のロックは、他の行を取り出したらすぐにア
ンロックされます (7-312 ページの SET ISOLATION 文を参照 )。
ヒント :「繰り返し読み込み」排他が使用中または使用可能であっても、追
加行にロックを掛けておくことができます。ユーザーのプログラムが他の
行を読み取っている間、行をロックしておきたい場合は、その行を未変更
データで更新してください。この技法がユーザー・アプリケーションのパ
フォーマンスに与える影響を評価する必要があります。またデッドロック
が増加する可能性があるということも認識しておく必要があります。
明示的なトランザクションを使用するときは、1 つの行を単一トランザク
ション内で取り出し、かつ修正するようにしてください。つまり、FETCH
文と、後続の UPDATE または DELETE 文の両方が、BEGIN WORK 文と次の
COMMIT WORK 文の間に入っていなければなりません。
SE
IBM Informix SE では、データベース排他レベルを設定することはできませ
ん。♦
7-162 IBM Informix SQL リファレンス・ガイド
FETCH の結果の検査
FETCH の結果の検査
SQLCA の SQLCODE フィールドに入っている各 FETCH 文の結果を検査する
ことができます。検査対象の変数が、次の表に示されています。
4GL
ESQL/C
ESQL/COBOL
SQLCA.SQLCODE
STATUS
sqlca.sqlcode
SQLCODE
SQLCODE OF SQLCA
行が正常に戻されたら、SQLCODE はゼロに設定されます。行が見つからな
いと、FETCH 文は、戻りコードを 100 に設定して “row not found” を示し、
現在行は未変更のままになります。以下の 5 つの条件が変数値を 100 に設
定し、“row not found” を示します。
!
アクティブ・セットに行が入っていない。
!
カーソルがアクティブ・セットの最終行またはそれを越えたところ
をポイントしているときに、FETCH NEXT 文が出された。
!
カーソルがアクティブ・セットの最初の行をポイントしているとき
に、FETCH PRIOR または FETCH PREVIOUS 文が出された。
!
アクティブ・セットに n 番目の行が存在していないときに、FETCH
RELATIVE n 文が出された。
!
アクティブ・セットに n 番目の行が存在していないときに、FETCH
ABSOLUTE n 文が出された。
参考資料
本書では、動的管理文で FETCH 文を使用する方法について、ALLOCATE
DESCRIPTOR、CLOSE、DEALLOCATE DESCRIPTOR、DECLARE、DESCRIBE、
GET DESCRIPTOR、OPEN、PREPARE、 および SET DESCRIPTOR 文を参照して
ください。
また本書では、エラー検査の詳細について、第 5 章、『SQLCA を使用した
エラー処理』も参照してください。システム記述子領域の詳細については、
第 6 章、
『記述子の使用』を参照してください。
IBM Informix SQL チュートリアル・ガイド では、FETCH 文の説明を参照してく
ださい。
構文 7-163
FLUSH
FLUSH
目的
FLUSH 文は、PUT 文によってバッファーに入れられた行を強制的にデータ
ベースに書き込むために使用します。
構文
I4GL
ESQL
+
FLUSH
< カーソル
識別子 >
ESQL
< カーソル
変数 >
< カーソル
識別子 >
INSERT 文と関連付けられたカーソルの識別子です。
< カーソル
変数 >
INSERT 文と関連付けられたカーソルを識別する埋め込み変数
名です。
使用法
PUT 文は行をあるバッファーに追加し、バッファーがいっぱいになると、
そのバッファーはデータベースに書き込まれます。FLUSH 文は、バッ
ファーがいっぱいでなくても、挿入を強制実行します。
プログラムがカーソルをクローズせずに終了した場合は、バッファーはフ
ラッシュされません。最後のフラッシュ以降にバッファーに入れられた行
は失われます。プログラムの終了でカーソルがクローズされ、バッファー
がフラッシュされると考えないでください。
FLUSH 文の例を次に示します。
FLUSH icurs
7-164 IBM Informix SQL リファレンス・ガイド
エラー検出のための FLUSH 文
エラー検出のための FLUSH 文
SQLCA には、各 FLUSH 文の正常終了に関する情報と、正常に挿入された行
の数が含まれています。各 FLUSH 文の結果は、次の表に示されているよう
に、SQLCA のフィールドに含まれています。
4GL
ESQL/C
ESQL/COBOL
STATUS
SQLCA.SQLCODE
sqlca.sqlcode
SQLCODE
SQLCODE OF SQLCA
SQLCA.SQLERRD[3]
sqlca.sqlerrd[2]
SQLERRD[3] OF SQLCA
INSERT カーソルによるデータ・バッファー方式は、バッファーがフラッ
シュされるまでエラーが発見されないことを意味します。たとえば、意図
された列のデータ型と互換性がない入力値は、バッファーがフラッシュさ
れたときにのみ発見されます。エラーが発見されると、そのエラーの後に
配置されたバッファー内の行は挿入されません。それらの行はメモリーか
ら消失します。
エラーが発生しないと、SQLCODE フィールドはエラー・コードまたはゼロ
に設定されます。SQLERRD 配列の 3 番目のエレメントは、正常にデータ
ベースに挿入された行の数に設定されます。
!
行のブロックが正常にデータベースに挿入された場合は、
SQLCODE はゼロに設定され、SQLERRD は行のカウント数に設定さ
れます。
!
FLUSH 文が行のブロックを挿入しているときにエラーが発生した
場合は、SQLCODE はそのエラーを示し、SQLERRD には、正常に挿
入された行の数が入ります。( 挿入されなかった行はバッファーか
ら廃棄されます。)
構文 7-165
参考資料
合計および保留中の行のカウント
実際にデータベースに挿入された行の数と、まだ挿入されていない行の数
をカウントするには、以下のステップを実行してください。
1.
2 つの整変数を PREPARE 文で処理します。たとえば、< 合計 > と
< 保留中 >。
2.
カーソルがオープンされたら、両方の変数をゼロに設定します。
3.
PUT 文を実行するたびに、< 合計 > と < 保留中 > を増やします。
4.
PUT または FLUSH 文を実行するたびに、あるいはカーソルをク
ローズするたびに、SQLERRD 配列の 3 番目のフィールドを < 保留
中 > から減算します。
参考資料
本書では、CLOSE、DECLARE、OPEN、および PUT 文を参照してください。
また本書では、SQLCA について、第 5 章、
『SQLCA を使用したエラー処理』
を参照してください。
IBM Informix SQL チュートリアル・ガイド では、FLUSH の説明を参照してくだ
さい。
7-166 IBM Informix SQL リファレンス・ガイド
FREE
FREE
目的
FREE 文は、PREPARE 文で処理された文またはカーソルに割り当てられた
リソースを解放します。
I4GL
FREE 文は、TEXT または BYTE データ型のプログラム変数を解放する追加
機能も備えています。♦
構文 7-167
構文
構文
I4GL
ESQL
+
< カーソル
識別子 >
FREE
ESQL
< カーソル
変数 >
< 文識別子 >
ESQL
< 文識別子変数 >
I4GL
<blob 変数 >
<blob 変数 > TEXT または BYTE データ型の IBM Informix 4GL プログラム変
数の名前です。
< カーソル
識別子 >
SELECT または INSERT 文に対して宣言されたカーソルの識別
子です。
< カーソル
変数 >
SELECT または INSERT 文に対して宣言されたカーソルを識別
する埋め込み変数名です。
< 文識別子 > PREPARE 文で処理した SQL 文の識別子です。
< 文識別子
変数 >
PREPARE 文で処理した SQL 文を識別する埋め込み変数名で
す。
使用法
FREE 文は、アプリケーション開発支援ツールとデータベース・サーバー
で、PREPARE 文で処理された文または宣言済みのカーソルに対して割り当
てられたリソースを解放します。リソースの割り当てが行われるのは、
PREPARE 文で処理するとき、またはカーソルをオープンするときです
(7-108 ページの DECLARE 文、および 7-210 ページの OPEN 文を参照してく
ださい。)
7-168 IBM Informix SQL リファレンス・ガイド
文の解放
1 つのプロセス内で一度に持つことができるオープン・カーソルの数と
PREPARE 文で処理された文の数の合計は、システム内の使用可能メモリー
の容量によって制限されます。FREE < 文識別子 > または FREE < 文識別子
変数 > を使用して、PREPARE 文で処理された文が保持しているリソース
を解放してください。また、FREE < カーソル識別子 > または FREE < カー
ソル変数 > を使用して、カーソルが保持しているリソースを解放してくだ
さい。
文の解放
PREPARE 文で処理すると ( ただし、そのカーソルは宣言しない )、FREE
< 文識別子 >( または < 文識別子変数 >) は、アプリケーション開発支援
ツールとデータベース・サーバーの両方のリソースを解放します。
PREPARE 文で処理された文に対してカーソルを宣言すると、FREE < 文識
別子 >( または < 文識別子変数 >) は、アプリケーション開発支援ツールの
リソースのみを解放します。このため、カーソルは引き続き使用できます。
データベース・サーバーのリソースは、カーソルが解放されたときにのみ
解放されます。
文を解放したら、それを再度 PREPARE 文で処理するまで、それを実行し
たり、それに対してカーソルを宣言したりできません。
次の IBM Informix 4GL コードは、暗黙的に PREPARE 文で処理された文を解
放するために使用する文のシーケンスを示したものです。
図 7-38
IBM Informix 4GL における、暗黙的に PREPARE 文で処理された文の解放
DECLARE s_curs CURSOR FOR SELECT * FROM orders
OPEN s_curs
CLOSE s_curs
FREE s_curs
次の IBM Informix 4GL コードは、明示的に PREPARE 文で処理された文を解
放するために使用する文のシーケンスを示したものです。
構文 7-169
カーソルの解放
図 7-39
IBM Informix 4GL における、明示的に PREPARE 文で処理された文の解放
PREPARE sel_stmt FROM
"SELECT * FROM customer ",
"WHERE customer_num BETWEEN 100 AND 200"
DECLARE sel_curs CURSOR FOR sel_stmt
OPEN sel_curs
.
.
.
CLOSE sel_curs
FREE sel_stmt
FREE sel_curs
カーソルの解放
PREPARE 文で処理された文に対してカーソルを宣言した場合、そのカーソ
ルを解放すると、データベース・サーバーのリソースのみが解放されます。
アプリケーション開発支援ツールで文のリソースを解放するには、FREE <
文識別子 >( または < 文識別子変数 >) を使用します。
PREPARE 文で処理された文に対してカーソルを宣言しない場合、そのカー
ソルを解放すると、アプリケーション開発支援ツールとデータベース・
サーバーの両方のリソースが解放されます。
カーソルを解放すると、それを再度宣言するまでオープンできません。
カーソルを明示的にクローズしてから、それを解放するようにしてくださ
い。
IBM Informix 4GL のよる BLOB ストレージの解放
I4GL
メモリーに格納された BYTE または TEXT 変数を指定して FREE を使用する
と、FREE 文は、その変数に関連するすべてのメモリーを解放して、その変
数を使用できないようにします。その変数を再度使用できるようにするに
は、LOCATE 文を使用してそれを再初期化する必要があります。
カーソルを宣言し、TEXT または BYTE 変数をメモリーに取り入れる場合
は、そのカーソルだけでなく、その変数も解放しなければなりません。そ
の変数とカーソルに対して FREE 文を使用すると、それぞれの専用リソース
が解放されます。ただし、ある関数内で BYTE または TEXT 変数を使用し、
かつその変数がその関数に対してローカルであれば、関数を終了するとき
にメモリーが解放されます。
7-170 IBM Informix SQL リファレンス・ガイド
参考資料
ファイルに格納された BYTE または TEXT 変数を指定して FREE を使用する
と、FREE 文は、そのファイルをホスト・オペレーティング・システムから
削除して、その変数を使用できないようにします。その変数を再度使用で
きるようにするには、LOCATE 文を使用して、それを再初期化する必要があ
ります。♦
参考資料
本書では、CLOSE、DECLARE、EXECUTE、EXECUTE IMMEDIATE、および
PREPARE 文を参照してください。
IBM Informix SQL チュートリアル・ガイド では、FREE 文の説明を参照してくだ
さい。
構文 7-171
GET DESCRIPTOR
GET DESCRIPTOR
目的
GET DESCRIPTOR 文は、以下の 3 つの個別タスクを実行するために使用しま
す。
!
COUNT フィールドの値を検索することにより、システム記述子領
域に何個の値が記述されているかを判別する
!
システム記述子領域に記述されている各列または式の特性を判別す
る
!
FETCH 文の後で、システム記述子領域から値をコピーし、ホスト
変数に挿入する
7-172 IBM Informix SQL リファレンス・ガイド
構文
構文
ESQL
GET DESCRIPTOR
"< 記述子 >"
< ホスト変数 > = COUNT
,
< 記述子
変数 >
VALUE
< 項目
番号 >
記述された
項目情報
< 項目
番号
変数 >
記述された
項目情報
< フィールド・
ホスト
変数 >
=
TYPE
LENGTH
PRECISION
SCALE
NULLABLE
INDICATOR
NAME
DATA
ITYPE
IDATA
ILEN
< 記述子 >
割り当て済みシステム記述子領域を識別する、引用符付きス
トリングです。
< 記述子
変数 >
割り当て済みシステム記述子領域を識別する埋め込み変数名
です。
< フィールド・ システム記述子領域の指示フィールドの内容を受け取るホス
ホスト変数 > ト変数の名前です。フィールド・ホスト変数は、システム記
述子領域から値を受け取るための適切な型になっていなけれ
ばなりません。
< ホスト
変数 >
整数ホスト変数の名前です。
構文 7-173
使用法
< 項目番号 >
記述子領域内のいずれかの値を表す符号なし整数です。
< 項目番号
変数 >
記述子領域内のいずれかの値を表す符号なし整数が含まれて
いる整変数の名前です。
使用法
識別されたいずれかのホスト変数への割り当てを実行中にエラーが発生し
た場合は、そのホスト変数の内容は未定義になります。
システム記述子領域内の各フィールドのロールと内容が、第 6 章で説明さ
れています。
GET DESCRIPTOR 文で使用するホスト変数は、ESQL プログラムの BEGIN
DECLARE SECTION で宣言する必要があります。個別の説明については、埋
め込み言語のマニュアルを参照してください。
COUNT キーワードの使用
COUNT キーワードは、システム記述子領域で何個の値を記述するかを決定
するために使用します。
次の IBM Informix ESQL/C 例は、ホスト変数を指定した GET DESCRIPTOR 文を
使用して、desc1 というシステム記述子領域で何個の値を記述するかを決定
する方法を示しています。
main()
{
$int h_type, h_count;
$ALLOCATE DESCRIPTOR 'desc1' WITH MAX OCCURENCES 20;
/* This section of program would prepare a SELECT or INSERT *
* statement int the s_id statement id.
*/
$DESCRIBE s_id USING SQL DESCRIPTOR 'desc1';
$GET DESCRIPTOR 'desc1' $h_count = COUNT;
...
}
7-174 IBM Informix SQL リファレンス・ガイド
使用法
VALUE 節
VALUE 節は、記述された列または式に関する情報の取得、またはデータ
ベース・サーバーによって戻された値の検索を行うために使用します。
< 項目番号 > は、ゼロより大きく、かつ、ALLOCATE DESCRIPTOR を使用し
てシステム記述子領域を割り当てたときに指定した項目記述子の数よりも
小さくなければなりません。
DESCRIBE の後での VALUE 節の使用
SELECT または INSERT 文を記述すると、SELECT 文の選択リスト内の各列
または式の特性、または INSERT 文内の各列の特性がシステム記述子領域
に戻されます。システム記述子領域内のそれぞれの値は、戻された列また
は式を 1 つずつ記述しています。各フィールドとその内容を、第 6 章で説
明しています。
次の IBM Informix ESQL/C 例は、GET DESCRIPTOR 文を使用して、demodesc シ
ステム記述子領域からデータ型情報を取得する方法を示しています。
図 7-40
後で処理するためのデータ型情報をホスト変数にコピーするプログラム・フラグメント
$ GET DESCRIPTOR 'demodesc' VALUE $index
$type = TYPE,
$len = LENGTH,
$name = NAME;
printf("
Column %d: type = %d, len = %d, name = %s\n",
index, type, len, name);
}
データベース・サーバーによって TYPE フィールドに戻される値は、定義
された整数です。戻された型を評価するには、個々の整数値を検査します。
TYPE フィールドのコードが第 6 章で示されています。
X/O
X/Open モードでは、X/Open コードは TYPE フィールドに戻されます。この 2
つのモードを混合しないようにしてください。混合すると、エラーになり
ます。たとえば、特定の型を X/Open モードの下では定義していないが、
IBM Informix 製品に対しては定義している場合、GET DESCRIPTOR 文を実行
するとエラーになります。
X/Open モードでは、ILENGTH、IDATA、または ITYPE を使用するとエラーに
なることがあります。つまり、これらの型は、システム記述子領域にとっ
て標準の X/Open フィールドではないことを示します。♦
構文 7-175
使用法
取り出した値の TYPE が DECIMAL または MONEY であれば、データベー
ス・サーバーは、DESCRIBE 文を実行した後、列の精度と小数点以下桁数の
情報を PRECISION および SCALE フィールドに戻します。TYPE が DECIMAL
でも MONEY でもなければ、SCALE および PRECISION フィールドは未定義で
す。
取り出し後の VALUE 節の使用
プログラムで行を取り出すたびに、取り出した値をホスト変数にコピーし
てそのデータを使用できるようにしなければなりません。これを行うには、
選択リストの各値を取り出すたびに GET DESCRIPTOR 文を使用します。選
択リストに 3 つの値がある場合は、それぞれの取り出しの後で 3 つの GET
DESCRIPTOR 文を使用する必要があります (3 つの値をすべて読み取るもの
と想定 )。これらの 3 つの GET DESCRIPTOR 文のそれぞれの < 項目番号 > は
1、2、および 3 です。
次の IBM Informix ESQL/C 例は、DATA フィールドからデータを取り出した
後、ホスト変数 (result) にコピーします。この例では、戻されたすべての値
が同じデータ型であると事前定義されています。
図 7-41
DATA フィールドの値をホスト変数にコピーする ESQL/C プログラム・フラグメント
$FETCH democursor USING SQL DESCRIPTOR 'demodesc';
if (sqlca.sqlcode != 0) break;
for (i = 1; i <= desc_count; i++)
{
$ GET DESCRIPTOR 'demodesc' VALUE $i $result = DATA;
printf("%s ", result);
}
printf("\n");
}
次の IBM Informix ESQL/COBOL 例は、DATA フィールドのデータを取り出し
た後、ホスト変数にコピーする方法を示しています。GET DESCRIPTOR の最
初の使用例では、リテラル項目番号が使用されています。2 番目の GET
DESCRIPTOR では、その項目番号を保持するためにホスト変数が使用され
ています。
図 7-42
ESQL/COBOL における取り出し後の GET DESCRIPTOR
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 COUNTSQLINT.
01 ITEMNOSQLINT.
01 TYPE SQLINT.
01 LENGTHSQLINT.
01 LONGVALSQLINT.
01 CHVALSQLCHAR(21).
7-176 IBM Informix SQL リファレンス・ガイド
参考資料
EXEC SQL END DECLARE SECTION END-EXEC.
EXEC SQL GET DESCRIPTOR 'desc1' VALUE 1
:TYPE = TYPE, :LENGTH = LENGTH, :CHVAL = DATA
END-EXEC.
MOVE 2 TO ITEMNO.
EXEC SQL GET DESCRIPTOR 'desc1' VALUE :ITEMNO
:TYPE = TYPE, :LONGVAL = DATA
END-EXEC.
.
.
.
NULL 値の取り出し
取り出し後に GET DESCRIPTOR を使用して、取り出した値が NULL であれ
ば、INDICATOR フィールドが -1 (NULL) に設定されます。INDICATOR が
NULL 値を示している場合は、DATA の値は未定義です。DATA がコピーされ
るホスト変数には、予期しない値が入ります。
参考資料
本書では、動的 SQL 文の詳細について、ALLOCATE DESCRIPTOR、
DEALLOCATE DESCRIPTOR、DECLARE、DESCRIBE、EXECUTE、FETCH、
OPEN、PREPARE、PUT、 および SET DESCRIPTOR 文を参照してください。
また本書では、システム記述子領域の詳細について、第 6 章、『記述子の使
用』も参照してください。
構文 7-177
GRANT
GRANT
目的
GRANT 文は、データベースに対するアクセス権またはデータベースの表お
よびビューに対するアクセス権を指定するために使用します。
構文
GRANT
+
データベース・
レベルアクセス
権 7-180
ページ
PUBLIC
TO
,
< ユーザー>
表レベル・
アクセス権
7-182
ページ
ON
表名
7-440
ページ
TO
PUBLIC
ビュー名
7-444
ページ
シノニム
名 7-438
ページ
EXECUTE
ON
プロシー
ジャー名
7-429
ページ
,
< ユーザー>
+
WITH GRANT OPTION
7-178 IBM Informix SQL リファレンス・ガイド
+
AS
< 権限授与者 >
使用法
< 権限
授与者 >
ユーザーにアクセス権を付与するユーザーを識別します。現
行のユーザーがデフォルト権限授与者になります。
< ユーザー > アクセス権を受け取るユーザー ( 複数の場合もある ) を指名
します。アクセス権を PUBLIC に付与すると、アクセス権が
すべての許可ユーザー ( 現行と将来 ) のクラスに拡張されま
す。
使用法
GRANT 文は、ユーザー・アクセス権を拡張することはできますが、既存の
アクセス権を制限することはできません。後では、GRANT 文は、すでに
ユーザーに付与されているアクセス権に影響を与えません。データベー
ス・レベル・アクセス権が表レベル・アクセス権と衝突すると、制限のき
ついほうのアクセス権が優先されます。表レベル・アクセス権は、表また
はビューに付与することができます。
ユーザーに付与されたアクセス権は、REVOKE 文でキャンセルされるまで
有効です。権限授与者が付与したアクセス権は、権限授与者しか取り消す
ことができません。
SE
ROLLBACK WORK 文を使用して、正常に実行された GRANT 文を元に戻すこ
とはできません。GRANT 文が含まれているトランザクションをロールバッ
クしても、アクセス権は取り消されず、エラー・メッセージも出ません。♦
構文 7-179
データベース・レベル・アクセス権
データベース・レベル・アクセス権
CONNECT
RESOURCE
DBA
データベースを作成した場合、そのデータベースにアクセスできるのはそ
の作成者だけです。データベース管理者 (DBA) からデータベース・アクセ
ス権を付与されない限り、他のユーザーはそのデータベースにアクセスで
きません。
アクセス権を制御するデータベース・アクセス権には 3 つのレベルがあり
ます。それらのアクセス権レベルは、低い方から高い方へ、Connect、
Resource、および DBA です。これらのアクセス権は、次のキーワードに関
連付けられています。
CONNECT
Connect アクセス権はデータの照会と修正を行えるようにし
ます。修正したいオブジェクトを所有している場合は、デー
タベース・スキーマを修正することができます。Connect ア
クセス権を持つユーザーは、だれでも以下の機能を実行でき
ます。
!
ユーザーが必要な表レベル・アクセス権を持ってい
る場合、SELECT、INSERT、UPDATE、および DELETE
文を実行する
!
ユーザーが基礎表に対する Select アクセス権を持っ
ている場合、ビューを作成する
!
シノニムを作成する
!
一時表を作成し、一時表のインデックスを作成する
!
ユーザーが表またはインデックスを所有している ( ま
たは表に対する Alter、Index、または References アク
セス権を持っている ) 場合、表またはインデックス
を修正または削除する
!
ユーザーが表を所有している ( または WITHGRANT
OPTION キーワードによる表に対するアクセス権を付
与されている ) 場合、表またはビューに対するアク
セス権を付与する
7-180 IBM Informix SQL リファレンス・ガイド
データベース・レベル・アクセス権
RESOURCE
DBA
Resource アクセス権はデータベースの構造体を拡張できるよ
うにします。Connect アクセス権の機能に加え、Resource ア
クセス権の所有者は以下の機能も行えます。
!
新規表を作成する
!
新規インデックスを作成する
!
新規プロシージャーを作成する
Resource アクセス権の機能に加え、DBA アクセス権の所有者
は以下の機能も行えます。
!
DBA アクセス権を含め、すべてのデータベース・レ
ベル・アクセス権を他のユーザーに付与する
!
NEXT SIZE キーワードを使用してシステム・カタログ
のサイズを変更する
SE
!
systables 以外のすべてのシステム・カタログ表の行
を挿入、削除、または更新する
!
所有者には関係なく、すべてのオブジェクトを削除
する
!
表、ビュー、およびインデックスを作成し、他の
ユーザーをオブジェクトの所有者として指定する
!
DROP DATABASE 文を実行する
!
START DATABASE および ROLLFORWARD DATABASE 文
を実行する ♦
ユーザー Informix は、systables 表を含め、システム・カタログの表を変更
するために必要なアクセス権を持っています。
重要 : ユーザー Informix はシステム・カタログ表を修正できますが、これ
らの表の行を更新、削除、または変更しないでください。システム・カタ
ログ表を修正すると、データベースの整合性が壊れることがあります。
次の例は、PUBLIC キーワードを使用して、stores5 データベースの Connect
アクセス権をすべてのユーザーに付与します。
GRANT CONNECT ON stores5 TO PUBLIC
構文 7-181
表レベル・アクセス権
表レベル・ アクセス権
ALL
PRIVILEGES
,
INSERT
DELETE
SELECT
,
+
(
UPDATE
,
(
+
)
<列>
)
<列>
REFERENCES
,
(
<列>
)
INDEX
ALTER
表の所有者、つまり DBA は、7 つの表レベル・アクセス権を使用して表へ
のアクセスを制御します。4 つのアクセス権、Select、Insert、Delete、およ
び Update は、表データへのアクセスを制御します。残りの 3 つのアクセス
権は、Index ( インデックスの作成を制御する )、Alter ( 表定義の変更または
インデックスの変更を行う権限を制御する )、および References ( 表列に対
して参照制約を設定する権限を制御する ) です。
表の作成者はその所有者であり、所有権により 7 つの表レベル・アクセス
権をすべて受け取ります。表の所有権は、他のユーザーに譲渡できません。
7-182 IBM Informix SQL リファレンス・ガイド
表レベル・アクセス権
GRANT 文を使用するには、< ユーザー > に付与するアクセス権をリストし
ます。すべての表レベル・アクセス権を付与する場合は、ALL キーワード
を使用します。Select、Update、または References アクセス権を付与する場
合は、特定の列の名前をリストして、それらのアクセス権を制限すること
ができます。
Index アクセス権を付与して < ユーザー > に表の基礎構造体の変更を許容
する場合は、< ユーザー > は、データベース構造体を修正するためのデー
タベースに関する Resource アクセス権も持っていなければなりません。表
レベル・アクセス権は、次のように定義されます。
SELECT
SELECT 文のすべての列を命名する権限。1 つ以上の列をリス
トして、それらに対する Select アクセス権を制限することが
できます。
UPDATE
UPDATE 文のすべての列を命名する権限。1 つ以上の列をリ
ストして、それらに対する Update アクセス権を制限すること
ができます。
INSERT
行を挿入する権限。
DELETE
行を削除する権限。
INDEX
永久インデックスを作成する権限。Index アクセス権を利用
するには、Resource アクセス権を持っていなければなりませ
ん。(Connect アクセス権を持つユーザーは、だれでも一時表
のインデックスを作成できます。)
ALTER
列の追加または削除、列データ型の修正、または制約の追加
または削除を行う権限。
REFERENCES 参照制約の列を参照する権限。References アクセス権を利用
するには、Resource アクセス権を持っていなければなりませ
ん。( ただし、ALTER TABLE 文に参照制約を追加することが
できます。これを行う場合、データベースに対する Resource
アクセス権を持っている必要はありません。)1 つ以上の列を
リストして、Resource アクセス権をそれらに限定することが
できます。
ALL
すべてのアクセス権。PRIVILEGES キーワードはオプション。
構文 7-183
ストアード・プロシージャー・アクセス権
次の例は、すべての列に対する Delete および Select アクセス権、および
customer 表の customer_num、fname、および lname に対する Update アク
セス権を mary と john に付与します。
GRANT DELETE, SELECT, UPDATE (customer_num, fname, lname)
ON customer TO mary, john
これらの表レベル・アクセス権をすべての許可ユーザーに付与するには、
以下のように PUBLIC を使用します。
GRANT DELETE, SELECT, UPDATE (customer_num, fname, lname)
ON customer TO PUBLIC
アクセス権を制限するアクションは、表レベルで行う必要があります。
ユーザーが表を作成すると、データベース・サーバーは、キーワード
ALTER および References を除く、すべての表レベル・アクセス権を自動的
に PUBLIC に付与します。表アクセスを制限するには、次の例で示されて
いるように、すべてのアクセス権を取り消して、必要なアクセス権のみを
付与する必要があります。
REVOKE ALL ON customer FROM PUBLIC
GRANT ALL ON customer TO john, mary
GRANT SELECT (fname, lname, company, city)
ON customer TO PUBLIC
ANSI
ANSI 準拠データベースでは、表の作成時に、表の所有者のみがアクセス権
を受け取ります。♦
ストアード・プロシージャー・アクセス権
プロシージャー名を指定した EXECUTE ON オプションを使用して、ある
ユーザーが所有するストアード・プロシージャーを実行する権限を他の
ユーザーに付与します。
所有者アクセス権付きストアード・プロシージャーを作成する場合、デ
フォルトのアクセス権は PUBLIC です。
ANSI
ANSI 準拠のデータベースでプロシージャーを作成する場合、デフォルト・
レベルのアクセス権は付与されません。♦
7-184 IBM Informix SQL リファレンス・ガイド
WITH GRANT OPTION
WITH GRANT OPTION
WITH GRANT OPTION キーワードを使用すると、指定されたアクセス権と一
緒に、これらの同じアクセス権を他のユーザーに付与する権限が < ユー
ザー > に譲渡されます。ユーザーが作成するアクセス権のチェーンは、
ユーザーから始まり、< ユーザー > へ展開し、さらに、アクセス権を付与
するための権限を譲渡する任意の < ユーザー > へ展開します。WITH
GRANT OPTION キーワードを使用した場合は、アクセス権の拡散を制御で
きなくなります。
WITH GRANT OPTION キーワードを使用して付与したアクセス権を < ユー
ザー> から取り消す場合は、アクセス権のチェーンを切断してください。つ
まり、< ユーザー> からアクセス権を取り消すと、< ユーザー> から、または
その < ユーザー> が作成したチェーンからアクセス権を受け取ったすべて
のユーザーのアクセス権が自動的に取り消されます ( ただし、< ユーザー>、
または < ユーザー> からアクセス権を受け取ったユーザーが、
他の人によっ
て同じアクセス権のセットを付与された場合を除きます )。
次の例はこの状
態を示しています。表 < 項目 > の所有者は、これらの文を出してアクセス権
を Mary にのみ付与します。
REVOKE ALL ON items FROM PUBLIC
GRANT SELECT, UPDATE ON items TO mary WITH GRANT OPTION
Mary は、新規の権限を使用して Cathy と Paul の両人に表のアクセス権を付
与します。
GRANT SELECT, UPDATE ON items TO cathy
GRANT SELECT ON items TO paul
後で次の文を出して、< 項目 > に対する Mary のアクセス権をキャンセルし
ます。
REVOKE SELECT, UPDATE ON items FROM mary
この単一の文は、実質的には、< 項目 > に対するすべてのアクセス権を
Mary、Cathy、および Paul から取り消します。
他のいずれかのユーザーと一緒にアクセス権のチェーンをアクセス権の
ソースとして作成したい場合は、AS< 権限授与者 > 節を使用してください。
構文 7-185
AS < 権限授与者 >
AS < 権限授与者 >
AS < 権限授与者 > 節を使用すれば、別のユーザーと一緒にアクセス権の
チェーンをアクセス権のソースとして確立することができます。この場合
は、アクセス権のチェーンを切断する権限を放棄することになります。
DBA がアクセス権を付与した本人でない限り、そのアクセス権は DBA でさ
え取り消すことはできません。次の例はこの状態を示しています。ユー
ザーが表 < 項目 > の所有者であり、すべてのアクセス権を付与する権限と
一緒に、すべてのアクセス権を Tom に付与します。
REVOKE ALL ON items FROM PUBLIC
GRANT ALL ON items TO tom WITH GRANT OPTION
Select および Update アクセス権を Jim にも付与しますが、この付与は Tom
として行われます。( つまり、データベース・サーバーのレコードには、
ユーザーではなく、Tom が systabauth システム・カタログ表の権限授与者
であると示されます。)
GRANT SELECT, UPDATE ON items TO jim AS tom
後で、ユーザーは < 項目 > に対する Tom のアクセス権を取り消します。そ
のために、次の文を出します。
REVOKE ALL ON items FROM tom
しかし、同じ文で Jim のアクセス権を取り消そうとすると、データベース・
サーバーがエラーを戻します。
REVOKE SELECT, UPDATE ON items FROM jim
580: Cannot revoke permission.
データベース・サーバー・レコードにはオリジナルの権限授与者が Tom で
あると示されているため、ユーザーはそのアクセス権を取り消すことはで
きません。ユーザーが表の所有者であっても、他のユーザーが付与したア
クセス権を取り消すことはできません。
ビューでのアクセス権
新規作成表の場合と同様に、PUBLIC に対する自動認可は行われないため、
ビューでのアクセス権は明示的にユーザーに付与する必要があります。
7-186 IBM Informix SQL リファレンス・ガイド
参考資料
ビューを作成するとき、基礎の表を所有していない場合は、少なくとも表
または列に対する Select アクセス権を持っていなければなりません。
ビュー作成者の場合、基礎表に対して作成したアクセス権は、表に対して
作成したビューに適用されます。表に対するビューを所有しているので、
他のどのアクセス権も受け取らず、また他のどのアクセス権も付与できま
せん。ビューがすべての更新要件を満たしている場合は、表に対して持っ
ているすべての Delete、Insert、または Update アクセス権がビューにも適用
されます。
ビューに対するアクセス権を付与 ( または取り消し ) できるのは、基礎表の
所有者である場合、またはこれらのアクセス権を付与する権限と一緒に表
に対するアクセス権を受け取った場合です (WITH GRANT OPTION)。ビュー
を作成できる場合は、少なくともそれに対する Select アクセス権を付与す
ることができます。複数の表に対するビューを作成した場合、そのビュー
は Select アクセス権のみを持っています。ビューに対する Index、Alter、ま
たは References アクセス権を付与することはできません ( あるいは、All ア
クセス権には Index および Alter アクセス権がインクルードされているため、
All アクセス権を付与することもできません )。
現行データベースの表のみを参照するビューの場合、あるビューの所有者
がそのビューの基礎のいずれかの表に対する Select アクセス権を喪失する
と、そのビューは削除されます。
詳細については、ビューの作成についても説明している CREATE TABLE 文
を参照してください。
参考資料
本書では、CREATE TABLE および REVOKE 文を参照してください。
IBM Informix SQL チュートリアル・ガイド では、データベースと表レベル・ア
クセス権、およびアクセス権とセキュリティーの説明を参照してください。
構文 7-187
INFO
INFO
目的
INFO 文は、データベースと表に関するさまざまな情報を表示するために使
用します。
構文
DB
ISQL
+
INFO
TABLES
COLUMNS
FOR
表名
7-440
ページ
INDEXES
ACCESS
PRIVILEGES
REFERENCES
STATUS
使用法
次のタイプの情報は、INFO 文を出して表示することができます。
!
現行データベース内の表の名前
!
指定された表の列情報
!
指定された表のインデックス情報
!
指定された表のアクセス権
!
指定された表の列の References アクセス権
!
指定された表の状態に関する情報
SQL 文 INFO を使用する代わりに、SQL メニューまたは TABLE メニューの
Info オプションを使用して、同じ情報を表示することができます。
7-188 IBM Informix SQL リファレンス・ガイド
使用法
表、列、およびインデックスの表示
INFO 文でキーワードを使用して、表のリスト、表の列に関する情報、また
は表のインデックスに関する情報を表示することができます。
TABLES キーワードを使用して、現行データベース内の表のリストを表示し
ます。表の名前は、以下の 2 つの方法のうちのいずれかで表示できます。
!
cust_calls 表の所有者である場合は、cust_calls として表示する。
!
cust_calls 表の所有者でない場合は、表名の前に所有者の名前を置
き、“june”.cust_calls のように表示する。
COLUMNS FOR キーワードを使用して、指定された表の列の名前とデータ
型、および NULL 値を使用できるかどうかを表示します。次の例は、INFO
文と、その結果表示される表の列に関する情報を示しています。
図 7-43
列情報を要求する INFO 文
INFO COLUMNS FOR cust_calls
図 7-44
列情報の表示
Column name
Type
customer_num
call_dtime
user_id
call_code
call_descr
res_dtime
res_descr
INTEGER
DATETIME YEAR TO MINUTE
CHAR(18)
CHAR(1)
CHAR(240)
DATETIME YEAR TO MINUTE
CHAR(240)
Nulls
no
yes
yes
yes
yes
yes
yes
INDEXES FOR キーワードを使用して、指定された表の各インデックスの名前、所
有者、および型、インデックスがクラスター化されているかどうか、および
インデックス付けされた列の名前を表示します。次の例は、INFO 文と、そ
の結果表示される表のインデックスに関する情報を示しています。
構文 7-189
使用法
図 7-45
インデックス情報を要求する INFO 文
INFO INDEXES FOR cust_calls
図 7-46
インデックス情報の表示
Index name
Owner
Type
Cluster
Columns
c_num_dt_ix
velma
unique
No
c_num_cus_ix
velma
dupls
No
customer_num
call_dtime
customer_num
アクセス権、参照、および状態の表示
INFO 文にキーワードを使用して、
アクセス権 (References アクセス権も含む )
に関する情報または表の状態を表示することができます。
ACCESS FOR または PRIVILEGES FOR キーワードを使用して、指定された表
の 6 種類のユーザー・アクセス権を表示します。次の例は、INFO 文と、そ
の結果表示される表に関するユーザー・アクセス権を示しています。
図 7-47
アクセス権情報を要求する INFO 文
INFO PRIVILEGES FOR cust_calls
図 7-48
アクセス権情報の表示
User
public
Select
Update
All
All
Insert Delete Index Alter
Yes
Yes
Yes
No
REFERENCES FOR キーワードを使用して、指定された表の列に関するユー
ザーの References アクセス権を表示します。次の例は、INFO 文と、その結
果の表示を示しています。
図 7-49
References アクセス権情報を要求する INFO 文
INFO REFERENCES FOR newtable
7-190 IBM Informix SQL リファレンス・ガイド
使用法
図 7-50
References アクセス権情報の表示
User
Column References
betty
col1
col2
col3
All
None
wilma
public
この出力は、ユーザー “betty” は指定された表の列 col1、col2、および col3
を参照でき、ユーザー “wilma” は表のすべての列を参照でき、“public” は表
のどの列にもアクセスできないことを示しています。
データベース・レベル・アクセス権に関する情報が必要な場合は、SELECT
文を使用して、sysusers システム・カタログ表にアクセスする必要があり
ます。
データベースおよび表アクセス権の詳細については、GRANT および
REVOKE 文を参照してください。
STATUS FOR キーワードを使用して、指定された表の更新記録の所有者、行
長、行および列の数、作成日、および状態を表示します。次の例は、INFO
文と、その結果表示される IBM Informix SE データベース・サーバー上の表
に関する状態情報を示しています。
図 7-51
状態情報を要求する INFO 文
INFO STATUS FOR cust_calls
図 7-52
状態情報の表示
Table Name
Owner
Row Size
Number of Rows
Number of Columns
Date Created
Audit Trail File
OL
cust_calls
velma
517
7
7
01/28/1991
"Audit Trail File" 行は、IBM Informix OnLine の表では表示されません。♦
構文 7-191
INSERT
INSERT
目的
INSERT 文は、1 つ以上の新規行を表またはビューに挿入するために使用し
ます。
構文
INSERT INTO
表名
7-440
ページ
ビュー名
7-444
ページ
VALUES 節
7-197 ページ
,
(
< 列名 >
)
SELECT 文
( サブセット )
7-200 ページ
シノニム名
7-438
ページ
EXECUTE PROCEDURE
プロシー
ジャー名
7-429
ページ
(
,
)
引数
引数
< パラメー
ター名 >
=
SPL
式
8-23 ページ
SELECT
文
( 単一の )
7-263 ページ
< 列名 >
新規データを受け取る列です。
< パラメー
ター名 >
その CREATE PROCEDURE 文によって定義されたパラメーター
の名前です。
7-192 IBM Informix SQL リファレンス・ガイド
使用法
使用法
INSERT 文を使用して、列値の単一の新規行、または他の表から選択した
データを使用する新規行のグループのいずれかを作成することができます。
表にデータを挿入するには、表の所有者であるか、または表に対する Insert
アクセス権を持っていなければなりません (7-178 ページの GRANT 文を参
照してください )。ビューにデータを挿入するには、必須の Insert アクセス
権を持ち、かつビューが、このセクションで後述する「ビューへの行の挿
入」の要件を満たしていなければなりません。
データ整合性制約が関連している表にデータを挿入する場合は、挿入する
データが制約基準を満たしていなければなりません。満たしていないと、
データベース・サーバーがエラーを戻します。
列の指定
1 つ以上の列を明示的に指定していない場合は、表の作成時または最後の
変更時に確立された表の列順序を使用して、データが列に挿入されます。
列順序のリストが、syscolumns システム・カタログ表に示されています。
E/C
DESCRIBE 文を SELECT 文と一緒に使用して、表の列の列順序またはデータ
型を取得することができます。(DESCRIBE 文の詳細については、7-127 ペー
ジを参照してください。) ♦
INSERT INTO 節に指定された列の数は、暗黙的または明示的に、VALUES 節
に指定された値の数、または SELECT 文によって指定された値の数と等し
くなければなりません。列を指定する場合、それらの列は、リストされた
順序でデータを受け取ります。VALUES キーワードの後の最初の値は、1 番
目にリストされている列に挿入され、2 番目の値は、2 番目にリストされて
いる列に挿入される、というように処理されます。
ビューへの行の挿入
ビューに対する Insert アクセス権を持っている場合は、単一表 ビューに
データを挿入することができます。これを行うために、SELECT 文の定義で
1 つだけの 表から選択でき、それには以下のどのコンポーネントも含める
ことはできません。
!
DISTINCT キーワード
構文 7-193
カーソルによる行の挿入
!
GROUP BY 節
!
導出値 ( 仮想列とも呼ばれる )
!
集計値
ビュー内で未定義になっている基礎表内の列は、デフォルト値を受け取る
か、または、デフォルトが指定されていなければ、NULL 値を受け取りま
す。これらのいずれかの列にデフォルト値の指定がなく、しかも NULL 値
が許可されていない場合は、挿入は失敗します。
データ整合性制約を使用すれば、ユーザーが、ビューを定義する SELECT
文に適合しない値を基礎表に挿入するのを防止することができます。詳細
については、CREATE VIEW 文の WITH CHECK OPTION の説明 (7-101 ページ )
を参照してください。
複数のユーザーが単一の表に機密情報を入力する場合は、USER 関数を使用
して、それぞれのユーザーが挿入した特定の行にのみ表示を限定すること
ができます。次の例には、この効果を示すビューと INSERT 文が含まれてい
ます。
CREATE VIEW salary_view AS
SELECT lname, fname, current_salary
FROM salary
WHERE entered_by = USER
INSERT INTO salary
VALUES ("Smith", "Pat", 75000, USER)
カーソルによる行の挿入
I4GL
ESQL
カーソルを INSERT 文に関連付ける場合は、OPEN、PUT、および CLOSE 文
を使用して、INSERT 操作を実行する必要があります。トランザクションを
持っているが、ANSI 準拠でないデータベースの場合は、これらの文をトラ
ンザクション内で出さなければなりません。
INSERT 文に関連付けられているカーソルを使用する場合は、行は、ディス
クに書き込まれる前にバッファーに入れられます。INSERT バッファーは、
以下の条件が発生したときにフラッシュされます。
!
バッファーがいっぱいになった
!
FLUSH 文が実行された
!
CLOSE 文がカーソルをクローズした
!
OPEN 文が暗黙的にクローズされた後、カーソルを再オープンした
7-194 IBM Informix SQL リファレンス・ガイド
トランザクションなしデータベースへの行の挿入
!
COMMIT WORK 文がトランザクションを終了した
INSERT バッファーがフラッシュされると、フロントエンド・プロセッ
サーは、適切なデータ変換を実行してから行をデータベース・サーバーに
送信します。データベース・サーバーは、バッファーを受け取ると、それ
らの行を一度にデータベースに挿入します。データベース・サーバーが
バッファー内の行をデータベースに挿入しているときにエラーが発生した
場合は、正常に挿入された最後の行より後の、バッファー内の行が廃棄さ
れます。♦
トランザクションなしデータベースへの行の挿入
トランザクションなしデータベースに行を挿入する場合は、挿入した行を
復元するための明示的なアクションを実行しなければなりません。たとえ
ば、いくつかの行を挿入した後で INSERT 文が失敗した場合は、正常に挿入
された行は表に残されます。失敗した挿入を自動的に復旧させることはで
きません。
トランザクション付きデータベースへの行の挿入
トランザクション付きデータベースに行を挿入し、明示的なトランザク
ションを使用する場合は、ROLLBACK WORK 文を使用して挿入を元に戻す
ことができます。挿入の前に BEGIN WORK を実行せず、挿入が失敗した場
合は、挿入の開始以降に行われたすべてのデータベースの変更が、データ
ベース・サーバーによって自動的にロールバックされます。
ANSI
行を ANSI 準拠のデータベースに挿入する場合は、トランザクションは暗黙
的であり、すべてのデータベース変更がトランザクションの内部で行われ
ます。この場合、INSERT 文が失敗したら、ROLLBACK WORK 文を使用して
挿入を元に戻すことができます。♦
トランザクションの内部で挿入した行は、そのトランザクションが終了す
るまでロックされたままになります。トランザクションの終了は、データ
ベースに対してすべての変更が行われる COMMIT WORK 文、または、デー
タベースに対して変更が行われない ROLLBACK WORK 文で行います。単一
の INSERT 文で実行される行の数が大きい場合は、同時ロックの最大許容数
を超えることがあります。このような状態にならないようにするには、ト
ランザクション当たりの挿入行を減らすか、または、ページや表全体を
ロックしてから INSERT 文を実行してください。
構文 7-195
トランザクション付きデータベースへの行の挿入
SE
このような状態にならないようにするには、トランザクション当たりの挿
入行を減らすか、または表全体をロックしてから INSERT 文を実行してくだ
さい。♦
7-196 IBM Informix SQL リファレンス・ガイド
VALUES 節
VALUES 節
VALUES 節
VALUES
,
I4GL
ESQL
(
< 変数
名>
)
ESQL
:< 標識変数 >
$< 標識変数 >
NULL
リテラル番号
7-427 ページ
引用符付きストリング
7-431 ページ
+
USER
7-381 ページ
リテラル日時
(DATETIME) 型
7-421 ページ
リテラル時間隔
(INTERVAL) 型
7-424 ページ
TODAY
7-383 ページ
OL
CURRENT
7-383 ページ
SITENAME
7-382 ページ
DBSERVERNAME
7-382 ページ
< 標識変数 > いつ ESQL 文がホスト変数に NULL 値を戻すかを示す、ホス
ト変数に関連付けられた変数です。
< 変数名 >
IBM Informix 4GL プログラムまたは Informix 埋め込み言語プロ
グラムに定義されているプログラム変数、ホスト変数、また
はレコード名です。
構文 7-197
VALUES 節
VALUES 節を使用すると、一度に 1 行のみを挿入することができます。
VALUES キーワードの後の各値は、INSERT INTO 節にリストされている対応
する列に割り当てられます ( または、列のリストが指定されていなければ、
列順序で )。
I4GL
表に対してすでに RECORD 型プログラム変数を定義していれば、値のリス
トの代わりにプログラム変数を使用することができます。♦
引用符付きストリングを列に挿入する場合は、ストリングの最大長は 256
バイトです。256 より大きな値を挿入すると、データベース・サーバーが
エラーを戻します。
I4GL
変数を使用する場合は、256 バイトより長い引用符付きストリングを挿入
することができます。♦
ESQL
値と列型の互換性
挿入する値がそれを受け取る側の列と同じデータ型でなくてもよい場合で
も、値の型と列の型は互換性を持っていなければなりません。CHAR 列に
は 文字のみを入力でき、数値型列には数値データを表す数字または文字の
みを挿入できます。次の例は、customer 表の列に値を挿入します。
INSERT INTO customer
VALUES (0, "Nadia", "Broadam", "Ski & Stuff",
"89 Coniston Road", NULL, "Short Hills",
"NJ", "07079", "201-457-4100")
データベース・サーバーはデータ変換を完了するためにあらゆる努力をし
ます。データを変換できない場合は、INSERT 操作は失敗します。ターゲッ
ト・データ型が指定された値を保持できない場合も、データ変換は失敗し
ます。たとえば、SMALLINT データ型として定義された列に整数 123456 を
挿入することはできません。なぜならば、このデータ型はそれほど大きな
数値を保持できないからです。
7-198 IBM Informix SQL リファレンス・ガイド
VALUES 節
SERIAL 列への値の挿入
連続したシリアル (SERIAL) 型値を表の SERIAL 列に挿入したい場合は、
INSERT 文の SERIAL 列にゼロを入力してください。SERIAL 列がゼロに設定
されると、データベース・サーバーは次に高い値を割り当てます。明示的
な値を SERIAL 列に入力したい場合は、非ゼロ値を入力してください。ただ
し、入力する前に、その値が、表内にすでに入っている値と重複していな
いことを確認する必要があります。SERIAL 列が一意的にインデックス付け
されているか、または一意性制約を持っている場合、表内にすでに入って
いる値と重複する値を入力しようとすると、エラーが発生します。SERIAL
データ型の詳細については、第 3 章、『データ型』を参照してください。
VALUES 節での関数の使用
現在日付、日時、現行ユーザーのログイン名、または現行 OnLine データ
ベースのデータベース・サーバー名を列に挿入できます。TODAY キーワー
ドはシステム日付を戻します。CURRENT キーワードはシステム日時を戻し
ます。USER キーワードは、現行ユーザーのログイン・アカウント名が入っ
ている 8 文字のストリングを戻します。SITENAME または DBSERVERNAME
キーワードは、現行データベースが入っているデータベース・サーバー名
を戻します。次の例は、CURRENT および USER キーワードを使用して、新
規行を cust_calls 表に挿入します。
INSERT INTO cust_calls (customer_num, call_dtime, user_id,
call_code, call_descr)
VALUES (212, CURRENT, USER, "L", "2 days")
VALUES 節での NULL の挿入
INSERT 文を実行すると、値が指定されていないすべての列、およびデフォ
ルト値が関連付けられていない、明示的にリストされていないすべての列
に、NULL 値が挿入されます。NULL キーワードを使用して、列に NULL 値
を割り当てるように指示することもできます。次の例は、orders 表の 3 つ
の列に値を挿入します。
INSERT INTO orders (orders_num, order_date, customer_num)
VALUES (0, NULL, 123)
この例では、NULL 値が明示的に order_date 列に挿入され、INSERT INTO 節
に明示的にリストされていない orders 表の他のすべての列にも NULL 値が
挿入されます。
構文 7-199
SELECT 文のサブセット
SELECT 文のサブセット
挿入データを他の表 ( 複数の場合もある ) から選択する場合は、SELECT 文
から作成されたデータ行を表に挿入することができます。次の SELECT 節
はサポートされません。
!
INTO TEMP 節
!
ORDER BY 節
さらに、次の例に示されているように、SELECT 文の FROM 節に、行を挿入
する表と同じ表名を含めることはできません。
INSERT INTO newtable
SELECT item_num, order_num, quantity, stock_num,
manu_code, total_price
FROM items
SELECT 文の詳細説明が、7-263 に記載されています。
動的管理文としての INSERT の使用
ESQL
INSERT を使用すれば、コンパイル時に不明な構造のデータを挿入できる
コードを書かなければならないような状況を処理できます。詳細について
は、使用している IBM Informix 埋め込み言語製品マニュアルの動的管理セク
ションを参照してください。♦
ストアード・プロシージャーによるデータの挿入
プロシージャー呼び出しから取得したデータ行を表に挿入することができ
ます。
プロシージャーから戻された値は、列リストの値と、数とデータ型が一致し
ていなければなりません。列の数とデータ型が、列リストと一致していな
ければなりません。
7-200 IBM Informix SQL リファレンス・ガイド
参考資料
参考資料
本書では、SELECT 文を参照してください。
また本書では、特定の動的管理文について、DECLARE、DESCRIBE、
EXECUTE、FLUSH、OPEN、PREPARE、および PUT を参照してください。
IBM Informix SQL チュートリアル・ガイド では、データの挿入に関する説明を
参照してください。
構文 7-201
LOAD
LOAD
目的
LOAD 文は、データを ASCII オペレーティング・システム・ファイルから既
存の表、シノニム、またはビューに挿入するために使用します。
構文
I4GL
DB
ISQL
+
LOAD FROM
" < ファイル名 > "
I4GL
" < 区切り文字 > "
DELIMITER
< ファイル名
変数 >
INSERT INTO
I4GL
表名
7-440
ページ
,
シノニム名
7-438
ページ
ビュー名
7-444
ページ
I4GL
<列>
< 区切り文字
変数 >
(
<列>
)
< 挿入
変数 >
表 名、シノニム名、またはビュー名 に属している列です。
すべての列を表、シノニム、またはビューにロードするので
なければ、列名を指定してください。
< 区切り
文字 >
ロード・ファイルで区切り文字として使用する文字が含まれ
ている引用符付きストリングです。
< 区切り
文字変数 >
フィールド間の区切り文字として使用する文字が含まれてい
る文字変数です。デフォルトの区切り文字は垂直バー (| =
ASCII 124) です。
7-202 IBM Informix SQL リファレンス・ガイド
使用法
< ファイル
名>
ロードするデータが含まれているファイルを指定する引用符
付きストリング定数または文字ストリングです。この中には、
オペレーティング・システム・ファイルのパス名が含まれて
います。
< ファイル
名変数 >
ロードするデータが含まれているファイルの名前を指定する
CHARACTER または VARCHAR 変数です。
< 挿入変数 > INSERT 文が含まれている CHARACTER または VARCHAR 変数
です。IBM Informix 4GL は、INSERT 文を使用して、新規データ
をロードする表と列を決定します。INSERT 文には、VALUES
または SELECT 節を含めることはできません。(7-192 ページ
の INSERT 文を参照してください。)
使用法
LOAD 文は新規行を表に追加します。この文は既存のデータを上書きしま
せん。
既存の行と同じキーを持つ行を追加することはできません。
LOAD 文を使用するには、データを挿入する表に対して INSERT アクセス権
を持っていなければなりません。データベース・レベル・アクセス権と表
レベル・アクセス権については、7-178 ページの GRANT 文を参照してくだ
さい。
データベースがトランザクションを含んでいるが、ANSI 準拠になっていな
い場合は、BEGIN WORK 文を出してから、LOAD 文を使用してください。
I4GL
PREPARE 文を使用して LOAD 文をプリプロセッサーで処理することはでき
ません。♦
LOAD FROM ファイル
LOAD FROM ファイルは、表に追加するデータが含まれているファイルで
す。UNLOAD 文によって作成されたファイルを LOAD FROM ファイルとして
使用することができます。
列のリストを INSERT INTO 節にインクルードしない場合は、ファイルの
フィールドが、表に対して指定された列と、数、順序、および型の点で一
致しなければなりません。
構文 7-203
使用法
ファイルの各行は同じフィールド数でなければなりません。定義する
フィールドの長さは、対応する列に対して指定した長さ以下でなければな
りません。IBM Informix 4GL、IBM Informix SQL、または DB-Access が、対応す
る列のデータ型に変換できる値だけを指定してください。次の表は、
IBM Informix 製品で予期している LOAD FROM ファイルのデータ型を示して
います。
図 7-53
LOAD 文のデータ型と入力フォーマット
データの型
予期される入力フォーマット
空白
区切り文字間の 1 つ以上の空白文字。文字 (CHAR) 型列に
対応しないフィールドに先行の空白をインクルードする
ことができます。
日付
yyyy/mmm/dd のフォーマットになっている文字ストリン
グ。mm は 2 桁の数字でなければなりません。年が 20 世紀
の場合は、年に 2 桁の数字を使用できます。この値は実
際の日付でなければなりません。たとえば、2 月 30 日は
正しくありません。
MONEY
先行の通貨記号を持つことができる値。
NULL
区切り文字間に何もないこと。
yyyy-mm-dd hh:mi:ss.fff のフォーマットになっている文字ス
時刻
トリング。
DATETIME 値または INTERVAL 値に型仕様または修飾子
を使用することはできません。年は 4 桁の数字、月は 2 桁
の数字でなければなりません。
以下のいずれかの特殊文字をフィールド値の一部としてインクルードする
場合は、その文字の前にバックスラッシュ (\) を付けなければなりません。
!
バックスラッシュ
!
区切り文字
!
VARCHAR 列値の任意の場所の改行記号
!
TEXT 値の末尾に改行記号
バックスラッシュをフィールド区切り記号として使用しないでください。
この文字はエスケープ文字として働き、次の文字をデータの一部として解
釈するように LOAD コマンドに通知します。
7-204 IBM Informix SQL リファレンス・ガイド
使用法
文字 (CHAR) 型列に対応しているフィールドには、フィールドの最大定義
数よりも多くの文字を含めることができます。IBM Informix 4GL、
IBM Informix SQL、および DB-Access は、これらの余分の文字を無視します。
VARCHAR または BLOB データ型が含まれているファイルをロードする場合
は、以下の点に注意してください。
!
文字 (VARCHAR を含む ) フィールドが列サイズより長い LOAD 文を
提供すると、余分の文字は廃棄されます。
!
BYTE フィールドに先行ゼロと後続の空白文字を入れることはでき
ません。
!
VARCHAR および TEXT を含め、文字フィールドでは、バックスラッ
シュを使用して埋め込み区切り文字とバックスラッシュ文字をエス
ケープします。
!
BYTE 列にロードするデータは ASCII 16 進数フォームになっていな
ければなりません。BYTE 列に先行空白文字を含めることはできま
せん。
!
LOAD FROM ファイル内の区切り文字として、0-9、a-f、A-F、空白、
タブ、およびバックスラッシュを使用しないでください。
入力ファイルのフォーマットについて詳しくは、IBM Informix OnLine 管理者ガ
イド または IBM Informix SE Administrator’s Guide の dbload ユーティリティーの
説明を参照してください。
次の例は、new_custs という架空の入力ファイルの内容を示しています。
0|Jeffery|Padgett|Wheel Thrills|3450 El Camino|Suite 10|
Palo Alto|CA|94306||
0|Linda|Lane|Palo Alto Bicycles|2344 University||
Palo Alto|CA|94301|(415)323-6440
このデータは次の情報を送信します。
!
ゼロを指定してシリアル (SERIAL) 型フィールドを示します。
!
デフォルトの区切り文字である垂直バー (|) を使用します。
!
最初の行の phone フィールドと、2 番目の行の address2 フィールド
に NULL 値を割り当てます。
次の文は、new_custs ファイルの値を jason が所有する customer 表にロー
ドします。
LOAD FROM "new_custs" INSERT INTO jason.customer
構文 7-205
参考資料
DELIMITER 節
DELIMITER 節を使用して、入力ファイルの行の各列に含まれているデータ
を分離する区切り文字を指定します。この節を省略すると、IBM Informix
4GL、IBM Informix SQL、および DB-Access は、DBDELIMITER 環境変数を調
べます。
DBDELIMITER 変数が設定されていなければ、デフォルト区切り文字は垂
直バー (| = ASCII 124) です。DBDELIMITER 環境変数の設定方法については、
本書の第 4 章を参照してください。
次の文は、セミコロン (;) を区切り文字として識別します。
LOAD FROM "/a/data/ord.loadfile" DELIMITER ";"
INSERT INTO orders
INSERT INTO 節
INSERT INTO 節を使用して、新規データをロードする表、シノニム、または
ビューを指定します。( 詳細については、7-438 ページ以降に説明されてい
るシノニム名、表名、およびビュー名を参照してください。)
以下のいずれかの条件が当てはまる場合にのみ、列名を指定してください。
!
データをすべての列にはロードしない。
!
入力ファイルが列のデフォルト順序 ( 表を作成するときに決定され
る ) に一致していない。
次の例は、price および discount 列を、データを追加する列としてのみ識別
します。
LOAD FROM "/tmp/prices" DELIMITER ","
INSERT INTO norman.worktab(price,discount)
参考資料
本書では、UNLOAD および INSERT 文を参照してください。
IBM Informix OnLine 管理者ガイド または IBM Informix SE Administrator’s Guide で
は、dbload ユーティリティーの説明を参照してください。
7-206 IBM Informix SQL リファレンス・ガイド
LOCK TABLE
LOCK TABLE
目的
LOCK TABLE 文は、他のプロセスによる表へのアクセスを制御するために
使用します。
構文
+
LOCK TABLE
表名
7-440
ページ
IN
SHARE
MODE
EXCLUSIVE
シノニム名
7-438
ページ
使用法
表を所有している場合や、表または表の列に対する Select アクセス権を
持っている場合は、直接認可または PUBLIC の認可により表をロックするこ
とができます。表が他のプロセスによって排他モードですでにロックされ
ている場合や、表が他のユーザーによって共有モードでロックされている
ときに排他ロックをかけようとした場合は、LOCK TABLE 文は失敗します。
SHARE キーワードは表を共有モードでロックします。共有モードの場合、
他のプロセスの 読み込みアクセスは可能ですが、書き込み アクセスは拒否
されます。表が共有モードでロックされている場合は、他のプロセスは
データの更新または削除を行うことができません。
EXCLUSIVE キーワードは表を排他モードでロックします。排他モードは、
他のプロセスによる表への読み込みアクセスも書き込みアクセスも拒否し
ます。
ALTER INDEX、CREATE INDEX、DROP INDEX、および ALTER TABLE 文を実行
すると、排他モード・ロッキングが自動的に行われます。
SE
IBM Informix SE データベース・サーバーは、複数のユーザーが 1 つの表を共
有モードでロックするのを許可しません。♦
構文 7-207
トランザクション付きデータベース
トランザクション付きデータベース
データベースをトランザクション付きで作成した場合、LOCK TABLE 文は、
トランザクション内で実行される場合にのみ成功します。前もって BEGIN
WORK 文を出しておかないと、LOCK TABLE 文を実行することはできませ
ん。
ANSI
トランザクションは、ANSI 準拠データベースでは暗黙的です。LOCK TABLE
文は、指定された表が他のプロセスによってまだロックされていないとき、
常に成功します。♦
次のガイドラインは、トランザクション内で LOCK TABLE 文を使用する場
合に適用されます。
!
システム・カタログはロックできません。
!
1 つのトランザクション内で共有表ロックと排他表ロックを切り替
えることはできません。たとえば、共有モードで表をロックする
と、そのロック・モードを排他ロック・モードにアップグレードす
ることはできません。
!
表の行にアクセスする前に LOCK TABLE 文を出すと、表に対して行
ロックは設定されません。このようにして、行レベル・ロッキング
を上書きできるため、IBM Informix OnLine 構成に定義されたロック
の最大数を超過するという状態を回避することができます。
IBM Informix SE データベース・サーバーによって認められている
ロックの最大数は、データベース・サーバーを実行するオペレー
ティング・システムの特性です。♦
SE
!
トランザクションが完了すると、すべての行および表ロックがアン
ロックされます。トランザクションを使用するデータベース内では
UNLOCK TABLE 文は失敗します。
次の例は、トランザクション・ロギングで作成されたデータベース内の表
のロック・モードを変更する方法を示しています。
BEGIN WORK
LOCK TABLE orders IN EXCLUSIVE MODE
...
COMMIT WORK
BEGIN WORK
LOCK TABLE orders IN SHARE MODE
...
COMMIT WORK
7-208 IBM Informix SQL リファレンス・ガイド
トランザクションなしデータベース
トランザクションなしデータベース
トランザクションなしで作成されたデータベースでは、LOCK TABLE 文を使
用して設定された表ロックは、以下のいずれかが行われるとアンロックさ
れます。
!
UNLOCK TABLE が実行される。
!
ユーザーがデータベースをクローズする。
!
ユーザーがデータベースを終了する。
表のロック・モードを変更するには、UNLOCK TABLE 文を使用してアン
ロックしてから、新規の LOCK TABLE 文を出します。
次の例は、トランザクションなしで作成されたデータベース内の表のロッ
ク・モードを変更する方法を示しています。
LOCK TABLE orders IN EXCLUSIVE MODE
...
UNLOCK TABLE orders
...
LOCK TABLE orders IN SHARE MODE
参考資料
本書では、BEGIN WORK、SET ISOLATION、SET LOCK MODE、COMMIT
WORK、ROLLBACK WORK、および UNLOCK TABLE 文を参照してください。
IBM Informix SQL チュートリアル・ガイド では、ロックの説明を参照してくだ
さい。
構文 7-209
OPEN
OPEN
目的
OPEN 文は、SELECT または INSERT 文に関連付けられたカーソルを起動し
て、SELECT または INSERT 文を開始するために使用します。
構文
I4GL
ESQL
< カーソル
識別子 >
OPEN
,
ESQL
< カーソ
ル変数 >
USING
< 変数名 >
ESQL
SQL DESCRIPTOR
E/C
"
< 記述子 >
"
< 記述子
変数 >
DESCRIPTOR
<sqlda ポイ
ンター >
< カーソル
識別子 >
前の DECLARE 文によって作成されたカーソルを識別します。
< カーソル
変数 >
前の DECLARE 文によって作成されたカーソルを識別する埋
め込み言語変数です。
< 記述子 >
割り当て済みシステム記述子領域を識別する引用符付きスト
リングです。
< 記述子
変数 >
割り当て済みシステム記述子領域を識別する埋め込み言語変
数名です。
7-210 IBM Informix SQL リファレンス・ガイド
使用法
<sqlda
PREPARE 文で処理された文の中の疑問符 ( ?) 位置指定値に対
ポインター > 応する型とメモリー格納場所を定義した sqlda 構造体をポイ
ントします。
< 変数名 >
PREPARE 文で処理された文の中の ? 位置指定値と置き換え
られる内容を持つプログラムまたはホスト変数です。
使用法
カーソルの作成と関連付けは DECLARE 文を使用して行われます (7-108
ページを参照 )。プログラムがカーソルをオープンすると、関連付けられた
SELECT または INSERT 文がデータベース・サーバーに渡され、実行が開始
されます。プログラムが必要なすべての行を検索または挿入したら、
CLOSE を使用してカーソルをクローズしてください。
データベース・サーバーが実行するアクションは、カーソルが SELECT 文
に関連付けられているか、INSERT 文に関連付けられているかによって異な
ります。
EXECUTE PROCEDURE) 文は、
カーソルに関連付けられた (SELECT、INSERT、
OPEN 文によって暗黙的に処理されます。
任意の時点で 1 つのプログラムに
許可される処理済みオブジェクトとオープン・カーソルの合計数は、使用で
きるメモリーによって制限されます。FREE 文を使用してデータベース・サー
バー・リソースを解放することができます ( カーソルが解放されます )。
ANSI
すでにオープンしているカーソルをオープンすると、エラー・コードが戻
されます。♦
SELECT カーソルのオープン
SELECT カーソルまたは UPDATE カーソルのいずれかをオープンすると、
SELECT 文が、USING 節に指定されているすべての値と一緒にデータベー
ス・サーバーに渡されます。( この文がすでに PREPARE 文で処理済みであ
れば、この文はその処理時にデータベース・サーバーに渡されています。)
データベース・サーバーは、アクティブ・セットの最初の行を検出または
構成するための照会を処理します。
構文 7-211
INSERT カーソルのオープン
データベース・サーバーが照会を受信するのはこれが最初であるため、こ
の時点で多くのエラーが検出されます。データベース・サーバーは実際に
は最初のデータ行を戻さないで、SQLCA の SQLCODE フィールドに戻り
コードを設定します。各製品内のこのフィールドの名前が次の表に示され
ています。
4GL
ESQL/C
ESQL/COBOL
SQLCA.SQLCODE
STATUS
sqlca.sqlcode
SQLCODE
SQLCODE OF SQLCA
戻りコード値は、次のように、負の数またはゼロです。
負の数
SELECT 文にエラーが検出されました。
ゼロ
SELECT 文は有効です。
SELECT 文は有効であるが行がその基準に一致しない場合は、最初の FETCH
文が 100 の値 (SQLNOTFOUND)、つまりデータの終わりを戻します。
次の例は、IBM Informix 4GL の簡単な OPEN 文を示しています。
DECLARE s_curs CURSOR FOR
SELECT * FROM orders
OPEN s_curs
明示的なトランザクション付きのデータベースを処理する場合は、トラン
ザクション内で UPDATE カーソルをオープンする必要があります。この要
件は、WITH HOLD キーワードを使用してカーソルを宣言した場合は撤回さ
れます。(7-108 ページの DECLARE 文を参照してください。)
INSERT カーソルのオープン
INSERT カーソルをオープンすると、カーソルは INSERT 文をデータベー
ス・サーバーに渡し、データベース・サーバーはキーワードと列名の妥当
性を検査します。データベース・サーバーは、INSERT バッファーが新規
データを保持するためのメモリーも割り当てます。(7-108 ページの
DECLARE 文を参照してください。)
INSERT 文に関連付けられた OPEN 文に USING 節を含めることはできませ
ん。
7-212 IBM Informix SQL リファレンス・ガイド
SELECT カーソルの再オープン
次の IBM Informix 4GL コード・フラグメントは、INSERT カーソルを指定し
た OPEN を示しています。
図 7-54
IBM Informix 4GL における INSERT カーソルを指定した OPEN 文
PREPARE s1 FROM
"INSERT INTO manufact ",
"VALUES ("NPR", "Napier")"
DECLARE in_curs CURSOR FOR s1
OPEN in_curs
PUT in_curs
CLOSE in_curs
SELECT カーソルの再オープン
USING 節で指定した値は、カーソルのオープン時にのみ評価されます。
カーソルがオープンしている間は、USING 節に対して後続の変更を行って
も、選択された行のアクティブ・セットは変更されません。アクティブ・
セットは、プログラムによってオープン・カーソルがクローズされる ( こ
れによりアクティブ・セットが解放される ) まで、または後続の OPEN 文に
よってカーソルがクローズされ、再オープンされるまで、不変です。
カーソルを再オープンすると、変数の現行値に基づいて新規のアクティ
ブ・セットが作成されます。前の OPEN 文以降にプログラム変数が変更さ
れた場合は、カーソルの再オープンによりまったく異なるアクティブ・
セットが生成されることがあります。変数の値が未変更であっても、表の
データが前の OPEN 文以降に変更された場合は、アクティブ・セットの行
が異なることがあります。
INSERT カーソルの再オープン
すでにオープンされている INSERT カーソルを再オープンすると、実質的
に INSERT バッファーをフラッシュすることになります。つまり、INSERT
バッファーに格納されているすべての行がデータベース表に書き込まれま
す。データベース・サーバーは、まず、カーソルをクローズし ( これによ
りフラッシュが行われる )、次にカーソルを再オープンします。エラー検査
と挿入された行のカウント数については、7-234 ページの PUT 文の説明を
参照してください。
構文 7-213
USING 節
USING 節
USING 節は、カーソルが、PREPARE 文で処理された、? 位置指定値を含む
SELECT 文と関連付けられるときに必要です。(7-221 ページの PREPARE 文を
参照してください。) これらのパラメーターの値を指定するには、次の 2 つ
方法のうちのいずれかを使用してください。
USING における変数の命名
実行時に指定するパラメーターの数とデータ型が分かっている場合は、文
に必要なパラメーターをユーザー・プログラムのホスト変数として定義す
ることができます。パラメーターをデータベース・サーバーに渡すには、
USING キーワードの後に変数名を指定して、カーソルをオープンします。
これらの変数は、SELECT 文の ? パラメーターと 1 対 1 の対応で左から右へ
照合されます。
ESQL
変数名のリストに標識変数を含めることはできません。標識変数を使用す
るには、SELECT 文を DECLARE 文の一部としてコード化します。♦
次の IBM Informix 4GL コード・フラグメントは、プログラムが USING 節と入
力変数を使用して、SELECT の検索基準を確立する方法を示しています。こ
のプログラムは、ユーザー入力を zip というプログラム変数に格納し、こ
の変数を USING 節で命名します。その現行値は PREPARE 文で処理された
SELECT 文の ? と置き換えられるので、カーソルを介して戻される行はユー
ザーが要求した行になります。
図 7-55
IBM Informix 4GL における OPEN 文の USING キーワード
PREPARE zipsel FROM
"SELECT * FROM customer WHERE zipcode MATCHES ?"
DECLARE q_curs CURSOR FOR zipsel
PROMPT "Enter a zipcode: " FOR zip
OPEN q_curs USING zip
次の例は、IBM Informix ESQL/C コード・フラグメントの USING 節を示して
います。
7-214 IBM Informix SQL リファレンス・ガイド
USING 節
図 7-56
IBM Informix ESQL/C における OPEN 文の USING キーワード
sprintf (select_1, "%s %s %s %s %s",
"select o.order_num, sum(total price)",
"from orders o, items i",
"where o.order_date > ? and o.customer_num = ?",
"and o.order_num = i.order_num",
"group by o.order_num");
$prepare statement_1 from select_1;
$declare q_curs cursor for statement_1;
$open q_curs using $o_date, $c_num;
USING SQL DESCRIPTOR 節
ESQL
システム記述子領域から取得した入力値を関連付けることもできます。
キーワード USING SQL DESCRIPTOR は、システム記述子を使用することを示
します。これにより、システム記述子領域から取得した入力値を関連付け、
カーソルをオープンすることができます。
システム記述子領域 を使用する場合は、count 値は、sqlvar の発生数に記
述されている入力値の数を指定します。この数は、PREPARE 文で処理され
た文の動的パラメーターの数と一致していなければなりません。count の値
は、システム記述子領域を割り当てたときに指定した項目記述子数の値以
下でなければなりません。
詳細については、使用している IBM Informix ESQL 製品のマニュアルと第 6
章のシステム記述子領域に関する説明を参照してください。
図 7-57
ESQL/C におけるサンプル OPEN USING SQL DESCRIPTOR 節
$OPEN selcurs USING SQL DESCRIPTOR "desc1";
図 7-58
ESQL/COBOL におけるサンプル OPEN USING SQL DESCRIPTOR 節
EXEC SQL OPEN SEL_CURS USING SQL DESCRIPTOR "DESC1" END-EXEC.
♦
構文 7-215
USING DESCRIPTOR 節
USING DESCRIPTOR 節
E/C
PREPARE 文で処理された文のパラメーターを sqlda ポインター構造体の
フォームで渡すことができます。このフォームは、? 位置指定値を置き換え
るための 1 つ以上の値のデータ型とメモリー格納場所をリストします。詳
細については、IBM Informix ESQL/C Programmer’s Manual の sqlda の説明を参照
してください。
図 7-59
ESQL/C におけるサンプル OPEN USING DESCRIPTOR 節
struct sqlda *sdp;
...
$open selcurs using descriptor sdp;
♦
OPEN と FOREACH の選択
I4GL
IBM Informix 4GL には、暗黙の OPEN 文を実行する FOREACH 文が含まれてい
ます。カーソルが SELECT 文と関連付けられた FOREACH 文を使用して、
OPEN、FETCH、 および CLOSE を組み合わせた文を取り出すことができま
す。FOREACH 文は、順カーソル、スクロール・カーソル、または HOLD
カーソルと互換性があります。
OPEN 文に USING 節が必要な場合は、FOREACH 文を使用することはできま
せん。つまり、PREPARE 文で処理された SELECT 文に? パラメーターが含
まれていて、かつカーソルと関連付けられている場合は、USING 節が含ま
れた OPEN 文でカーソルをオープンする必要があります。
FOREACH ループを示す次の例は、OPEN、FETCH、および CLOSE の一連の
文を置き換えます。この IBM Informix 4GL プログラム・フラグメントは、
customer 表から選択したレコードをプログラム配列 p_cust に挿入します。
このプログラムでは、2,000 未満の顧客が表にリストされていると想定して
います。♦
7-216 IBM Informix SQL リファレンス・ガイド
OPEN と FREE の間の関係
図 7-60
IBM Informix 4GL で OPEN、FETCH、および CLOSE を置き換える FOREACH ループ
GLOBALS
DEFINE p_cust ARRAY[2000] OF RECORD
customer_num LIKE customer.customer_num,
fname LIKE customer.fname,
lname LIKE customer.lname,
company LIKE customer.company
END RECORD
END GLOBALS
FUNCTION load_cust() { fill array p_cust, return count }
DEFINE i SMALLINT
DECLARE cust_cur CURSOR FOR
SELECT customer_num, fname, lname, company
FROM customer
LET i = 1
FOREACH cust_cur INTO p_cust[i].*
LET i = i + 1
IF i > 2000 THEN
DISPLAY "Stopping at 2000 customers"
EXIT FOREACH
END IF
END FOREACH
RETURN i
END FUNCTION
MAIN
DISPLAY load_cust(), "customers read from database."
END MAIN
OPEN と FREE の間の関係
データベース・サーバーは、PREPARE 文で処理された文にリソースを割り
当て、カーソルをオープンします。FREE < カーソル識別子 > または FREE
< カーソル変数 > 文でリソースを解放した場合は、カーソルを再度宣言し
ない限り、それを使用することはできません。FREE < 文識別子 > または
FREE < 文識別子変数 > 文を実行する場合は、< 文識別子 > または < 文識別
子変数 > を再度 PREPARE 文で処理しない限り、< 文識別子 > または < 文
識別子変数 > をオープンすることはできません。
構文 7-217
参考資料
参考資料
本書では、カーソル関連文 CLOSE、DECLARE、および FREE を参照してく
ださい。INSERT カーソルについては、PUT および FLUSH も参照してくだ
さい。
また本書では、動的 SQL 文の詳細について、ALLOCATE DESCRIPTOR、
DEALLOCATE DESCRIPTOR、DESCRIBE、EXECUTE、FETCH、GET
DESCRIPTOR、PREPARE、PUT、および SET DESCRIPTOR 文を参照してくださ
い。システム記述子領域と sqlda 構造体の詳細については、本書の第 6 章を
参照してください。
IBM Informix SQL チュートリアル・ガイド では、OPEN 文の説明を参照してくだ
さい。
システム記述子領域と sqlda 構造体の詳細については、使用している埋め
込み言語製品のマニュアルを参照してください。
7-218 IBM Informix SQL リファレンス・ガイド
OUTPUT
OUTPUT
目的
OUTPUT 文は、照会結果を直接、オペレーティング・システム・ファイル
に送信するため、またはそれを他のプログラムにパイプするために使用し
ます。
構文
DB
ISQL
+
OUTPUT TO
< ファイル名 >
PIPE < プログ
ラム >
WITHOUT
HEADINGS
SELECT 文
7-263
ページ
< ファイル
名>
照会結果を格納するオペレーティング・システム・ファイル
の名前です。
< プログラ
ム>
照会結果をパイプする、または送信する先のプログラムの名
前です。
使用法
オペレーティング・システム・ファイルに対する照会の結果を送信するに
は、そのファイルのフル・パス名を指定します。このファイルがすでに存
在している場合は、次のように、出力が現行内容を上書きします。
OUTPUT TO /usr/april/query1
SELECT * FROM cust_calls WHERE call_code = "L"
照会結果を列見出しなしで表示するには、次のように、WITHOUT
HEADINGS キーワードを使用します。
OUTPUT TO /usr/april/query1
WITHOUT HEADINGS
SELECT * FROM cust_calls WHERE call_code = "L"
構文 7-219
参考資料
次のように、PIPE キーワードを使用して、照会結果を他のプログラムに送
信することもできます。
OUTPUT TO PIPE more
SELECT customer_num, call_dtime, call_code
FROM cust_calls
参考資料
本書では、SELECT および UNLOAD 文を参照してください。
7-220 IBM Informix SQL リファレンス・ガイド
索引
索引
記号
.dbs 拡張子 7-51, 7-103
.lok 拡張子 7-317
|| 連続演算子 7-377
A
ABSOLUTE キーワード
FETCH で使用 7-158
FETCH での構文 7-155
ACCESS FOR キーワード、
INFO
文 7-190
ADD CONSTRAINT キ ーワ ー
ド、ALTER TABLE での構文 720
ALL キーワード
構文
GRANT 7-182
REVOKE 7-254
SELECT 7-265
UNION 演算子 7-263
式 7-387
使用
GRANT で 7-183
REVOKE 7-255
SELECT 7-266
UNION 演算子 7-293
式 7-398
条件副照会 7-362
副照会の開始 7-281
ALLOCATE DESCRIPTOR 文
構文 7-13
連結演算子 7-377
ALTER INDEX 文
クラスター・インデックス
の削除 7-19
クラスター・インデックス
の作成 7-17
構文 7-17
ALTER TABLE 文
ADD CONSTRAINT 節 7-33
ADD 節 7-22
CHECK 節 7-28
DEFAULT 節 7-23
DROP CONSTRAINT 節 735
DROP 節 7-29
LOCK MODE 節 7-36
MODIFY NEXT SIZE 節 735
PAGE キーワード 7-36
REFERENCES 節 7-27
ROW キーワード 7-36
アクセス権 7-178
一意性制約のルール 7-33
主キー制約のルール 7-34
次のサイズの変更 7-35
表の再クラスター化 7-18
表ロックモードの変更 7-36
列制約の削除 7-35
列制約の追加 7-32
列データ型の変更 7-30
列の削除 7-29
列の追加 7-22
Alter アクセス権 7-183
ALTER キーワード
GRANT で使用 7-183
構文
GRANT 7-178
REVOKE 7-254
使用
REVOKE 7-255
AND キーワード
使用
BETWEEN キーワード
CREATE VIEW での 7100
GRANT 7-186
表示ラベル 7-269
表の別名 7-276
ASC キーワード
構文
CREATE INDEX で の
7-55
SELECT 7-288
7-277
条件セグメント 7-363
条件 セグ メン トの 構文 7-
使用
CREATE INDEX で の
7-57
350
AND 論理演算子 7-363
ANSI 標準準拠
-ansi フラグ 4-7, 7-70, 7-77, 799
行の更新 7-333
表の命名 7-248
レベル -24
ANSI 標準準拠データベース
BEGIN WORK を持つ 7-38
FOR UPDATE が不要 7-112
IBM Informix SE で の使 用
7-54
インデックス命名 7-365, 7417, 7-439
作成、START DATABASE
7-323
説明 7-52
表アクセス権 7-77
プロシージャー命名 7-429
ANY キーワード
WHENEVER 7-345
条件副照会での使用 7-362
副照会の開始 7-281
WHENEVER 7-343
AS キーワード
SELECT 7-265
構文
CREATE VIEW での 798
GRANT 7-178
LOAD 文の要件 7-205
UNLOAD 文に関する考慮
事項 7-327
構文 7-370
ス ト ア ー ド・プ ロ シ ー
ジャー 8-43, 8-47
説明 3-5
使用
ASCII 照合順序 7-435
AVG 関数
式での使用 7-399
式の構文 7-387
B
BEGIN WORK 文
構文 7-37
トラ ンザ クシ ョン 内で の
ロック 7-37
BETWEEN キーワード
構文、条件セグメント 7-351
使用
SELECT 7-277
条件セグメント 7-354
Binary Large Object (BLOB)
影響、検査時の排他 7-314
Bourne シェル、環境変数の設定
方法 4-4
BUFFERED LOG キーワード
CREATE DATABASE での
構文 7-50
CREATE DATABASE での
使用 7-53
BUFFERED キー ワー ド、SET
LOG の構文 7-319
BYTE データ型
BYTE 列の選択 3-6
2 IBM Informix SQL リファレンス・ガイド
C
C シェル、環境変数の設定方法
4-4
CALL キーワード、WHENEVER
文 7-343, 7-348
CALL 文
値の割り当て 8-25
構文 8-37
実行、プロシージャー 8-11
CHAR データ型
INSERT 7-433
構文 7-370
説明 3-6
データ型の変更 3-22
デフォルト値として使用 724, 7-83
CHECK TABLE 文、構文と使用
法 7-39
CHECK キーワード
ALTER TABLE での使用 728
CREATE TABLE での使用
7-90
CLOSE DATABASE 文
クローズの前提条件 7-45
構文 7-45
CLOSE 文
INSERT カーソルのクロー
ズ 7-42
SELECT カーソルの終了 742
構文 7-41
トランザクションの終了に
より影響を受ける
カーソル 7-43
連結演算子 7-377
CLUSTER キーワード
構文
ALTER INDEX 内の 717
CREATE INDEX で の
7-55
使用
CREATE INDEX で の
7-56
使用法
ALTER INDEX での 718
COLUMNS FOR キ ーワ ード、
INFO 文 7-189
COMMIT WORK 文
構文 7-47
COMMITTED READ キ ーワ ー
ド、SET ISOLATION における
構文 7-312
Connect アクセス権 7-180, 7-256
CONNECT キーワード
GRANT 7-180
REVOKE 7-256
CONSTRAINT キーワード
ALTER TABLE での 7-32
CREATE TABLE での 7-84
CONTINUE
キ ーワ ード、
WHENEVER 文 7-343, 7-348
CONTINUE 文
構文 8-40
ループの終了 8-27
COUNT 関数
式での使用 7-398, 7-400
COUNT
キー ワー ド、SET
DESCRIPTOR での使用 7-300
COUNT フィールド
取得、
GET DESCRIPTOR で
コン テン ツを 7172
使用、GET DESCRIPTOR 7174
設定、WHERE 節の値を 7-
298
CREATE AUDIT 文
アーカイブの必要 7-49
更新記録の開始 7-48
構文 7-48
CREATE DATABASE 文
ANSI 準拠 7-52
OnLine でのロギング 7-52
構文 7-50
使用
CREATE SCHEMA SE
7-69
IBM Informix SE 7-53
での使用
PREPARE 7-51
CREATE INDEX 文
暗黙的表ロック 7-56
構文 7-55
使用
ASC キー ワー ドを 使
用した 7-57
CLUSTER キーワード
を使用した 756
CREATE SCHEMA を
使用した 7-69
DESC キーワード を使
用した 7-57
UNIQUE キー ワー ド
を使用した 756
複合インデックス 7-57
CREATE PROCEDURE FROM
文
埋め込み言語 8-8
構文と使用法 7-68
CREATE PROCEDURE 文
CREATE
PROCEDURE
FROM 内 8-8
構文 7-59
使用 8-7
CREATE SCHEMA 文
CREATE シー ケン スを 使
用した 7-70
GRANT を使用した 7-70
構文 7-69
CREATE SYNONYM 文
ANSI 標準準拠の命名法 772
CREATE SCHEMA を使 用
した 7-69
構文 7-71
シノニムに対するアクセス
権 7-71
シノニムのチェーニング 774
ビューのシノニム 7-71
表のシノニム 7-71
CREATE TABLE 文
BLOB データ型を持つ 7-85
CHECK 節 7-90
CREATE SCHEMA を使 用
した 7-69
DEFAULT 節 7-82
IN DB 領域節 7-93
LOCK MODE 節 7-96
REFERENCES 節 7-87
一意性制約のルール 7-87
一時表の作成 7-91
エクステント・サイズの指
定 7-95
構文 7-76
参照制約のルール 7-87
主キー制約のルール 7-87
制約の定義
表レベルでの 7-85
列レベルでの 7-84
データベース表の格納 7-93
表列の指定 7-81
命名規則 7-77
列 NOT NULL の設定 7-25,
7-84
CREATE VIEW 文
CREATE SCHEMA を使 用
した 7-69
SELECT * 表記を使用した
7-99
WITH CHECK OPTION 7索引
3
101
アクセス権 7-99
仮想列 7-100
構文 7-98
列データ型 7-99
CURRENT OF キーワード
構文
DELETE 7-124
UPDATE 7-331
使用
DELETE 7-125
UPDATE 7-339
CURRENT 関数
構文
INSERT 7-197
式 7-380
条件セグメント 7-351
使用
ALTER TABLE での 723
CREATE TABLE で の
7-82
INSERT 7-199
WHERE 条件 7-384
式 7-383
入力、DAY 関 数の 7384
CURRENT キーワード
FETCH で使用 7-158
FETCH での構文 7-155
CURSOR STABILITY キーワー
ド、SET ISOLATION における
構文 7-312
ベース 7-103
SQLAWARN 後 7-103
現行データベースの指定 7102
構文 7-102
デー タベ ース 型の 決定 7102
排他モード 7-104
プログラム変数付き 7-103
DATE 値
DBDATE 環境変数の設定
4-8
DBDATE を使用したヨー
ロッパ形式の指定
4-9
DATE 関数
式での使用 7-390
式の構文 7-387
DATE データ型
DATETIME への変換 3-24
DATE 値の表現 3-28
演算の範囲 3-24
構文 7-370
説明 3-7
DATETIME データ型
DATE お よび INTERVAL
を使用した演算の
範囲 3-24
DATE への変換 3-24
DATETIME
値 およ び
INTERVAL 値 を
持つ 3-27
DATETIME 値の表現 3-28
DBTIME 環境変数の使用 418
D
DATA フィールド
設定、SET DESCRIPTOR に
よる 7-303
説明 6-7, 6-16
DATABASE 文
4GL における LIKE 7-104
DBPATH の 外部 のデー タ
EXTEND 関数 付き 3-26, 327
INSERT 7-433
INTERVAL 値 との 加算 ま
たは減算 3-26
値の操作 3-26
引用 符付 きス トリ ング 7432
構文 3-8, 7-370, 7-422
4 IBM Informix SQL リファレンス・ガイド
式 7-385
式の範囲 3-25
精度とサイズ 3-8
フィールド修飾子 3-8, 7-373
文字ストリング値 3-10
DATETIME フィールド修飾子
セグメント 7-373
DATETIME
フォ ーマ ット、
DBTIME 環境変数を使用した 418
DAY 関数
式の構文 7-387
使用
式 7-389
DAY キーワード
構文
DATETIME デ ータ 型
7-373
INTERVAL デ ータ 型
7-419
使用
DATETIME フ ィー ル
ド修 飾子 7422
DATETIME フ ィー ル
ド修飾子とし
て 3-8
INTERVAL フ ィー ル
ド修 飾子 7425
INTERVAL フ ィー ル
ド修飾子とし
て 3-14
DB 領域
CREATE DATABASE を使
用して選択 7-50
DBA アクセス権付きプロシー
ジャー 8-16
DBA キーワード
GRANT で使用 7-181
REVOKE 7-256
DBANSIWARN 環境変数 4-7, 770, 7-77, 7-99
DBDATE 環境変数 4-8
DBDELIMITER 環境変数 4-9, 7-
の制限 7-290
PREPARE 文で処理された
文でのカーソル 7-
206
DBEDIT 環境変数 4-10
DBFORMAT 環境変数 4-10
DBLANG 環境変数 4-11
dbload ユーティリティー
DBDELIMITER を使用した
フィールド区切り
文字の指定 4-9
DBMENU 環境変数 4-12
DBMONEY 環境変数 4-12
DBNETTYPE 環境変数 4-13
DBPATH 環境変数 4-14, 7-103, 7-
119
カーソル型 7-111
カーソル特性 7-112
カーソルとトランザクショ
ン 7-120
構文 7-108
指定された列の更新 7-117
定義と使用
HOLD カーソル 7-114
INSERT カー ソル 7112, 7-122
SELECT カー ソル 7-
369
DBPRINT 環境変数 4-15
DBREMOTECMD 環境変数 4-16
DBSERVERNAME 関数
サーバー名を戻す 7-382
使用
ALTER TABLE での 7-
112
UPDATE カ ーソ ル 7112, 7-115
順カーソル 7-113
スクロール・カーソル
23
CREATE TABLE で の
7-82
式 7-382
DBSRC 環境変数 4-16
DBTEMP 環境変数 4-17
DBTIME 環境変数 4-18
DEALLOCATE DESCRIPTOR
文
構文 7-106
連結演算子 7-377
DECIMAL データ型
構文 7-370
説明 3-11
データ型の変更 3-22
デフォルト値として使用 724, 7-82
浮動小数点 3-11
DECLARE 文
FOR UPDATE キ ーワー ド
7-112
INSERT カーソルと HOLD
7-123
ORDER BY による SELECT
7-113
連結演算子 7-377
DECLARE 文、SELECT 付き 7272
D E F E R R E D 、S E T
CONSTRAINTS 文 7-294
DEFINE 文
構文 8-41
配置 8-42
Delete アクセス権 7-182
DELETE キーワード
GRANT で使用 7-183
構文
GRANT 7-182
REVOKE 7-254
使用
REVOKE 7-255
DELETE 文
CURRENT OF 節 7-125
アクセス権 7-182
カーソル付き 7-115
構文 7-124
条件セグメント 7-350
トランザクション内 7-124
DELIMITER キーワード
LOAD 7-206
UNLOAD 7-328
DESC キーワード 7-289
構文
CREATE INDEX で の
7-55
SELECT 7-288
使用
CREATE INDEX で の
7-57
SELECT 7-289
DESCRIBE 文
USING SQL DESCRIPTOR
節 7-130
値、SELECT によって戻さ
れた 7-129
関係、GET DESCRIPTOR と
の 7-175
構文 7-127
文型の記述 7-128
連結演算子 7-377
DIRTY READ キーワード、SET
ISOLATION における構文 7-312
DISTINCT キーワード
構文
CREATE INDEX で の
7-55
SELECT 7-265
式 7-387
使用
CREATE INDEX で の
7-56
SELECT 7-266
無効、副照会 7-361
DOCUMENT キーワード
ス ト ア ー ド・プ ロ シ ー
ジャーでの使用 88
DROP AUDIT 文 7-133
DROP CONSTRAINT キー ワー
ド
ALTER TABLE での構文 720
索引
5
ALTER TABLE での使用 735
DROP DATABASE 文 7-134
DROP INDEX 文
構文 7-136
DROP SYNONYM 文 7-139
DROP TABLE 文 7-141
DROP VIEW 文 7-143
DROP キーワード
ALTER TABLE での構文 720
ALTER TABLE での使用 729
EXECUTE ON キーワード
構文
GRANT 7-178
REVOKE 7-252
使用
GRANT 7-184
REVOKE 7-252
EXECUTE PROCEDURE 文
FOREACH 8-55
値の割り当て 8-25
使用 8-11
EXECUTE 文
USING DESCRIPTOR 節 7148
E
ERROR
キ ーワ ード、
WHENEVER 文 7-343, 7-346
ESCAPE キーワード
使用
LIKE キーワード 7-279,
7-359
MATCHES キーワード
7-279, 7-359
WHERE キーワード 7278
条件セグメント 7-357
条件 セグ メン トの 構文 7351
ESQL
SQL 通信領域 5-3
エラー処理 5-3
EXCLUSIVE キーワード
構文
DATABASE 7-102
LOCK TABLE 7-207
使用
DATABASE 7-104
LOCK TABLE 7-208
EXECUTE IMMEDIATE 文
構文と使用法 7-149
制限付きの文型 7-150
連結演算子 7-377
USING SQL DESCRIPTOR
節 7-147
構文 7-144
パラメーター化、文の 7-146
連結演算子 7-377
EXISTS キーワード
条件副照会での使用 7-361
副照会の開始 7-280
EXIT 文
構文 8-49
ループの終了 8-27
EXTEND 関数
DATE、DATETIME、および
INTERVAL 付 き
3-26, 3-27
式の構文 7-387
EXTENT SIZE キーワード 7-95
所 7-159
順カーソル 7-157
スクロール・カーソル 7-157
プログラム配列 7-160
連結演算子 7-377
ロック、更新の 7-161
FIRST キーワード
FETCH で使用 7-157
FETCH での構文 7-155
FLOAT データ型
構文 7-370
説明 3-12
データ型の変更 3-22
デフォルト値として使用 724, 7-82
FLUSH 文
構文 7-164
連結演算子 7-377
FOR TABLE
キ ーワ ード、
UPDATE STATISTICS 7-341
FOR UPDATE キーワード
DECLARE の構文 7-108
UPDATE との関連 7-339
使用
DECLARE 7-112, 7-115,
7-119
列リスト 7-117
FOR キーワード
CONTINUE 8-40
CREATE AUDIT での 7-48
CREATE SYNONYM で の
7-71
F
FETCH 文
CLOSE による影響 7-42
INTO キーワード 7-271
SQLCA による結果の検査
7-163
関係、
GET DESCRIPTOR と
の 7-172
構文 7-155
指定、値のメモリー格納場
6 IBM Informix SQL リファレンス・ガイド
EXIT 8-49
FOR 文
インクリメントの使用 8-52
構文 8-51
式リストの使用 8-53
ス ト ア ー ド・プ ロ シ ー
ジャーでのループ
8-26
複数範囲の指定 8-53
FOREACH キーワード
CONTINUE 文 8-40
EXIT 8-49
FOREACH 文 7-216
構文 8-55
ス ト ア ー ド・プ ロ シ ー
ジャーでのループ
8-26
FOREIGN KEY キーワード
ALTER TABLE での 7-32
CREATE TABLE での 7-85
FRACTION キーワード
構文
DATETIME デ ータ 型
7-373
INTERVAL デ ータ 型
7-419
使用
DATETIME フ ィー ル
ド修 飾子 7-
425
INTERVAL フ ィー ル
ド修飾子とし
て 3-14
FREE 文
カーソルへの影響 7-217
効果、BYTE と TEXT 変数
の 7-170
構文 7-167
連結演算子 7-377
FROM キーワード
構文
PUT 7-234
REVOKE 7-252
SELECT 7-263
使用
PUT 7-239
SELECT 7-274
7-419
使用
GET DESCRIPTOR 文
COUNT キーワード 7-174
構文 7-172
連結演算子 7-377
GOTO
キ ーワ ード、
WHENEVER 文 7-343, 7-346
GRANT 文
CREATE SCHEMA を使 用
した 7-69
構文 7-178
作成、アクセス権連鎖 7-185
データベース・レベル・ア
クセス権 7-180
デフォルトの表アクセス権
DATETIME フ ィー ル
ド修 飾子 7422
DATETIME フ ィー ル
ド修飾子とし
て 3-8
INTERVAL フ ィー ル
ド修 飾子 7425
INTERVAL フ ィー ル
ド修飾子とし
て 3-14
7-184
422
DATETIME フ ィー ル
ド修飾子とし
て 3-8
INTERVAL フ ィー ル
ド修 飾子 7-
INTERVAL デ ータ 型
G
引渡し、付与権の 7-185
ビュ ーで のア クセ ス権 7186
表レベル・アクセス権 7-182
変更、権限授与者 7-186
GROUP BY キーワード
SELECT での構文 7-263
SELECT での使用 7-284
H
HAVING キーワード
SELECT での構文 7-263
SELECT での使用 7-286
HEX 関数、式での使用 7-393
HIGH キーワード 7-321
HOLD カーソル
INSERT カーソルと HOLD
7-123
使用 7-114
Hold カーソル
定義 7-112
HOUR キーワード
構文
DATETIME デ ータ 型
7-373
I
IBM Informix 4GL
SQLCODE の使用 5-5
STATUS 変数 5-5
WHENEVER ERROR 文 7343
IDATA フィールド
X/Open プログラム 7-175
説明 6-8, 6-17
IF 文
NULL 値 8-60
構文 8-59
構文と使用 8-59
if 文
分岐 8-26
ILENGTH フィールド
X/Open プログラム 7-175
説明 6-8, 6-17
IMMEDIATE キーワード、SET
CONSTRAINTS 文 7-294
IN キーワード
構文
CREATE AUDIT で の
7-48
CREATE DATABASE
での 7-50
索引
7
CREATE TABLE で の
7-93
LOCK TABLE 7-207
使用
WHERE キーワード 7278
条件セグメント 7-355
条件副照会 7-360
Index アクセス権 7-183
INDEX キーワード
GRANT で使用 7-183
構文
GRANT 7-182
REVOKE 7-254
使用
REVOKE 7-255
INDEXES FOR キ ーワ ード、
INFO 文 7-189
INDICATOR
キ ーワ ード、
SELECT 7-270
INDICATOR フィールド
設定、SET DESCRIPTOR で
の 7-304
説明 6-7, 6-16
INFO 文
アクセス権と状態の表示 7190
構文 7-188
表、列、およびインデック
スの表示 7-189
Informix
の 拡張 機能 検査、
DBANSIWARN を使用した指定
INSERT INTO キーワード
INSERT 7-192
LOAD 7-206
INSERT カーソル
HOLD 7-123
INSERT 7-194
PUT 7-238
SQLCA 内での CLOSE の結
果 7-42
オープン 7-212
クローズ 7-42
再オープン 7-213
使用 7-112
定義 7-111
Insert カーソル
書込 み、FLUSH でバ ッ
ファー付き行を 7164
INSERT キーワード
GRANT で使用 7-183
構文
GRANT 7-182
REVOKE 7-254
使用
REVOKE 7-255
Insert バッファー
挿入、カーソルで行を 7-194
INSERT バッファー
PUT による行の格納 7-235
挿入された行のカウント 7166, 7-242
定数 値に よる 埋め 込み 7-
4-7
INFORMIXCOB 環境変数 4-20
INFORMIXCOBDIR 環境変数 420
INFORMIXCOBSTORE 環境 変
数 4-21
INFORMIXCOBTYPE 環境変数
4-21
INFORMIXDIR 環境変数 4-22
INFORMIXTERM 環境変数 4-23
Informix、ユーザーと関連する
アクセス権 7-181
237
バッ ファ ーの トリ ガー 7240
INSERT 文
DECLARE 7-108
INSERT カーソルでの使用
7-122
SELECT 7-200
SERIAL 列 7-199
SERIAL 列への値の挿入 318
構文 7-192
8 IBM Informix SQL リファレンス・ガイド
充て ん、PUT で挿 入バ ッ
ファーを 7-235
挿入
カー ソル によ る行 7194
ビューの行 7-193
挿入する値の指定 7-197
動的 SQL 7-200
トランザクションの影響 7195
INTEGER データ型
構文 7-370
説明 3-13
データ型の変更 3-22
デフォルト値として使用 724, 7-82
INTERVAL データ型
DATE お よび DATETIME
を使用した演算の
範囲 3-24
DATETIME 値 との加 算ま
たは減算 3-26
EXTEND 関数 付き 3-26, 327
INSERT 7-433
値の乗算または除算 3-30
引用 符付 きス トリ ング 7432
加算または減算 3-29
構文 7-370, 7-425
式 7-385
式の範囲 3-25
説明 3-13
フィールド区切り文字 3-15
フィールド修飾子、構文 7419
INTERVAL フィールド修飾子
セグメント 7-419
INTO TEMP キーワード
SELECT での構文 7-263
使用
SELECT 7-290
UNION 演算子 7-292
INTO キーワード
SELECT 7-270
構文
FETCH 7-155
SELECT 7-263
使用
FETCH 7-160
SELECT 7-270
IS NOT キーワード、条件セグメ
ントの構文 7-351
IS NULL キーワード 7-278
IS キーワード
WHERE キーワード 7-278
条件セグメント 7-356
ITYPE フィールド
X/Open プログラム 7-175
設定、SET DESCRIPTOR に
よる 7-304
説明 6-8, 6-17
使用
SELECT 7-278
条件セグメント 7-357
条件 セグ メン トの 構文 7351
ワイルドカード文字 7-279
LOAD 文
DBDELIMITER を使用した
フィールド区切り
文字の指定 4-9
DELIMITER 節 7-206
INSERT INTO 節 7-206
LOAD FROM フ ァイ ル 7203
VARCHAR、TEXT、または
BYTE データ型の
ロード 7-205
構文 7-202
データの入力フォーマット
7-204
L
LAST キーワード
FETCH で使用 7-157
FETCH での構文 7-155
LENGTH 関数
式 7-267
式での使用 7-393
式の構文 7-387
LENGTH フィールド
DATETIME
およ び
INTERVAL タ イ
プ 7-304
DECIMAL および MONEY
型 7-304
設定、SET DESCRIPTOR に
よる 7-303
説明 6-7, 6-16
LET 文
値の割り当て 8-25
構文 8-63
実行、プロシージャーの 811
LIKE キーワード
ロードする表の指定 7-206
LOCK MODE キーワード
構文
ALTER TABLE での 7-
M
MATCHES キーワード
構文、条件セグメント 7-351
使用
SELECT 7-278
条件セグメント 7-357
ワイルドカード文字 7-279
MAX 関数
式での使用 7-399
式の構文 7-387
MDY 関数
式の構文 7-387
MIN 関数
式での使用 7-399
式の構文 7-387
MINUTE キーワード
構文
DATETIME デ ータ 型
7-373
使用
DATETIME フ ィー ル
ド修 飾子 7422
20
DATETIME フ ィー ル
ド修飾子とし
て 3-8
INTERVAL フ ィー ル
ド修 飾子 7-
CREATE TABLE で の
7-96
使用
ALTER TABLE での 736
CREATETABLE で の
7-96
LOCK TABLE 文
構文 7-207
トランザクション付きデー
タベース 7-208
トランザクションなしデー
タベース 7-209
LOG IN キーワード、CREATE
DATABASE での構文 7-50
LOW キーワード 7-321
425
INTERVAL フ ィー ル
ド修飾子とし
て 3-14
MODE ANSI キーワード
構文
CREATE DATABASE
での 7-50
START DATABASE 7323
使用
CREATE DATABASE
での 7-53
START DATABASE 7324
索引
9
MODIFY NEXT SIZE キーワー
ド
ALTER TABLE での構文 720
ALTER TABLE での使用 735
MODIFY キーワード
ALTER TABLE での構文 720
ALTER TABLE での使用 730
MONEY 値
DBMONEY 環 境変 数の 設
定 4-12
DBMONEY
を使 用し た
ヨーロッパ形式の
指定 4-13
MONEY データ型
構文 7-370
説明 3-17
データ型の変更 3-22
デフォルト値として使用 724, 7-82
MONTH 関数
式での使用 7-389
式の構文 7-387
MONTH キーワード
構文
DATETIME デ ータ 型
使用
N
NAME フィールド
説明 6-7, 6-16
NEXT SIZE キーワード
CREATE TABLE での使用
7-95
7-419
使用
DATETIME フ ィー ル
ド修 飾子 7422
DATETIME フ ィー ル
ド修飾子とし
て 3-8
INTERVAL フ ィー ル
ド修 飾子 7425
INTERVAL フ ィー ル
ド修飾子とし
LIKE、MATCHES キー
ワード 7-278
条件セグメント 7-357
NOTFOUND キーワード、NOT
FOUND キーワードと対比 7-346
NULL 値
IF 文 8-60
SELECT 内 でチ ェッ ク 7270
GRANT で使用 7-181
NEXT キーワード
FETCH で使用 7-157
FETCH での構文 7-155
NOSORTINDEX 環境変数 4-24
NOT CLUSTER キーワード
ALTER INDEX 内の構文 717
ALTER TABLE での使用 719
NOT FOUND キ ーワ ード、
WHENEVER 文 7-343, 7-346
NOT IN キーワード、条件副照
会 7-360
NOT NULL キーワード
構文
ALTER TABLE での 722
CREATE TABLE で の
7-373
INTERVAL デ ータ 型
7-351
て 3-14
7-81
使用
ALTER TABLE での 730
CREATE TABLE で の
7-84
IS キーワード 7-278
NOT WAIT キー ワー ド、SET
LOCK MODE 7-316
NOT キーワード
構文
BETWEEN キーワード
WHILE 文 8-83
主キーの制限 7-86
ス ト ア ー ド・プ ロ シ ー
ジャーによる暗黙
的な戻し 8-74
デフォルト値としての指定
7-25
NULL キ ーワ ード、プ ロシ ー
ジャー変数としてあいまい 7413
NULLABLE フィールド
説明 6-8, 6-17
O
OF キーワード
DECLARE での使用 7-117
DECLARE の構文 7-108
ON EXCEPTION 文
エラーのトラップ 8-32
構文 8-66
制御範囲 8-33
配置 8-68
ユーザー生成のエラー 8-34
ON キーワード
構文
CREATE INDEX で の
7-55
GRANT 7-178
REVOKE 7-252
7-277
IN キーワード 7-280
条件セグメント 7-350,
10 IBM Informix SQL リファレンス・ガイド
使用
CREATE INDEX で の
7-56
GRANT 7-184
OPEN 文
? パラメーターの値の置換
7-214
7-96
PATH 環境変数 4-28
PERFORM
キ ーワ ード、
WHENEVER 文 7-343
PIPE キーワード、OUTPUT 文 7-
FOREACH の 使用 時期 7-
220
216
FREE 7-217
PRECISION フィールド
GET DESCRIPTOR によ る
INSERT カーソルのオープ
ン 7-212
SELECT ま たは UPDATE
カーソルのオープ
ン 7-211
カー ソル の再 オー プン 7213
構文 7-210
作成、アクティブ・セツト
を 7-211
連結演算子 7-377
OR キーワード
条件 セグ メン トの 構文 7350
使用、条件セグメントで 7363
ORDER BY キーワード
INSERT での制限 7-200
SELECT での構文 7-263
降順 7-289
使用
SELECT 7-288
UNION 演算子 7-292
昇順 7-289
番号による列の選択 7-290
OUTER キー ワー ド、FROM
キーワード SELECT 7-274
OUTPUT 文、構文と使用 7-219
P
PAGE キーワード
ALTER TABLE での使用 736
CREATE TABLE での使用
7-176
設定、SET DESCRIPTOR に
よる 7-304
説明 6-8, 6-17
PREPARE 文
FREE によるリソースの解
放 7-169
SELECT での制限 7-224
構文 7-221
実行 7-144
パフォーマンス効率の向上
7-233
パラメーター化、SQL 識別
子 7-228
複数文テキスト 7-226, 7-231
プレースホルダーとしての
疑問符 (?) 7-222
文識別子の使用 7-222
文のパラメーター化 7-227
有効な文テキスト 7-224
連結演算子 7-377
PREPARE 文で処理された文
DESCRIBE に よる 戻り 値
の記述 7-128
PREPARE 文で処理された
オブジェクトの制
限 7-222
有効な文テキスト 7-224
実行 7-144
PREVIOUS キーワード
FETCH で使用 7-157
FETCH での構文 7-155
PRIMARY KEY キーワード
ALTER TABLE での使用 732
ALTER TABLE 文での 7-25
CREATE TABLE での 7-84,
7-85
PRIOR キーワード
FETCH で使用 7-157
FETCH での構文 7-155
PRIVILEGES FOR キーワード、
INFO 文 7-190
PRIVILEGES キーワード
GRANT で使用 7-183
構文
GRANT 7-182
REVOKE 7-254
使用
REVOKE 7-255
PUBLIC キーワード
構文
GRANT 7-178
REVOKE 7-252
使用
GRANT 7-181
REVOKE 7-254
PUT 文
FLUSH 7-235
行値のソース 7-237
使用、トランザクション内
7-235
連結演算子 7-377
R
RAISE EXCEPTION 文
構文 8-72
ループの終了 8-27
RECOVER TABLE 文
アーカイブ、データベース
を更新記録付きで
7-243
構文 7-243
操作、更新記録ファイル 7244
REFERENCES FOR キ ーワ ー
ド、INFO 文 7-190
References アクセス権
索引
11
INFO 文での表示 7-190
定義 7-183
REFERENCES キーワード
ALTER TABLE での 7-27
CREATE TABLE での 7-87,
7-89
GRANT で使用 7-183
構文
GRANT 7-182
REVOKE 7-254
使用
REVOKE 7-255
RELATIVE キーワード
FETCH で使用 7-158
FETCH での構文 7-155
RENAME COLUMN 文
構文 7-246
制限 7-246
RENAME TABLE 文
ANSI 標準準拠データベー
スの命名 7-248
構文 7-248
REPAIR TABLE 文、構文および
使用 7-250
REPEATABLE READ キーワー
ド、SET ISOLATION における
構文 7-312
Resource アクセス権 7-181
RESOURCE キーワード
GRANT で使用 7-181
REVOKE で使用 7-256
RETURN 文
NULL 値の戻り 8-74
構文 8-74
不十分な値の戻り 8-74
ループの終了 8-27
REVOKE 文
アクセス権必須 7-253
構文 7-252
データベース・レベル・ア
クセス権 7-256
表レベル・アクセス権 7-254
列指定アクセス権 7-256
ROLLBACK WORK 文
425
FOREACH に よる 制限 7260
WHENEVER との使用 7-38,
7-46
構文 7-259
使用、WHENEVER 7-260
ROLLFORWARD DATABASE
文
構文 7-261
排他ロック機能 7-261
ROUND 関数、式での使用 7-394
ROW キーワード
ALTER TABLE での使用 736
CREATE TABLE での使用
7-96
S
SCALE フィールド
GET DESCRIPTOR によ る
7-176
設定、SET DESCRIPTOR に
よる 7-304
説明 6-7, 6-16
SCROLL キーワード
DECLARE での使用 7-113
DECLARE の構文 7-108
SECOND キーワード
構文
DATETIME デ ータ 型
7-373
INTERVAL デ ータ 型
7-419
使用
DATETIME フ ィー ル
ド修 飾子 7422
DATETIME フ ィー ル
ド修飾子とし
て 3-8
INTERVAL フ ィー ル
ド修 飾子 7-
12 IBM Informix SQL リファレンス・ガイド
INTERVAL フ ィー ル
ド修飾子とし
て 3-14
Select アクセス権
定義 7-183
SELECT カーソル
オープン 7-211
再オープン 7-213
終了 7-42
使用 7-112
定義 7-111
SELECT キーワード
GRANT で使用 7-183
構文
GRANT 7-182
REVOKE 7-254
使用
REVOKE 7-255
プロシージャー変数として
あいまい 7-413
SELECT 文
DECLARE 7-108
DESCRIBE に よる 戻り 値
の記述 7-127
FOREACH 8-55
FROM 節 7-274
GROUP BY 節 7-284
HAVING 節 7-286
INSERT 7-200
INTO TEMP 節 7-290
INTO キーワードによる 7159
INTO 節 I4GL、ESQL 7-270
LET 8-64
ORDER BY 節 7-288
SELECT 節 7-265
UNION 演算子 7-292
WHERE 節での表の結合 7282
値の割り当て 8-25
カーソルと DECLARE の関
連付け 7-112
検索した行の ASCII ファイ
ルへの書き込み 7325
構文 7-263
式の使用 7-266
集計関数 7-397
条件セグメント 7-350
ス ト ア ー ド・プ ロ シ ー
ジャーへの引数と
して 8-38
制限、INTO 節による 7-224
選択番号 7-285, 7-290
副照会、WHERE キーワー
ドによる 7-277
リモート照会 7-264
列番号 7-285, 7-290
SERIAL データ型
ALTER TABLE での 7-22
INSERT 7-199
値の挿入 3-18
値のリセット 3-18
構文 7-370
ス ト ア ー ド・プ ロ シ ー
ジャー 8-42
説明 3-17
SET CONSTRAINTS 文、構文お
よび使用 7-294
SET DEBUG FILE TO 文、構文
および使用 7-296
SET DEBUG FILE 文
TRACE 8-79
SET DESCRIPTOR 文
VALUE オプション 7-301
構文 7-298
SET EXPLAIN 文
MERGE JOIN 情報 7-308
SORT SCAN 情報 7-308
オプティマイザー・アクセ
ス・パス 7-307
構文 7-306
出力の解釈 7-306
出力例 7-308
SET ISOLATION 文
構文 7-312
デフ ォル トの デー タベ ー
ス・レベル 7-312
排他の影響 7-314
排他レベルの定義 7-313
SET LOCK MODE 文
カーネル・ロック 7-317
構文 7-316
待ち時間の設定 7-317
SET LOG 文
構文 7-319
バッファー付き 7-319
SET OPTIMIZATION 文、構文お
よび使用 7-321
SET キーワード
UPDATE での構文 7-331
UPDATE での使用 7-334
SHARE
キー ワー ド、LOCK
TABLE での構文 7-207
SITENAME 関数
構文
INSERT 7-197
式 7-380
サーバー名を戻す 7-382
使用
ALTER TABLE での 723
CREATE TABLE で の
7-82
INSERT 7-199
式 7-382
SMALLFLOAT データ型
構文 7-370
説明 3-18
データ型の変更 3-22
SMALLINT データ型
構文 7-370
説明 3-19
データ型の変更 3-22
デフォルト値として使用 724, 7-82
SOME キーワード
条件副照会での使用 7-362
副照会の開始 7-281
SPL
SQL との関連 8-5
流れ制御文 8-25
文構文 8-36
SPL による Resource アクセス権
8-17
SQL
文タイプ 7-9
SQL 通信領域 (SQLCA)
CLOSE 後の結果 7-42
DATABASE の結果 7-102
DBANSIWARN の設定の効
果 4-7
FETCH 後の結果 7-163
PUT 後の結果 7-241
SELECT 後の結果 7-273
結果、DESCRIBE 後の 7-128
結果、FLUSH 後の 7-165
結果、OPEN 後の 7-212
説明 5-3
SQLCA.SQLAWARN (4GL) 5-7
sqlca.sqlcode
ESQL/C の 5-8
SQLCA.SQLCODE (4GL) 5-5
sqlca.sqlerrd
ESQL/C の 5-9
SQLCA.SQLERRD (4GL) 5-6
sqlca.sqlwarn
ESQL/C の 5-10
SQLCODE
OF
SQLCA
(ESQL/COBOL) 5-12
sqlda 構造体
ESQL/C でのシステム記述
子領域 6-5
ESQL/C 内でのポインター
の使用 6-9
ESQL/COBOL での シス テ
ム記述子領域 6-13
sqlda 内のフィールド 6-11
sqlda.h ヘッダー・ファイル
6-10
sqlvar_struct 内のフィール
ド 6-11
構文
DESCRIBE 7-127
EXECUTE 7-144
索引 13
FETCH 7-155
OPEN 7-211
PUT 7-235
使用
DESCRIBE 7-129
FETCH 7-161
OPEN 7-216
PUT 7-239
sqlda.h ヘッダー・ファイル
sqlda 内のフィールド 6-11
sqlvar_struct 内のフィール
ド 6-11
表示 6-10
SQLERRD
OF
SQLCA
(ESQL/COBOL) 5-12
SQLERROR
キ ーワ ード、
WHENEVER 文 7-343
SQLEXEC 環境変数 4-25
SQLRM 環境変数 4-26
SQLRMDIR 環境変数 4-27
SQLWARN
の
SQLWARN
(ESQL/COBOL) 5-14
SQLWARNING キ ーワ ード、
WHENEVER 文 7-345
START DATABASE 文
構文および使用法 7-323
STATUS FOR キーワード、
INFO
文 7-191
STATUS 変数 (4GL) 5-5
STOP キーワード、WHENEVER
文 7-343
STOP キーワード、WHENEVER
文の 7-348
stores5 データベース
call_type 表の列 1-10
catalog 表の列 1-9
cust_calls 表の列 1-10
customer 表の列 1-5
IBM Informix OnLine で の
作成 -7
IBM Informix SE での作成 8
items 表の列 1-6
manufact 表の列 1-11
orders 表の列 1-6
state 表の列 1-11
stock 表の列 1-8
概要 -6
コピー -7
主キーと外部キーの関係 113 ‐ 1-21
説明 1-3
データ値 1-21
表の構造 1-4
マップ 1-11
stores5
デ ータ ベー ス内 の
call_type 表の列 1-10
stores5
デ ータ ベー ス内 の
cust_calls 表の列 1-10
stores5
デ ータ ベー ス内 の
customer 表の列 1-5
stores5 データベース内の items
表の列 1-6
stores5
デ ータ ベー ス内 の
manufact 表の列 1-11
stores5 データベース内の orders
表の列 1-6
stores5 データベース内の stock
表の列 1-8
SUM 関数
式での使用 7-400
式の構文 7-387
SYSTEM 文
構文 8-77
T
TABLE キ ーワ ード、UPDATE
STATISTICS での構文 7-341
TABLES キーワード、INFO 文
7-189
TBCONFIG 環境変数 4-27
tbconfig ファイル、TBCONFIG
を使用した指定 4-28
TEMP TABLE LOG キーワード、
CREATE TABLE での構文 7-76
TEMP キーワード
14 IBM Informix SQL リファレンス・ガイド
SELECT での構文 7-263
SELECT での使用 7-290
TERM 環境変数 4-29
TERMCAP 環境変数 4-30
termcap ファイル
INFORMIXTERM を使用し
た選択 4-24, 4-25
およ び TERMCAP 環境 変
数 4-30
TERMINFO 環境変数 4-30
terminfo ディレクトリー
INFORMIXTERM を使用し
た選択 4-24
および TERMINFO 環境変
数 4-30
TEXT データ型
LOAD 文の要件 7-205
構文 7-370
ス ト ア ー ド・プ ロ シ ー
ジャー 8-43, 8-47
制御文字付き 3-19
説明 3-19
列の選択 3-20
Time 関数
式の構文 7-387
TO CLUSTER キーワード
ALTER INDEX 内の 7-18
TO キーワード
GRANT 7-178
式 7-387
TODAY 関数
構文
INSERT 7-197
式 7-380
条件セグメント 7-351
使用
ALTER TABLE での 723
CREATE TABLE で の
7-82
INSERT 7-199
定数式 7-383
TRACE 文
構文 8-79
ス ト ア ー ド・プ ロ シ ー
ジャーのデバッグ
8-14
TRUNC 関数、式での使用 7-395
TYPE フィールド
SET DESCRIPTOR での 設
定 7-301
X/Open プログラム 7-175
設定、X/Open プログラム 7303
説明 6-7, 6-16
変更、BYTE または TEXT
からの 7-305
フィールド区切り
文字の指定 4-9
DELIMITER 節 7-328
UNLOAD TO フ ァイ ル 7326
VARCHAR、TEXT、または
BYTE 列 のア ン
ロード 7-327
構文 7-325
UNLOCK TABLE 文、構文と使
用 7-329
UPDATE STATISTICS 文
検索ストラテジーの最適化
7-341
U
UNION 演算子
SELECT での構文 7-263
SELECT での使用 7-292
使用上の制限 7-292
UNIQUE キーワード
構文
CREATE INDEX で の
7-55
CREATE TABLE で の
7-84
SELECT 7-265
使用
ALTER TABLE での 732
CREATE INDEX で の
7-56
CREATE TABLE で の
7-85
式 7-397
SELECT 7-266
無効、副照会 7-361
UNITS キーワード
式での使用 7-386
式の構文 7-380
UNLOAD TO ファイル 7-326
UNLOAD 文
DBDELIMITER を使用した
構文 7-341
実行時期 7-342
Update アクセス権
定義 7-183
ビュー 7-332
UPDATE カーソル
UPDATE での使用 7-339
オープン 7-211
使用 7-115
制限付きの文 7-116
定義 7-111
ロックに関する考慮事項 7-
構文 7-331
式の使用 7-336
条件セグメント 7-350
トランザクション 7-332
ビューによる更新 7-332
ロックに関する考慮事項 7333
USER 関数
構文
INSERT 7-197
式 7-380
条件セグメント 7-351
使用
ALTER TABLE での 723
CREATE TABLE で の
7-82
INSERT 7-199
式 7-381
標準準拠による影響 7-382
USING DESCRIPTOR キーワー
ド
DESCRIBE か らの 情報 7129
構文
EXECUTE 7-144
FETCH 7-155
OPEN 7-210
PUT 7-234
116
UPDATE キーワード
GRANT で使用 7-183
構文
GRANT 7-182
REVOKE 7-254
使用
REVOKE 7-255
UPDATE 文
FETCH 7-161
SET キーワード 7-334
UPDATE カーソル 7-115
WHERE CURRENT OF
キーワード 7-339
WHERE キーワード 7-338
カーソルによる更新 7-339
更新する列の制限 7-117
更新のロールバック 7-333
使用
FETCH 7-161
OPEN 7-216
PUT 7-148, 7-239, 7-240
USING SQL DESCRIPTOR キー
ワード
DESCRIBE 7-130
EXECUTE 7-147
USING キーワード 7-146
構文
EXECUTE 7-146
OPEN 7-210
使用
EXECUTE 7-146
OPEN 7-214
索引 15
構文
V
VALUE キーワード
FETCH との関係 7-176
SET DESCRIPTOR での 使
用 7-301
VALUE フィールド
GET DESCRIPTOR での 使
用 7-175
NULL 値が取り出された後
7-177
VALUES キーワード
INSERT の構文 7-192
使用
INSERT 7-197
PUT による効果 7-238
VARCHAR データ型
LOAD 文の要件 7-205
UNLOAD 文に関する考慮
事項 7-327
構文 7-370
説明 3-21
デフォルト値として使用 724, 7-83
W
WAIT キーワード、SET LOCK
MODE 文 7-316
WARNING
キ ーワ ード、
WHENEVER 文 7-343, 7-346
WEEKDAY 関数
式の構文 7-387
WHENEVER 文、構文および使
用法 7-343
WHERE CURRENT OF キ ー
ワード
構文
DELETE 7-124
UPDATE 7-331
使用
UPDATE 7-339
WHERE キーワード
DELETE 7-124
SELECT 7-263
UPDATE 7-331
使用
ALL キーワード 7-281
ANY キーワード 7-281
BETWEEN キーワード
7-277
DELETE 7-125
IN キーワード 7-278
IS キーワード 7-278
LIKE キーワード 7-278
MATCHES キーワード
DECLARE の構文 7-108
WITH LISTING IN キーワード
ス ト ア ー ド・プ ロ シ ー
ジャーでの警告 810
WITH LOG IN キーワード、構文
START DATABASE 7-323
WITH MAX キーワード
COUNT フィールドとの関
係 7-299
WITH NO LOG キーワード
構文
CREATE TABLE で の
7-76
SELECT 7-290
7-278
SOME キ ーワ ード 7-
使用
281
UPDATE 7-338
関係演算子 7-277
副照会での 7-277
設定、項目の記述 7-298
表の結合 7-282
WHILE キーワード
CONTINUE 文 8-40
EXIT 8-49
WHILE 文
NULL 式 8-83
構文 8-83
ス ト ア ー ド・プ ロ シ ー
ジャーでのループ
8-26
WITH APPEND キ ーワ ード、
SET DEBUG FILE TO 文 7-296
WITH CHECK キーワード
CREATE VIEW での構文 798
CREATE VIEW での使用 7101
WITH GRANT キーワード
GRANT での使用 7-185
GRANT の構文 7-178
WITH HOLD キーワード
DECLARE での 使用 7-114,
16 IBM Informix SQL リファレンス・ガイド
7-123
CREATE TABLE で の
7-92
SELECT 7-292
WITH RESUME キ ーワ ード、
RETURN 8-75
WITH キー ワー ド、CREATE
DATABASE での構文 7-50
WITHOUT HEADINGS キ ー
ワード、OUTPUT 文 7-219
X
X/Open 準拠レベル -24
Y
YEAR 関数
式での使用 7-389
式の構文 7-387
YEAR キーワード
構文
DATETIME デ ータ 型
7-373
INTERVAL デ ータ 型
7-419
使用
DATETIME フ ィー ル
ド修 飾子 7422
DATETIME フ ィー ル
ド修飾子とし
て 3-8
INTERVAL フ ィー ル
ド修 飾子 7425
INTERVAL フ ィー ル
ド修飾子とし
て 3-14
あ
アイコン、説明 -14
アクセス権
Alter 7-183
Connect 7-180
CREATE TABLE を使用す
る表のデフォルト
7-77
DBA 7-181
DBA アクセス権付きプロ
シージャー 8-18
Delete 7-183
Index 7-183
INFO 文での表示 7-190
Insert 7-183
Resource 7-181
Update 7-183
アクセス権の競合時 7-179
システム・カタログでエン
コー ドさ れた 230, 2-34
シノニムに対する 7-71
所有者アクセス権付きプロ
シージャー 8-17
ス ト ア ー ド・プ ロ シ ー
ジャーのデフォル
ト 8-17
必要
インデックスの削除 7-
136
データの修正 7-183
ビューの作成 7-186
ビューに対する 7-99
アクティブ・セット
FETCH によるデータの検
索 7-155
OPEN による構成 7-211
アスタリスク (*)
SELECT での使用 7-265
算術演算子 7-376
アットマーク (@)、データベー
ス名 7-367
アンダースコアー (_)、条件セグ
メントのワイルドカード 7-358
い
意見、資料・製品についての -24
一意性制約
削除 7-35
実行 7-79
使用のルール 7-33, 7-86, 7-87
データ型変換 7-31
要件 7-25
列の変更 7-31
一意性制約または主キー制約
データ型変換 7-32
一時表
制約の作成 7-92
一時ファイル、DBTEMP を使用
したディレクトリーの指定 4-17
入れ子にした整列、SELECT 7289
印刷、DBPRINT を使用した印
刷プログラムの指定 4-15
インストール・ディレクトリー、
INFORMIXDIR を使用した指定
4-22
インデックス
DROP INDEX によ る削 除
7-136
一時表 7-291
情報の表示 7-189
制約との共有 7-26, 7-79
命名規則 7-365, 7-417, 7-439
インデックス名セグメント
構文 7-365, 7-429
使用 7-438
引用符付きストリング
構文
INSERT 7-197
式 7-387
条件セグメント 7-351
式 7-380
使用
INSERT 7-433
LIKE、MATCHES キー
ワード 7-278
式 7-381
ワイルドカード 7-432
引用符付きストリング・セグメ
ント
DATETIME、ストリングと
し
て
の
INTERVAL 値 7432
構文 7-431
条件にける LIKE 7-432
え
エディター、DBEDIT を使用し
た指定 4-10
エラー検査
ON EXCEPTION での エ
ラー状態 8-67
sqlca 構造体 (ESQL/C) 5-7
SQLCA データ構造体のサ
マリー表 5-4
SQLCA レコード (4GL) 5-5
SQLCA
レ コー ド
(ESQL/COBOL) 510
SYSTEM 8-77
エラーのシミュレート 8-34
索引 17
ス ト ア ー ド・プ ロ シ ー
ジャー 8-32
ス ト ア ー ド・プ ロ シ ー
ジャーのエラー後
の続行 8-70
例外処理 8-32
円記号 (¥)
エ ス ケ ー プ 文 字、
MATCHES 7-358
エス ケー プ文 字、LIKE 7358
オープン 7-211
型の定義 7-111
終了 7-41
順 7-113
スクロール 7-113
宣言 7-108
特性 7-112
トランザクションでの使用
表の命名のための 7-77
疑問符 (?)
EXECUTE によるプレース
ホルダーへの値の
提供 7-146
PUT における変数の指名
7-239
USING キーワードとの置
換 7-214
位置指定子、PREPARE 内
の 7-222
条件 のワ イル ドカ ード 7-
7-120
トランザクションの終了に
よる影響 7-43
カーソル安定性排他レベル 7314
お
お客様の環境のデフォルト解釈
4-3
オプティマイザー
SET OPTIMIZATION 文 7321
親子関係 7-27, 7-87
オンライン
ファイル -23
ヘルプ -24
か
カーソリー・プロシージャー 856
カーソル
DELETE 7-124
FETCH による値の検索 7155
INTO キーワード SELECT
7-271
OPEN による起動 7-210
PREPARE 文で処理された
文 7-111
PREPARE 文で処理された
文との関連付け 7119
ROLLBACK WORK による
クローズ 7-260
358
カーソル操作文 7-10
外部キー 7-27, 7-87
拡張機能検査、DBANSIWARN
を使用した指定 4-7
カラー、INFORMIXTERM の設
定 4-23
環境変数 -12
Bourne シェル 4-4
C シェルでの設定方法 4-4
製品別のリスト 4-5
定義 4-3
デフォルト解釈 4-3
環境変数の設定 4-4
関係演算子
WHERE
キー ワー ド
SELECT 7-277
条件セグメント 7-351
セグメント 7-434
関係演算子セグメント 7-434
関数
ス ト ア ー ド・プ ロ シ ー
ジャー内 8-28
関数式、SELECT 7-267
き
キャレット (^) ワイルドカード
7-358
行
FETCH による検索 7-158
FETCH による複数行照会
7-156
エンジン応答、ロック行に
対する 7-316
カーソルによる挿入 7-194
行 ID 定義 7-158
削除 7-124
バッファーに入れられた行
の FLUSH による
書き込み 7-164
ビューによる更新 7-332
ビューへの挿入 7-193
ファントム 7-313
行 ID 7-409
業界標準、準拠 -24
協調属性、INFORMIXTERM の
設定 4-23
共有メモリー・パラメーター、
TBCONFIG を使用したファイ
ルの指定 4-27
く
規則
活字 -12
構文 -13
コードの例 -18
18 IBM Informix SQL リファレンス・ガイド
区切り文字
DATETIME 値の場合 3-9
INTERVAL 値の場合 3-15
7-133
LOAD 入力ファイル 7-206
UNLOAD による指定 7-328
クラスター・インデックス
ALTER INDEX を使用した
RECOVER TABLE によ る
適用 7-243
開始、CREATE AUDIT 7-48
クラスター・インデックス
なし 7-57
操作、更新記録ファイル 7-
7-17
CREATE INDEX を使 用し
て作成 7-56
更新記録付き 7-57
繰返し読込み排他設定レベル
更新 中の エミ ュレ ート 7162
244
構文ダイアグラム
エレメント -16
規則 -13
コミット読み込み排他レベル 7313
け
警告
ス ト ア ー ド・プ ロ シ ー
ジャー 8-10
計算式
GROUP BY の制限 7-284
計算済み式
記述 7-387
形式
DBDATE
を使 用し た
DATE 値の指定 48
結合
2 表結合 7-282
外部結合 7-283
条件セグメント 7-282
セルフ結合 7-283
複数表結合 7-283
幻行 7-313
権限
SYSTEM 8-78
現行のデータベース
DATABASE で指定 7-102
こ
更新可能ビュー 7-101
更新記録
DROP AUDIT によ る削 除
コロン (:)
DATETIME 内 の区切 り文
字として 3-9
INTERVAL 内 の区 切り 文
字として 3-15
コンパイラー
COBOL 用の環境変数の設
定 4-20, 4-21
COBOL 用の記憶モードの
設定 4-21
さ
再 帰、ス ト ア ー ド・プ ロ シ ー
ジャー 8-29
最適化
更新、システム・カタログ
表を 7-341
サーバー 7-321
照会 7-306
ネットワーク全体にまたが
る 7-322
最適化、高レベルまたは低レベ
ルの指定 7-321
算術演算子、式 7-376
参照制約
削除 7-35
実行 7-79
使用のルール 7-87
定義 7-27, 7-87
データ型制限 7-89
列の変更 7-31
し
式
UPDATE 7-335
整列 7-290
式セグメント
SPL 式 8-24
計算済み式 7-387
結合式 7-402
構文 7-376
式型 7-376
集計式 7-397
定数式 7-380
列式 7-378
時刻関数
GROUP BY の制限 7-284
SELECT での使用 7-267
システム記述子領域
ESQL/C での 6-5
ESQL/COBOL での 6-13
TYPE および ITYPE フィー
ルドの値 6-8, 6-17
定義済みのフィールド 6-7,
6-16
サイズ変更 7-300
修正、コンテンツの 7-298
システム名、データベース名 7368
システム・カタログ
sysblobs 2-10
syschecks 2-11
syscolauth 2-11, 7-254
syscoldepend 2-12
syscolumns 2-13
sysconstraints 2-16
sysdefaults 2-17
sysdepend 2-18
sysindexes 2-18
sysopclstr 2-22
sysprocauth 2-24
索引 19
sysprocbody 2-25, 8-11
sysprocedures 2-26
sysprocplan 2-27
sysreferences 2-28
syssynonyms 2-28
syssyntable 2-29
SYSTABAUTH 7-186
systabauth 2-30, 7-254
systables 2-31
sysusers 2-34
sysviews 2-34
アクセス 2-8
更新 2-9
更新、最適化のためのデー
タを 7-341
制約のための sysindexes 項
目 7-79
説明 2-3
データベース項目 7-51
統計の更新 2-9
表のマップ 2-35
実効確認 7-294
実行時プログラム
DBANSIWARN の設定 4-7
INFORMIXCOBDIR の設定
4-20
シノニム
ANSI 標準準拠の命名法 772
CREATE SYNONYM を 使
用した作成 7-71
削除 7-139
チェーニング 7-74
別名との差 7-71
集計関数
4GL および ESQL 7-401
EXISTS 副照会 7-361
GROUP BY の制限 7-284
SELECT 7-268
SPL 式 8-23
式 7-267, 7-387
要約 7-400
修飾子、フィールド
DATETIME 7-373
DATETIME の場合 3-8
INTERVAL の場合 3-14
DATETIME 7-422
INTERVAL 7-419, 7-425
主キー制約
削除 7-35
参照側 7-27
実行 7-79
使用のルール 7-34, 7-87
要件 7-26, 7-86
列の定義 7-86
列の変更 7-31
順カーソル
FETCH 7-157
使用 7-113
定義 7-112
準拠
業界標準 -24
照会
他のオペレーティング・シ
ステム・ファイル
への結果の送信 7-
結合条件 7-282
検索 のワ イル ドカ ード 7358
構文 7-350
説明 7-350
比較条件 7-351
ブール式 7-351
小数点 (.)
DATETIME 内 の区切 り文
字として 3-9
INTERVAL 内 の区 切り 文
字として 3-15
状態、INFO 文での表示 7-191
省略記号 (...)、条件セグメント
のワイルドカード 7-358
除算記号 (/)、算術演算子 7-376
所有者
ALTER TABLE での 7-21
CREATE SYNONYM で の
7-72
CREATE VIEW でのビュー
7-445
RENAME COLUMN 7-246
RENAME TABLE 7-248
インデックス名セグメント
7-365, 7-417, 7-429,
219
他のプログラムへの結果の
送信 7-220
他のプログラムへの結果の
パイピング 7-220
照会での値の重複 7-266
条件セグメント
ALL、ANY、SOME 副照会
7-362
7-439
ビュー名セグメント 7-444
表名セグメント 7-403, 7-441
所有者アクセス権付きストアー
ド・プロシージャー 8-16
BETWEEN キ ーワ ード 7354
ESCAPE キーワード 7-359
EXISTS キーワード 7-361
IN キーワード 7-355
IS キーワード 7-356
LIKE キーワード 7-357
MATCHES キ ーワ ード 7357
NOT キーワード 7-357
SELECT での副照会 7-360
関係演算子 7-353
関数の使用 7-351
20 IBM Informix SQL リファレンス・ガイド
す
スクロール・カーソル
FETCH 7-157
使用 7-113
定義 7-112
保留、トランザクション 7315
ストアード・プロシージャー
BYTE および TEXT データ
型 8-43, 8-47
ALTER TABLE を使用した
追加 7-32, 7-78
DROP INDEX 7-136
一意性制約のルール 7-33
作成に必要なアクセス権 7-
DBA アクセス権付き 8-16
DBACCESS からの作成 8-7
SELECT からの受け取り 7270
SQL 関数との名前の混用
34
8-23
TRACE 文の出力ファイル
の命名 7-296
埋め込み言語からの作成 8-
実行 7-79
制約を持つ列の変更 7-30
設定、チェック・モード 7-
8
エラーのシミュレート 8-72
カーソル 8-55
概要 8-5
コメント 8-8
再帰 8-29
実行 8-11
使用 8-6
所有者アクセス権付き 8-16
定義 8-6
デバッグ 8-14, 8-79
ドキュメント化 8-8
取消し、アクセス権の 7-253
内容の表示 8-11
複数行の処理 8-75
ヘッダー 8-29, 8-42
変更 8-16
変数 8-19
マニュアルの表示 8-11
戻り値 8-29
ストアード・プロシージャー・
アクセス権の付与 7-184
スペース ( )
DATETIME 内 の区切り 文
字として 3-9
INTERVAL 内 の区 切り 文
字として 3-15
スラッシュ (/)、
算術演算子 7-376
294
定義 7-77
表レベルでの指定 7-85
許される列の数 7-78, 7-85
要件 7-25
列レベルでの指定 7-84
セルフ結合
説明 7-283
そ
相関副照会
定義 7-360
ソート
SELECT 7-288
結合照会 7-292
た
単純代入 8-63
単純読み込み排他レベル 7-313
単精度浮動小数点数の格納 3-12
端末処理
および TERM 環境変数 4-29
およ び TERMCAP 環境 変
数 4-30
および TERMINFO 環境変
数 4-30
せ
制約
ALTER TABLE を使用した
削除 7-29, 7-35, 7-78
ち
チェック制約
CREATE TABLE を使用し
た作成 7-90
定義 7-90
表レベルでの指定 7-90
列レベルでの指定 7-90
遅延チェック 7-294
て
定数式
GROUP BY の制限 7-284
PUT での挿入 7-237
SELECT 7-267
構文 7-380
データ型
ALTER TABLE を使用した
変更 7-31
BYTE 3-5
CHAR 3-6
CHARACTER 3-7
CREATE VIEW を使用した
指定 7-99
DATE 3-7
DATETIME 3-8
DEC 3-11
DECIMAL 3-11
DOUBLE PRECISION 3-12
FLOAT 3-12
INSERT に関する考慮事項
7-198, 7-433
INT 3-12
INTEGER 3-13
INTERVAL 3-13
MONEY 3-17
NUMERIC 3-17
REAL 3-17
SERIAL 3-17
SMALLFLOAT 3-18
SMALLINT 3-19
SPL 変数 8-21
TEXT 3-19
VARCHAR 3-21
構文 7-370
索引 21
サマリー表 3-4
参照制約の要件 7-28, 7-89
浮動小数点 3-12
変換 3-22
データ型セグメント 7-370
データ型の変換 3-22
データ整合性文 7-11
データ操作文 7-10
データ定義文 7-10
データベース
ANSI 準拠の作成 7-323
CLOSE DATABASE を使用
したクローズ 7-45
CREATE DATABASE を使
用した作成 7-50
stores5 -6
削除 7-134
照会の最適化 7-342
データ型 3-4
デフ ォル ト排 他レ ベル 7312
データベース・レベル・アクセ
ス権 7-180, 7-256
付与 7-180
付与権限の引き渡し 7-185
データベース・ロック 7-104
データ、LOAD 文によるデータ
の挿入 7-202
データ・アクセス文 7-11
テキスト・エディター、DBEDIT
を使用した指定 4-10
デッドロックの検出 7-317
デフォルト値
ALTER TABLE を使用した
指定 7-24
指定
ALTER TABLE 7-24
CREATE TABLE を 使
用した 7-82
デモンストレーション・データ
ベース
インストール・スクリプト
-6
排他モードでのオープン 7104
181
データベース名セグメント
引用符、スラッシュの使用
7-369
構文 7-367
データベース、DBPATH の
外部 7-369
変数による命名 7-369
命名規則 7-367
リモート・データベース 7368
データベース、stores5 説明 1-3
261
ロールバック 7-259
ログ 7-323
トランザクションおよび
CREATE DATABASE 7-54
トランザクション・ログ
ログのリネーム 7-324
ネットワーク環境変数
DBNETTYPE 4-13
DBPATH 4-14
SQLRM 4-26
SQLRMDIR 4-27
2-35
命名規則 7-368
リモート 7-368
デー タベ ース 管理 者 (DBA) 7-
315
トランザクションの回復 7-
ね
概要 -6
コピー -7
表 1-5 ‐ 1-11
表の構造 1-4
マップ 1-11
復元 7-261
変数による命名 7-369
マップ
stores5 1-11
システム・カタログ表
動的管理文 7-11
ドキュメント・ノート -23
トランザクション
BEGIN WORK を使用した
開始 7-37
COMMIT WORK を使用し
たコミット 7-47
カーソルの使用 7-120
ス ク ロ ー ル・カ ー ソ ル と
データの一貫性 7-
と
問合せ最適化情報文 7-11
動的 SQL
システム記述子領域の使用
ESQL/C での 6-5
ESQL/COBOL で の 613
メモリーの割り当て
ESQL/C での 6-4
ESQL/C で の sqlda ポ
インターの使
用 6-9
ESQL/COBOL で の 6-
22 IBM Informix SQL リファレンス・ガイド
13
は
パーセント (%) 記号、条件セグ
メントのワイルドカード 7-358
排他レベル
カーソル安定性 7-314
外部表 7-314, 7-317
繰り 返し 可能 読み 込み 7314
コミット読み込み 7-313
単純読み込み 7-313
定義 7-313
バイナリー・ラージ・オブジェ
クト (BLOB)
LOAD 文 7-205
UNLOAD 文 7-327
ハイフン (-)
DATETIME 内 の区切り 文
字として 3-9
INTERVAL 内 の区 切り 文
字として 3-15
配列、FETCH による行の移動 7160
パス名
DBPATH を 使用 した指 定
4-14
DBSRC を使用した指定 417
PATH を使用した指定 4-28
SQLEXEC に組み込む 4-25
破損した表のチェック 7-39
バッファー付きロギング 7-50
パフォーマンス
ス ト ア ー ド・プ ロ シ ー
ジャーによる改善
8-6
パラメーター
CALL 文 8-38
SPL での BYTE また は
TEXT 8-48
ス ト ア ー ド・プ ロ シ ー
ジャーへの 8-29
ひ
更新 7-332
削除 7-143
シノニムの作成 7-71
ビュー名セグメント 7-444
ビュー、更新可能 7-101
表
ANSI 準拠命名 7-441
CHECK TABLE 文を使用し
たチェック 7-39
LOAD 文 によ るデ ータ の
ロード 7-202
SELECT での別名 7-274
stores5 デ ータ ベー スの 構
造 1-4
一時の使用 7-92
エンジン応答、ロック表に
対する 7-316
更新記録の復元 7-243
最適化、照会の 7-342
削除 7-139
制約 7-35
表 7-141
作成
一時表 7-91
シノニム 7-71
表 7-76
システム・カタログ表 2-10
‐ 2-34
修復、REPAIR TABLE 文に
よる 7-250
条件セグメントでの結合 7282
比較条件
構文と使用 7-351
日付データ型
関数 7-387
ビュー
GRANT によるアクセス権
7-186
SELECT * 表記を使用した
7-99
UNION 演算子の制限 7-292
アクセス権 7-99
仮想列 7-100
制約の追加 7-32
命名規則 7-77, 7-404, 7-441
リネーム 7-248
列のデータ型の変更 3-22
ロギング 7-92
ロック
ALTER INDEX を使用
した 7-18
LOCK TABLE 7-207
モードの変更 7-36
ロックの解除 7-329
標識変数
EXECUTE 7-146
SELECT 7-270
式 7-401
表示ラベル
SELECT での構文 7-265
UNION 演算子 7-292
表名セグメント 7-440
表レベル・アクセス権
GRANT でのデフォルト 7184
定義と使用 7-183
取り消し 7-254
付与 7-182
付与権限の引き渡し 7-185
列固有のアクセス権 7-256
ふ
ファイル
OUTPUT 文に よる 出力 の
送信 7-219
拡張子
.lok 7-317
.dbs 7-51, 7-103
フィールド修飾子
DATETIME 7-373
DATETIME の場合 3-8
INTERVAL の場合 3-14
INTERVAL 7-425, 7-419
ブール式
条件セグメント 7-350
フォーマット
DBMONEY
を使 用し た
MONEY 値のため
の指定 4-12
複合インデックス
CREATE INDEX を使 用し
て作成 7-55
定義 7-57
列の制限 7-57
複合代入 8-63
複合列リスト、複数列制限 7-33,
7-34
索引
23
副照会
ALL/ANY/SOME キーワー
ドに よる 開始 7281
DISTINCT キーワード 7-266
EXISTS キーワードによる
開始 7-280
IN キーワードによる開始
へ
め
並行性
SET ISOLATION による定
義 7-312
カーソル安定性排他 7-314
繰り返し可能読み込み排他
命名規則
インデックス 7-365, 7-417, 7-
7-314
7-280
UNION 演算子の制限 7-292
条件セグメント 7-360
複数行照会
FETCH による管理 7-156
戻り値の宛先 7-159
副問合せ
相関 7-360
定義 7-277
プラス記号 (+)、算術演算子 7376
プロシージャー名
関数名との矛盾 7-429
命名規則 7-429
文識別子
カー ソル との 関連 付け 7-
コミ ット 読み 込み 排他 7313
単純読み込み排他 7-313
ヘッダー
プロシージャーの 8-29
別名
SELECT 内の表 7-275
変数
IF での不明値 8-60
SPL 8-19
SPL での GLOBAL および
LOCAL 8-20
SPL での定義 8-41
SPL でのデフォルト値 8-45,
8-46
SPL 変数の範囲 8-42
キーワードと同じ名前 8-22
広域、SPL 8-44, 8-46
111
解放 7-223
構文
DECLARE 7-108
DESCRIBE 7-127
EXECUTE 7-144
FREE 7-168
PREPARE 7-221
使用
DECLARE 7-119
FREE 7-169
PREPARE 7-222
定義 7-222
文タイプ 7-9
文のパラメーター化
PREPARE 7-227
SQL 識別子 7-228
文変数名の定義 7-149
439
データベース 7-368
表 7-77, 7-404, 7-441
列 7-81, 7-246
メッセージ・ファイルのファイ
ル -21
メ ッ セ ー ジ・フ ァ イ ル、
DBLANG を使用したサブディ
レクトリーの指定 4-11
メニュー、DBMENU を使用し
た指定 4-12
メモリー
ESQL/C での割り当て 6-4
ESQL/COBOL での 割り 当
て 6-13
システム sqlda 構造体につ
いての割り当て 713
メモリーの割り当て
ALLOCATE DESCRIPTOR
文を使用した 7-13
ESQL/C での動的な 6-4
ESQL/COBOL での 動的 な
6-13
ほ
メモリー、FREE による解放 7167
ボールド体 -12
も
ま
マイナス記号 (-)、算術演算子 7376
マシン・ノート -23
マニュアル、型
ドキュメント・ノート -23
マシン・ノート -23
リリース・ノート -23
24 IBM Informix SQL リファレンス・ガイド
文字ストリング
DATE 値として 3-28
DATETIME 値 とし て 3-10,
3-28
INTERVAL 値として 3-16
文字の表記 -12
ゆ
る
ろ
ユーザー Informix、関連するア
クセス権 7-181
ループ
RAISE 例 外の 使用 によ る
終了 8-35
SPL での作成および終了 8-
ロギング
CREATE TABLE を使用し
た設定 7-92
IBM Informix OnLine での 7-
26
り
リテラル
DATE
デフォルト値として使
用 7-24, 7-83
DATETIME
ALTER TABLE での使
用 7-23
CREATE TABLE で の
使用 7-82
IN キーワード 7-278
INSERT での構文 7-197
構文 7-422
式 7-380, 7-385
条件セグメント 7-351
セグメント 7-421
INTERVAL
INSERT での構文 7-197
構文 7-425
式 7-380, 7-385
条件セグメント 7-351
セグメント 7-424
デフォルト値として使
用 7-24, 7-83
構文 7-425
数
INSERT での構文 7-197
番号
IN キーワード 7-356
構文 7-427
式 7-380, 7-383
条件セグメント 7-351
セグメント 7-427
リリース・ノート、-23
リレー・モジュール
SQLRM 環境変数 4-26
SQLRMDIR 環境変数 4-27
52
WHILE での不確定 8-83
制御された 8-51
IBM Informix SE での 7-53
START DATABASE での開
始 7-54
ログのリネーム 7-324
ログ・ファイル位置の検出
れ
7-54
ログ
列
ALTER TABLE を使用した
削除 7-29
ALTER TABLE を使用した
変更 7-30
CREATE TABLE を使用し
た指定 7-81
stores5 データベース内の 15 ‐ 1-11
外部キーとしての定義 7-87
仮想 7-100
主キーとしての定義 7-86
情報の表示 7-189
制約の設定 7-78
制約の定義時に許される数
7-78
挿入 7-193
チェック制約の指定 7-90
データ型の変更 3-22
被参照側と参照側 7-27, 7-87
命名規則 7-81, 7-246
リネーム 7-246
列式
SELECT 7-267
構文 7-378
列レベル・アクセス権 7-184
連結演算子 (||) 7-377
連絡先情報 -24
開始、START DATABASE
7-323
バッファー付きとバッ
ファーなし 7-319
変更、SET LOG でモードを
7-319
ロック
COMMIT WORK による解
放 7-47
FETCH 7-161
ROLLBACK WORK による
アンロック 7-259
SET ISOLATION 7-312
SET LOCK MODE 7-316
UNLOCK TABLE 7-329
UPDATE カー ソル の影 響
7-116
上書き、行レベル 7-208
間
挿入 7-195
期間
更新 7-116
削除 7-124
更新 7-333
スクロール・カーソル 7-315
トランザクション内での 737
待ち時間 7-316
ロックのタイプ
行ロック 7-96
索引
25
ページ・ロック 7-96
論理演算子
条件セグメント 7-363
わ
ワイルドカード文字、LIKE ま
たは MATCHES 7-432
26 IBM Informix SQL リファレンス・ガイド
򔻐򗗠򙳰
Printed in Japan
GB88-8617-00
Fly UP