ページの先頭行へ戻る
Symfoware Server V12.1.x RDB運用ガイド(データベース定義編)
FUJITSU Software

2.2.2 rdbexecsqlコマンドで定義する方法

ここでは、rdbexecsqlコマンドを使用して、定義ファイルからデータベースを定義する方法を示します。

rdbexecsqlコマンドでは、物理構造、論理構造および格納構造を定義することができます。手順としては、最初に、データベースの定義を記述したファイルを作成し、そのファイルを入力ファイルとして指定してrdbexecsqlコマンドを実行します。

なお、定義ファイルのパス名およびファイル名は、任意の名前で指定可能です。

参照

指定可能なファイル名長は“コマンドリファレンス”を参照してください。


rdbexecsqlコマンドの定義ファイルの記述形式

rdbexecsqlコマンドの定義ファイルを記述する文法の一般形式を以下に示します。

形式1

1つのSQL文の終わりには終了子“;”を指定することが必要です。

CREATE DATABASE  RDBDB    ;
↑ 終了子の指定
形式2(プロシジャルーチン定義を行う場合の記述形式)

プロシジャルーチン定義を行う場合は、定義ファイルの先頭に“EXEC SQL”を指定し、最後に“END-EXEC;”を指定します。“EXEC SQL”から“END-EXEC;”までが1つのSQL文とみなされます。

EXEC SQL
  CREATE PROCEDURE PROC01
     :
END-EXEC;

SolarisSolarisの場合

定義ファイルからデータベースを作成する例を以下に示します。

# rdbexecsql -s RDBDB -i /home/user/createdb.dat
                ↑                         ↑
         SQLサーバ名指定           定義ファイル指定

また、定義ファイルの例を以下に示します。

--  データベース名の登録  データベース名は“RDBDB”
CREATE DATABASE RDBDB;

--  データベーススペースの作成  DDLの実行
  --  データベーススペース定義  データベーススペース名は“DBSPACE1”
  CREATE DBSPACE DBSPACE1 ALLOCATE RAWDEVICE /dev/rdsk/c0t1d0s1;

--  論理構造の定義
  --  スキーマを定義  スキーマ名は“STOCKS”
  CREATE SCHEMA STOCKS;
      --  テーブルを定義
      CREATE TABLE STOCKS.在庫表  ( 製品番号       SMALLINT NOT NULL,
                              製品名         NATIONAL CHARACTER(10) NOT NULL,
                              在庫数量       INTEGER,
                              倉庫番号       SMALLINT,
                              PRIMARY KEY   (製品番号)
                            );
      CREATE VIEW STOCKS.大量在庫表(品番,数量)
                        AS SELECT   製品番号, 在庫数量  FROM STOCKS.在庫表
                        WHERE 在庫数量 >= 50;

--  格納構造の定義
--  在庫表のDSO

  CREATE DSO 在庫表DSO
             FROM STOCKS.在庫表
             TYPE SEQUENTIAL(PAGESIZE(4),ORDER(1));
--  在庫表のDSI
--  DSIのフォーマット指定
  CREATE DSI 在庫表DSI
             DSO  在庫表DSO
             ALLOCATE DATA ON DBSPACE1 SIZE 280K,
             FORMAT; 
--  インデックスのDSO
  CREATE DSO 製品番号IXDSO
             INDEX ON STOCKS.在庫表 (製品番号)
             TYPE BTREE ( PAGESIZE1(16),PAGESIZE2(1), REALIGNMENT) BY ADDRESS;
--  インデックスのDSI
--  DSIのフォーマット指定
  CREATE DSI 製品番号IXDSI
             INDEX
             DSO      製品番号IXDSO
             ALLOCATE BASE      ON DBSPACE1 SIZE 200K,
                      INDEX     ON DBSPACE1 SIZE  40K,
             FORMAT; 

--  その他の定義
      --  プロシジャを定義
      EXEC SQL
          CREATE PROCEDURE STOCKS.PROC001 ( IN  KEY1  INTEGER )
                              COMMENT '在庫不足の製品の発注依頼'
          BEGIN
              DECLARE 在庫数量変数 INTEGER;
              SELECT  在庫数量  INTO  在庫数量変数 FROM  STOCKS.在庫表;
                 :
          END
      END-EXEC;

--  データベースの創成  DMLの実行
  --  データのINSERT
  INSERT INTO STOCKS.在庫表 (製品番号,製品名,在庫数量,倉庫番号)
              VALUES (110,N'テレビ',86,2);
  INSERT INTO STOCKS.在庫表 (製品番号,製品名,在庫数量,倉庫番号)
              VALUES (112,N'ビデオ',95,3);

以下の記述は注釈とみなします。

  • “*”、“/”、“@”および“-”で始まる行

  • “--”(連続した2個のハイフン)以降に記載された記述
    “--”以降その行の右終端までを注釈とみなします。

Solaris以外の場合は、rdbexecsqlコマンドの定義ファイル指定および定義ファイル中のデータベーススペース定義を、それぞれ以下のように変更してください。

LinuxLinuxの場合

  • 定義ファイル指定: /home/user/createdb.dat

  • データベーススペース定義:CREATE DBSPACE DBSPACE1 ALLOCATE RAWDEVICE /dev_symfoware/raw1

WindowsWindowsの場合

  • 定義ファイル指定:C:\USERS\DEFAULT\CREATEDB.DAT

  • データベーススペース定義:CREATE DBSPACE DBSPACE1 ALLOCATE FILE C:\SFWD\RDB\USR\DBSP\DATABASE_SPACE ATTRIBUTE SPACE(3M)