|
次は、文法構文のセクションで使用する要素の定義をまとめたものです。
変更オプション ::= 変更オプション-リスト1 | 変更オプション-リスト2 変更オプション-リスト1 ::= 変更オプション | (変更オプション [, 変更オプション]...) 変更オプション ::= ADD [COLUMN] 列定義 | ADD テーブル制約定義 | ALTER [COLUMN] 列定義 | DROP [COLUMN] 列名 | DROP CONSTRAINT 制約名 | DROP PRIMARY KEY | MODIFY [COLUMN] 列定義 変更オプション-リスト2 ::= PSQL_MOVE [COLUMN] 列名 TO [[PSQL_PHYSICAL] PSQL_POSITION] 新しい列位置 | RENAME COLUMN 列名 TO 新しい列名 as またはセミコロン ::= AS | ; before/after ::= BEFORE | AFTER 呼び出し引数 ::= 位置引数[, 位置引数]... 列制約 ::= NOT NULL | NOT MODIFIABLE | UNIQUE | PRIMARY KEY | REFERENCES テーブル名 [(列名)] [参照アクション] コレーション名 ::= '文字列' | ユーザー定義名 列制約定義 ::= [CONSTRAINT 制約名] 列制約 列定義 ::= 列名 データ型 [DEFAULT 式] [列制約定義 [列制約定義]... [CASE | COLLATE コレーション名] 列名 ::= ユーザー定義名 コミット ステートメント::=
COMMITステートメント
参照 比較演算子 ::= < | > | <= | >= | = | <> | != 制約名 ::= ユーザー定義名 相関名 ::= ユーザー定義名 カーソル名::=
ユーザー定義名 データ型 ::= データ型名 [(桁数[, 小数位])] データ型名 ::= 「Pervasive PSQL で使用できるデータ型」を参照 データベース名 ::= ユーザー定義名 式 ::= 式 - 式 | 式 + 式 | 式 * 式 | 式 / 式 | 式 & 式 | 式 | 式 | 式 ^ 式 | (式) | -式 | +式 | ‾式 | ? | リテラル | スカラー関数 | {fn スカラー関数} | USER リテラル ::= '文字列' | 数字 | {d '日付リテラル'} | {t '時刻リテラル'} | {ts 'タイムスタンプ リテラル'} スカラー関数 ::= 「スカラー関数」を参照 式またはサブクエリ ::= 式 | (クエリ スペック) フェッチ方向::=
NEXT グループ名 ::= ユーザー定義名 インデックス定義::= (
インデックス セグメントの定義[,
インデックス セグ メントの定義]...)
インデックス名::=
ユーザー定義名 インデックス番号::=
ユーザー定義の値(0 から 118 までの整数) インデックス セグメントの定義::=
列名[
ASC|
DESC]
挿入/更新/削除 ::= INSERT | UPDATE | DELETE 挿入値 ::= values句 | クエリ スペック 結合定義 ::= テーブル参照 [INNER] JOIN テーブル参照 ON 検索条件 | テーブル参照 CROSS JOIN テーブル参照 | 外部結合の定義 ラベル名::=
ユーザー定義名 リテラル ::= '文字列' | 数字 | {d '日付リテラル'} | {t '時刻リテラル'} | {ts 'タイムスタンプ リテラル'} order-by式 ::= 式 [CASE | COLLATE コレーション名] [ASC | DESC] 外部結合の定義 ::= テーブル参照 外部結合タイプ JOIN テーブル参照 ON 検索条件 外部結合タイプ ::= LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] パラメーター::=
パラメーター タイプ名 データ型[
DEFAULTプロシージャ式
| =
プロシージャ式]
| SQLSTATE パラメーター タイプ名::=
パラメーター名|
パラメーター タイプ パラメーター名|
パラメーター名 パラメーター タイプ パラメーター タイプ::=
IN|
OUT|
INOUT|
IN_OUT パラメーター名::= [:]
ユーザー定義名 パスワード ::= ユーザー定義名 | '文字列' 位置引数 ::= 式 桁数 ::= 整数 述部 ::= 式 [NOT] BETWEEN 式 AND 式 | 式 比較演算子 式またはサブクエリ | 式 [NOT] IN (クエリ スペック) | 式 [NOT] IN (値[, 値]...) | 式 [NOT] LIKE 値 | 式 IS [NOT] NULL | 式 比較演算子 ANY (クエリ スペック) | 式 比較演算子 ALL (クエリ スペック) | EXISTS (クエリ スペック) プロシージャ式 ::= 通常の式と同様、ただし、IF 式と ODBC式 のスカ ラ関数は使用できない プロシージャ検索条件 ::= 通常の検索条件と同様、ただし、サブクエリを 含む式は使用できない プロシージャ ステートメント::=
[
ラベル名:]
BEGIN[
ATOMIC]
[
プロシージャ ステートメント[;
プロシージャ ステートメント]
...]
END
[
ラベル名]
|
CALLプロシージャ名
(
プロシージャ式[,
プロシージャ式]
...)
|
CLOSE カーソル名|
DECLAREカーソル名
CURSOR FOR
選択ステートメント
[
FOR UPDATE|
FOR READ ONLY]
|
DECLARE変数名 データ型
[
DEFAULTプロシージャ式
| =
プロシー ジャ式]
|
DELETE WHERE CURRENT OFカーソル名
|
削除ステートメント|
FETCH[
フェッチ方向[
FROM]]
カーソル名[
INTO変数名
[,
変 数名]]
|
IFプロシージャ検索条件
THEN
プロシージャ ステートメント
[;
プロシージャ ステートメント]... [
ELSEプロシージャ ステートメント
[;
プロシージャ ステートメント]...]
END IF|
IFプロシージャ検索条件 プロシージャ ステートメント
[
ELSEプロシージャ ステートメント
]
|
挿入ステートメント|
LEAVEラベル名
| [
ラベル名:]
LOOPプロシージャ ステートメント
[;
プロシージャ ステートメント]...
END LOOP[
ラベル名]
|
OPEN カーソル名|
PRINTプロシージャ式
[, '
文字列']
|
RETURN[
プロシージャ式]
|
トランザクション ステートメント|
into 付き選択ステートメント|
選択ステートメント|
SET変数名
=
プロシージャ式|
SIGNAL[
ABORT]
sqlstate値|
START TRANSACTION [トランザクション名]|
更新ステートメント|
UPDATE SET列名
=
プロシージャ式[,
列名=
プロシージャ式]...
WHERE CURRENT OFカーソル名
| [
ラベル名:]
WHILEプロシージャ検索条件 DO
[
プロシージャ ステートメント[;
プロシージャ ステートメント]] ...
END WHILE[
ラベル名]
| [ラベル名:] WHILE プロシージャ検索条件 プロシージャ ステートメン ト|
テーブル変更ステートメント | インデックス作成ステートメント | テーブル作成ステートメント | ビュー作成ステートメント | インデックス削除ステートメント | テーブル削除ステートメント | ビュー削除ステートメント | 権限付与ステートメント | 権限取消ステートメント | 設定ステートメント プロシージャ名 ::= ユーザー定義名 public またはユーザー/グループ名 ::= PUBLIC | ユーザー/グループ名 クエリ スペック [UNION [ALL] クエリ スペック]... [ORDER BY order-by式[, order-by式]...] [FOR UPDATE] クエリ スペック ::= (クエリ スペック) | SELECT [ALL | DISTINCT] [top 句] 選択リスト FROM テーブル参照[, テーブル参照]... [WHERE 検索条件] [GROUP BY 式[, 式]... [HAVING 検索条件]] 参照エイリアス ::= OLD [AS] 相関名 [NEW [AS] 相関名] | NEW [AS] 相関名 [OLD [AS] 相関名] 参照アクション ::= 参照更新アクション [参照削除アクション] | 参照削除アクション [参照更新アクション] 参照更新アクション ::= ON UPDATE RESTRICT 参照削除アクション ::= ON DELETE CASCADE | ON DELETE RESTRICT リリース ステートメント ::= RELEASE ステートメントを参照 結果::=
ユーザー定義名 データ型 ロールバック ステートメント ::= ROLLBACK WORK ステートメントを参照 セーブポイント名::=
ユーザー定義名 スカラー関数 ::= スカラー関数リスト参照 小数位 ::= 整数 検索条件 ::= 検索条件 AND 検索条件 | 検索条件 OR 検索条件 | NOT 検索条件 | (検索条件) | 述部 選択項目 ::= 式 [[AS] エイリアス名] | テーブル名. * 選択リスト ::= * | 選択項目[, 選択項目]... セット関数 ::= COUNT (*) | COUNT ([DISTINCT | ALL] 式) | SUM ([DISTINCT | ALL] 式) | AVG ([DISTINCT | ALL] 式) | MIN ([DISTINCT | ALL] 式) | MAX ([DISTINCT | ALL] 式) | STDEV ([DISTINCT | ALL] 式) sqlstate値::= '
文字列'
テーブル制約定義 ::= [CONSTRAINT 制約名] テーブル制約 テーブル制約 ::= UNIQUE (列名[, 列名]...) | PRIMARY KEY (列名[, 列名]...) | FOREIGN KEY (列名 [, 列名]) REFERENCES テーブル名 [(列名[, 列名]...)] [参照アクション] テーブル要素 ::= 列定義 | テーブル制約定義 テーブル式 ::= FROM テーブル参照[, テーブル参照]... [WHERE 検索条件] [GROUP BY 式[, 式]... [HAVING 検索条件] テーブル名 ::= ユーザー定義名 テーブル権限 ::= ALL | SELECT [(列名[, 列名]...)] | UPDATE [(列名[, 列名]...)] | INSERT [(列名[, 列名]...)] | DELETE | ALTER | REFERENCES テーブル参照 ::= {OJ 外部結合の定義} | [データベース名.]テーブル名 [[AS] エイリアス名] | 結合定義 | (結合定義) テーブル サブクエリ ::= クエリ スペック [[UNION [ALL] クエリ スペック]...] [ORDER BY order-by式[, order-by式]...] トランザクション ステートメント::=
コミット ステートメント|
ロールバック ステートメント|
リリース ステートメント トリガー名 ::= ユーザー定義名 ユーザーおよびパスワード ::= ユーザー名[:]パスワード ユーザー/グループ名 ::= ユーザー名 | グループ名 ユーザー名 ::= ユーザー定義名 値 ::= リテラル | USER | ? 値リスト ::= (値[, 値]...) values句 ::= DEFAULT VALUES | VALUES (式 [, 式]...) 変数名::=
ユーザー定義名 ビュー名 ::= ユーザー定義名
SqlStatementList は次のように定義されます。
SqlStatementList ステートメント ';' | SqlStatementList ';' ステートメント ::= StatementLabel ':'ステートメント |BEGIN ... END ブロック |CALL ステートメント |CLOSE CURSOR ステートメント |COMMIT ステートメント |DECLARE CURSOR ステートメント |DECLARE 変数ステートメント |DELETE ステートメント |FETCH ステートメント |IF ステートメント |INSERT ステートメント |LEAVE ステートメント |LOOP ステートメント |OPEN ステートメント |PRINT ステートメント |RELEASE SAVEPOINT ステートメント |RETURN ステートメント |ROLLBACK ステートメント |SAVEPOINT ステートメント |SELECT ステートメント |SET ステートメント |SIGNAL ステートメント |START TRANSACTION ステートメント |UPDATE ステートメント |WHILE ステートメント
述部は次のように定義されます。
式 比較演算子 式 |式 [NOT] BETWEEN 式 AND 式 |式 [NOT] LIKE 文字列リテラル |式 IS [NOT] NULL |NOT 述部 |述部 AND 述部 |述部 OR 述部 |'(' 述部 ')'比較演算子 ::= '=' | '>=' | '>' | '<=' | '<' | '<>' | '!=' |[NOT] IN 値リスト
式は次のように定義されます。
数字 |文字列リテラル |列名 |変数名 |NULL |CONVERT '('式 ',' データ型 ')' |'-' 式 |式 '+' 式 |式 '-' 式 |式 '*' 式 |式 '/' 式 |式 '&' 式 |'~' 式 |式 '|' 式 |式 '^' 式 |関数名 '(' [式リスト] ')' |'(' 式')' |'{' D 文字列リテラル '}' |'{' T 文字列リテラル '}' |'{' TS 文字列リテラル '}' |@:IDENTITY |@:ROWCOUNT |@@IDENTITY |@@ROWCOUNT
式リストは次のように定義されます。
|