スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド

[目次][索引][前へ][次へ]

12.3.2 使用できるSQLの詳細

リモートデータベースアクセスに使用できるSQL文の詳細を次の表に示します。

なお,個々のSQLの詳細については,マニュアル「HiRDB Version 8 SQLリファレンス」を参照してください。

表12-5 リモートデータベースアクセスに使用できるSQL文の詳細

区分 SQL文の形式 分散サーバでの使用可否
HiRDB XDM/
RD
ORACLE RDB1
E2
SQL/K
変数
{:埋込み変数〔:標識変数〕
 | ?パラメタ}
※9 ※9 ※9 ※9 ※9
表名
RDノード名称.認可識別子.
表識別子
※1 ※1 ※1 ※1 ※1
〔認可識別子.〕表別名
※1 ※1 ※1 ※1 ※1
〔認可識別子.〕表識別子
※2 ※2 ※2 ※2 ※2
表指定
{ 〔認可識別子.〕表識別子 | 
  相関名}
※3 ※3 ※3 ※3
列指定
〔表指定.〕列名
〔表指定.〕繰返し列名 [添字]
× × × ×
値指定
{定数 | 変数 | USER
※4
| CURRENT_DATE 
| CURRENT_TIME
× × ×
| 〔文ラベル.〕SQL変数名
| 〔〔認可識別子.〕
  ルーチン識別子.〕
  SQLパラメタ名}
× × × × ×
項目指定
{列指定
| 〔文ラベル.〕 SQL変数名
| 〔〔認可識別子.〕
  ルーチン識別子.〕
  SQLパラメタ名}
× × × × ×
集合関数
AVG,SUM,MAX,MIN,
COUNT
スカラ関数
VALUE
× × ×
DATE,TIME,YEAR,
MONTH,DAY,
HOUR,MINUTE,
SECOND,DAYS,
× × ×
DECIMAL,DIGITS,
FLOAT,INTEGER,
CHARACTER,HEX,
× × ×
LENGTH,SUBSTR
※5 ※5 × ×
ラベル付き
間隔
(値式) {YEAR〔S〕 
| MONTH〔S〕
| DAY〔S〕 }
× × ×
一次子
{(値式) | 列指定 | 値指定
| 集合関数 | スカラ関数
※4
| ラベル付き間隔}
× × ×
値式
{ 〔{+|-} 〕一次子
| 値式{+|-|*|/|‖}一次子}
※4 ※4
比較演算子
{=|<>|<|<=|>|>=}
※4
述語
{値式 IS〔NOT〕NULL
※4
| 値式〔NOT〕LIKE値指定
※4
| 値式〔NOT〕BETWEEN値式
  AND値式
※4
| 値式〔NOT〕IN{(値指定
 〔,値指定〕…)|副問合せ}
※4
| 値式 比較演算子 値式
| 値式 比較演算子 副問合せ
× ×
| 値式 比較演算子 
{ANY|ALL|SOME}副問合せ
× ×
| EISTS 副問合せ
× ×
| 項目指定 〔NOT〕 XLIKE
  パターン文字
× × × ×
| ARRAY
  (繰返し列名〔,繰返し列名〕…)
  [ANY] (探索条件)
× × × ×
| 項目指定 〔NOT〕 SIMILAR TO
  パターン文字列}
× × × ×
探索条件
{ 〔NOT〕{(探索条件)|述語}
※4
| 探索条件 OR{(探索条件)
|述語}
| 探索条件 AND{(探索条件)|
  述語}}
