値は,スカラー式によって表現できます。スカラー式で表現できる値は,プロパティの指定,ルーチン起動,数値関数および集合関数によって得られる値です。
!! <プロパティ指定>の形式
<プロパティ指定> ::= 〔<プロパティ修飾子> <ピリオド>〕 <プロパティ名>
<プロパティ修飾子> ::= <相関名> !! <相関名>による修飾
|<クラス指定> !! <クラス指定>による修飾
!! <要素参照>の形式
<要素参照> ::= <一次子>
<左角括弧> ANY <右角括弧>
!! <フィールド参照>の形式
<フィールド参照> ::= <要素参照> <ピリオド> <フィールド名>
<フィールド名> ::= <プロパティ名>
!! <ルーチンの起動>の形式
<ルーチンの起動> ::= <ルーチン名> <引数リスト>
<引数リスト> ::= <左括弧> 〔 <引数>
〔 { <コンマ> <引数> }... 〕 〕 <右括弧>
<引数> ::= <値式>
|<値式> AS <データ型指定>
<ルーチン名> ::= <関数指定>
<データ型指定> ::= INT
|INTEGER
|BOOL
|BOOLEAN
|STRING <左括弧> <符号なし数値> <右括弧>
|BINARY <左括弧> <バイナリ長> <右括弧>
<バイナリ長> ::= <符号なし数値>
|<バイナリ長トークン>
!! <数値関数>の形式
<数値関数> ::= <絶対値関数>
<絶対値関数> ::= ABS <左括弧> <値式> <右括弧>
!! <集合関数>の形式
<集合関数> ::= COUNT <左括弧> <アスタリスク> <右括弧>
|<一般集合関数>
<一般集合関数> ::= <集合関数種別>
<左括弧> 〔 <集合指定子> 〕 <値式> <右括弧>
<集合関数種別> ::= COUNT
<集合指定子> ::= DISTINCT|ALL
!! <値式>の形式
<値式> ::= <一次子>
|<符号> <一次子>
|<値式> <+符号> <値式>
|<値式> <-符号> <値式>
|<値式> <アスタリスク> <値式>
|<値式> <斜線> <値式>
|<値式> <文字列連結演算子> <値式>
<一次子> ::= <左括弧> <値式> <右括弧>
|<プロパティ指定>
|<符号なし値指定>
|<集合関数>
|<数値関数>
|<ルーチンの起動>
|<フィールド参照>
<符号なし値指定> ::= <符号なし数値リテラル>
|<文字列リテラル>
|<疑問符>
|<論理リテラル>
<値指定> ::= 〔<符号>〕<符号なし数値リテラル>
|<文字列リテラル>
|<疑問符>
|<論理リテラル>
<プロパティ指定> ::= 〔<プロパティ修飾子> <ピリオド>〕 <プロパティ名>
<プロパティ修飾子> ::= <相関名> !! <相関名>による修飾
|<クラス指定> !! <クラス指定>による修飾
<プロパティ指定>の指定例を,次の表に示します。
表4-36 <プロパティ指定>の指定例
指定例 | 説明 |
---|---|
myProp_Foo | <識別子>によって<プロパティ名>だけを指定しています。 |
ID'FA7DA34B-CFF3-11d3-A03E-00A0C9967923' | <ID文字列>によって<プロパティ名>だけを指定しています。 |
myClass_XX.myProp_Foo | <プロパティ名>を<クラス名>によって修飾して指定しています。 |
P0.myProp_Foo | <プロパティ名>を<相関名>によって修飾して指定しています。 |
myClass_XX.ID'FA7DA34B-CFF3-11d3-A03E-00A0C9967923' | <ID文字列>によって表現した<プロパティ名>を,<クラス名>によって修飾して指定しています。 |
<要素参照>には,VariableArray型プロパティの要素を参照するための表現を指定します。
<要素参照> ::= <一次子>
<左角括弧> ANY <右角括弧>
<フィールド参照>では,VariableArray型プロパティの要素を参照する時の,フィールドの参照を表現します。
<フィールド参照> ::= <要素参照> <ピリオド> <フィールド名>
<フィールド名> ::= <プロパティ名>
例えば,「VariableArray型プロパティAuthorsの要素Ageが30である」という指定は,次のように記述します。
Authors[ANY].Age = 30
<ルーチンの起動>には,edmSQLで提供する関数を起動するための表現を指定します。
edmSQLで使用するルーチンは,関数だけです。
edmSQLによって起動する関数を次に示します。なお,これらの関数名はすべて,<予約されないキーワード>として登録されています。
それぞれの関数の詳細については,「4.5.9 関数指定の構文規則」を参照してください。
<ルーチンの起動> ::= <ルーチン名> <引数リスト>
<ルーチン名> ::= <関数指定>
<引数リスト> ::= <左括弧> 〔 <引数>
〔 { <コンマ> <引数> }... 〕 〕 <右括弧>
<引数> ::= <値式>
|<値式> AS <データ型指定>
<データ型指定> ::= INT
|INTEGER
|BOOL
|BOOLEAN
|STRING <左括弧> <符号なし数値> <右括弧>
|BINARY <左括弧> <バイナリ長> <右括弧>
<バイナリ長> ::= <符号なし数値>
|<バイナリ長トークン>
!!<バイナリ長トークン>については,「4.5.4(4)<トークン>」を
!!参照してください。
表4-37 AS<データ型指定>に指定できる値と指定例
値 | 指定例 | |
---|---|---|
Boolean型の引数 | BOOL BOOLEAN | ? AS BOOL ? AS BOOLEAN |
Integer32型の引数 | INT INTEGER | ? AS INT ? AS INTEGER |
String型の引数 | STRING(n※1) | ? AS STRING(3200) 定義長3200バイトのString型データ |
Binary型の引数 | BINARY(n※2) | ? AS BINARY(256) 定義長256バイトのBinary型データ ? AS BINARY(256k) 定義長が256キロバイトのBinary型データ ? AS BINARY(256m) 定義長が256メガバイトのBinary型データ ? AS BINARY(2g) 定義長が2ギガバイトのBinary型データ |
<数値関数>としては,絶対値関数(ABS関数)があります。<数値関数>は,<結合条件>には指定できません。また,<SELECT句>には指定できません。
<数値関数>は,次の形式で定義されています。
<数値関数> ::= <絶対値関数>
<絶対値関数> ::= ABS <左括弧> <値式> <右括弧>
<絶対値関数>の詳細について示します。
<集合関数>には,検索結果集合に対する演算を実行するための表現を指定します。
<集合関数> ::= COUNT <左括弧> <アスタリスク> <右括弧>
|<一般集合関数>
<一般集合関数> ::= <集合関数種別><左括弧> 〔 <集合指定子> 〕
<値式> <右括弧>
<集合関数種別> ::= COUNT
<集合指定子> ::= DISTINCT|ALL
COUNT(*)関数の詳細について説明します
COUNT関数の詳細について説明します。
<値式>とは,評価として値を得ることができる式の定義です。
<値式> ::= <一次子>
|<符号> <一次子>
|<値式> <+符号> <値式>
|<値式> <-符号> <値式>
|<値式> <アスタリスク> <値式>
|<値式> <斜線> <値式>
|<値式> <文字列連結演算子> <値式>
<一次子> ::= <左括弧> <値式> <右括弧>
|<プロパティ指定>
|<符号なし値指定>|<集合関数>|<数値関数>
|<要素参照>
|<ルーチンの起動>|<フィールド参照>
<符号なし値指定> ::= <符号なし数値リテラル>
|<文字列リテラル>
|<疑問符>
|<論理リテラル>
<値指定> ::= 〔<符号>〕<符号なし数値リテラル>
|<文字列リテラル>|<疑問符>|<論理リテラル>
表4-38 <値式>で指定する演算子の詳細
演算子 | 意味 | 被演算子の データ型 | 評価値 |
---|---|---|---|
<符号> (単項演算子+) | 値に正符号を付けます。評価値に変化はありません。 | Integer32型 | 整数値(Integer32型) |
<符号> (単項演算子-) | 値の符号を反転します。 | Integer32型 | 整数値(Integer32型) |
<+符号> (+) | 被演算子を加算します。 | Integer32型 | 整数値(Integer32型) |
<-符号> (-) | 左辺の被演算子から右辺の被演算子を減算します。 | Integer32型 | 整数値(Integer32型) |
<アスタリスク> (*) | 被演算子を乗算します。 | Integer32型 | 整数値(Integer32型) |
<斜線> (/) | 左辺の被演算子を右辺の被演算子で除算します。 | Integer32型 | 整数値(Integer32型) |
<文字列連結演算子> (||) | 文字列を連結します。 | String型 | 文字列値(String型) |