選択式
{値式(変数を除く)|表指定.*
| 〔表指定.〕ROW}
× × × × ×
問合せ指定
SELECT〔{ALL|DISTINCT}〕
×
{*|選択式〔.選択式〕}
FROM 表名〔.表名〕…
〔WHERE 探索条件〕
〔GROUP BY 列指定〕
〔HAVING 探索条件〕
問合せ式
{問合せ指定|(問合せ式)
|問合せ式 UNION〔ALL〕
{問合せ指定|(問合せ式)}}
× ×
静的カーソル宣言
DECLARE カーソル名 CURSOR FOR 
問合せ式
※6 ※6
〔ORDER BY 
{列指定|ソート項目指定番号}
〔{ASC|DESC}〕
〔,{列指定|ソート項目指定番号}
〔{ASC|DESC}〕〕…〕 
※7 ※7 ※7
〔{WITH{SHARE|EXCLUSIVE}LOCK
× × ×
|WITHOUT LOCK 〔{WAIT|NOWAIT}〕}〕
× ×
〔{WITH ROLLBACK
× ×
|NO WAIT}〕
× × × ×
〔FOR{UPDATE〔OF 列名
〔,列名〕…〕
|READ ONLY}〕
× × ×
動的カーソル宣言
DECLARE カーソル名 CURSOR FOR 
動的SELECT文を示す
SQL識別子
動的SELECT文
形式1
問合せ式
※6 ※6
〔ORDER BY 
{列指定|ソート項目指定番号}
〔{ASC|DESC}〕
〔,{列指定|ソート項目指定番号}
〔{ASC|DESC}〕〕…〕
※7 ※7 ※7
〔{WITH{SHARE
|EXCLUSIVE}LOCK
× × ×
|WITHOUT LOCK 
〔{WAIT|NOWAIT}〕}〕
× ×
〔{WITH ROLLBACK
× ×
|NO WAIT}〕
× × × ×
〔FOR UPDATE〕
動的SELECT文
形式2
SELECT {{列名
  |繰返し列〔[添字]〕
  |列名..属性名〔..属性名〕…}
〔,{{列名
    |繰返し列〔[添字]〕
    |列名..属性名〔..属性名〕…}〕…
  |*}
  FROM LIST リスト名
 〔排他オプション〕
× × × × ×
ASSIGN LIST文
形式1
ASSIGN LIST リスト名
  FROM (〔認可識別子.〕表識別子)
  〔WHERE 探索条件〕
  〔WITHOUT LOCK〔{WAIT|NOWAIT}〕〕
  〔WITH ROLLBACK|NO WAIT〕
× × × × ×
ASSIGN LIST文
形式2
ASSIGN LIST リスト名
  FROM リスト名1
 〔{{AND|OR|AND NOT|ANDNOT}リスト名2
    |FOR ALTERLIST〕
× × × × ×
DROP LIST文
DROP {LIST リスト名|ALL LIST}
× × × × ×
OPEN文
形式1
OPEN カーソル名
〔USING:埋込み変数
〔,埋込み変数〕…〕
OPEN文
形式2
OPEN カーソル名
USING DESCRIPTOR 〔:〕
SQL記述領域名
CLOSE文
CLOSE カーソル名
FETCH文
形式1
FETCH カーソル名 INTO 
変数〔,変数〕…
FETCH文
形式2
FETCH カーソル名 
USING DESCRIPTOR 〔:〕
SQL記述領域名
BY 変数 〔ROWS〕
× × × × ×
FETCH文
形式3
FETCH カーソル名
INTO 配列変数〔,配列変数〕…
× × × × ×
1行SELECT文
SELECT〔{ALL|DISTINCT}〕
{*|選択式〔,選択式〕…}
INTO 変数〔,変数〕…
FROM 表名〔,表名〕…
〔WHERE 探索条件〕
〔GROUP BY 列指定〕
〔HAVING 探索条件〕
×
〔{WITH{SHARE
|EXCLUSIVE}LOCK
× × ×
|WITHOUT LOCK 〔{WAIT|NOWAIT}〕}〕
× ×
〔{WITH ROLLBACK
× ×
|NO WAIT}〕
× × × ×
挿入値
{値指定|NULL}
※4
INSERT文形式1
INSERT INTO 表名〔(列名
〔,列名〕…)〕
{VALUES(挿入値〔,挿入値〕…)
|問合せ指定}
〔WITH ROLLBACK〕
× ×
INSERT文形式2
INSERT INTO 表名(ROW)
{VALUES(行挿入値)
|問合せ指定}
〔WITH ROLLBACK〕
× × × × ×
INSERT文形式3
FOR 変数
INSERT INTO 表名〔(列名〔,列名〕…)〕
{VALUES (挿入値〔,挿入値〕…)
|問合せ指定}
〔WITH ROLLBACK〕
× × × × ×
INSERT文形式4
FOR 変数
INSERT INTO 表名(ROW)
{VALUES (行挿入値)|問合せ指定}
〔WITH ROLLBACK〕
× × × × ×
更新値
{値式|NULL}
※4
UPDATE文形式1
UPDATE 表名
SET 列名=更新値
         〔,列名=更新値〕…
〔WHERE{探索条件
|CURRENT OF カーソル名}〕
UPDATE 表名
SET 繰返し列名[{添字|*}]
     =要素の値
    〔,繰返し列名[{添字|*}]
       =要素の値〕…
〔WHERE{探索条件
|CURRENT OF カーソル名}〕
× × × ×
UPDATE 表名
ADD 繰返し列名[{添字|*}]
      =ARRAY[要素の値
           〔,要素の値〕…]
    〔,繰返し列名[{添字|*}]
      =ARRAY[要素の値
          〔,要素の値〕…]〕…
〔WHERE{探索条件
|CURRENT OF カーソル名}〕
× × × ×
UPDATE 表名
DELETE 繰返し列名[{添字|*}]
    〔,繰返し列名[{添字|*}]〕…
〔WHERE{探索条件
|CURRENT OF カーソル名}〕
× × × ×
〔WITH ROLLBACK〕
× ×
UPDATE文形式2
UPDATE 表名
SET ROW=変数
〔WHERE{探索条件
|CURRENT OF カーソル名}〕
〔WITH ROLLBACK〕
× × × × ×
UPDATE文形式3
FOR 変数
UPDATE 表名
SET 列名=更新値〔,列名=更新値〕…
〔WHERE 探索条件〕
〔WITH ROLLBACK〕
× × × × ×
UPDATE文形式4
FOR 変数
UPDATE 表名
SET ROW=変数
〔WHERE 探索条件〕
〔WITH ROLLBACK〕
× × × × ×
DELETE文形式1
DELETE FROM 表名
〔WHERE{探索条件
|CURRENT OF カーソル名}〕
〔WITH ROLLBACK〕
× ×
DELETE文形式2
FOR 変数
DELETE FROM 表名
WHERE 探索条件
× × × × ×
〔WITH ROLLBACK〕
× × × × ×
PREPARE文
PREPARE SQL文識別子
FROM{'文字列'|変数}
〔WITH SQLNAME OPTION〕
× ×
PREPARE文で前処理できるSQL文
INSERT,
UPDATE(カーソルを使わない),
DELETE(カーソルを使わない),
動的SELECT文形式1,
PURGE TABLE文,
LOCK TABLE文,
CALL文
× × × ×
定義系SQL,
ASSIGN LIST文,
DROP LIST文,
動的SELECT文形式2
× × × × ×
DESCRIBE OUTPUT文
DESCRIBE 〔OUTPUT〕
SQL文識別子 INTO
 〔:〕SQL記述領域名
 〔〔:〕列名記述領域名〕
DESCRIBE INPUT文
DESCRIBE INPUT
SQL文識別子 INTO
 〔:〕SQL記述領域名
 〔〔:〕列名記述領域名〕
× × × ×
EXECUTE文形式1
EXECUTE SQL文識別子 
 〔{INTO 変数〔,変数〕…
 |INTO DESCRIPTOR
 〔:〕SQL記述領域名}〕
× × × ×
 〔{USING 変数〔,変数〕…
 |USING DESCRIPTOR 
 〔:〕SQL記述領域名}〕
EXECUTE文形式2
EXECUTE SQL文識別子
{USING 配列変数〔,配列変数〕…
 |USING DESCRIPTOR
   〔:〕SQL記述領域名}
BY 変数 〔ROWS〕
× × × × ×
EXECUTE文で実行できるSQL文
PREPARE文で前処理した,
動的SELECT文以外のSQL文
EXECUTE
IMMEDIATE文
EXECUTE IMMEDIATE{'文字列'|変数}
× ×
EXECUTE
IMMEDIATE文で実行できるSQL文
INSERT文,
UPDATE文(カーソルを使わない),
DELETE文(カーソルを使わない),
× ×
PURGE TABLE文,
LOCK TABLE文,
CALL文
× × × ×
定義系SQL,
ASSIGN LIST文,
DROP LIST文
× × × × ×
PURGE TABLE文
PURGE TABLE 表名
 〔WITH ROLLBACK
 |NO WAIT〕
× × × ×
LOCK TABLE文
LOCK TABLE 表名〔,表名〕…
 〔IN {SHARE|EXCLUSIVE}
  MODE〕
 〔WITH ROLLBACK
 |NO WAIT〕
× × × ×
UNTIL DISCONNECT
× × × × ×
CALL文※10
CALL 
 RDノード名称.認可識別子.
  ルーチン識別子(引数指定)
× × × ×
GET
DIAGNOSTICS文
GET DIAGNOSTICS...
※8 ※8 ※8 ※8 ※8
SET SESSION AUTHORIZATION文
SET SESSION AUTHORIZATION
  :埋込み変数1
  〔{USING|IDENTIFIED BY}
    :埋込み変数2〕
× × × × ×
FREE LOCATOR文
FREE LOCATOR :位置付け子参照
  〔,:位置付け子参照〕…
× × × × ×
代入文
SET 代入先=代入値
× × × × ×
CALL COMMAND文
CALL COMMAND
 {:埋込み変数1|?パラメタ1|定数1}
 〔WITH{:埋込み変数2|?パラメタ2
    |定数2}〕
 〔INPUT{:埋込み変数3|?パラメタ3
    |定数3}〕
 〔OUTPUT TO{:埋込み変数4:標識変数1
    |?パラメタ4}〕
 〔ERROR TO{:埋込み変数5:標識変数2
    |?パラメタ5}〕
 〔RETURN CODE TO{:埋込み変数6
    |?パラメタ6}〕
 〔ENVIRONMENT{:埋込み変数7
    |?パラメタ7|定数4}〕
 〔SERVER{:埋込み変数8|?パラメタ8
    |定数5}〕
× × × × ×

(凡例)
○:使用できます。
×:使用できません。

注※1
表名の形式'RDノード名称.認可識別子.表識別子',及び'〔認可識別子.〕表別名'は,現行SQLコネクションとして規定SQLコネクションを使用する場合にだけ使用できます。

注※2
表名の形式'〔認可識別子.〕表識別子'は,現行SQLコネクションとして分散RDノードへのSQLコネクションを使用する場合にだけ使用できます。

注※3
相関名に全角と半角の文字が混在していると分散サーバで処理できないことがあります。

注※4
次に示す機能は使用できません。
  • USER定数(SQL/Kだけ)
  • NULL定数(SQL/Kだけ)
  • 比較演算子の'‖'(RDB1 E2だけ)
  • 比較演算子の'<>'(SQL/Kだけ)
  • 述語と探索条件の'NOT'(SQL/Kだけ)
  • スカラ関数(RDB1 E2,及びSQL/Kだけ)
  • 問合せ指定の'ALL',及び'DISTINCT'(SQL/Kだけ)

注※5
MCHAR型の列にLENGTH,又はSUBSTR関数を使用する場合,HiRDBではデータの長さと位置を文字数で処理するのに対し,XDM/RDではバイト数で処理するため実行結果が異なります。また,ORACLEでは文字型の列に1バイト文字と2バイト文字が混在するため,LENGTH関数,又はSUBSTR関数を使用するとバイト数で処理します。

注※6
RDB1 E2,及びSQL/Kの場合,問合せ式の代わりに問合せ指定で定義してください。

注※7
UNION 〔ALL〕の指定がない場合,ORDER BY句のソート指定項目番号に指定する番号の内容がXDM/RD,RDB1 E2,及びSQL/Kとそれ以外では異なります。XDM/RD,RDB1 E2,及びSQL/Kの場合,ソートのキーにしたい列の選択式の位置(SELECT句の中で指定されている位置)を示す番号を指定するのに対して,それ以外の場合,ソートのキーにしたい列の位置(導出表の中で指定されている位置)を表す番号を指定します。

注※8
取得できるエラー情報は,分散サーバで発生したエラーだけです。分散サーバで発生したエラーの詳細については,「12.5 分散サーバで発生したエラーの対処」を参照してください。

注※9
繰返し構造の埋込み変数,?パラメタは使用できません。

注※10
PURGE TABLE文,COMMIT文,及びROLLBACK文を使用した手続きは実行できません。