プログラミング言語SML#解説 3.7.1版
22.2 SQLクエリのためのML式の拡張構文
第19章で定義されている通り, SML#ではSQLクエリのために以下の拡張構文を導入している.
exp | ::= | ||
---|---|---|---|
_sqlserver appexp : ty | SQLサーバ | ||
_sql pat => sqlfn | SQL実行関数 | ||
_sql sql | SQLクエリ断片 | ||
atexp | ::= | ||
_sql (sql) | SQLクエリ断片 |
sqlおよびsqlfnは以下の通りである.
sql | ::= | sqlexp | SQL評価式 |
---|---|---|---|
sqlselect | SELECTクエリ | ||
sqlclause | SQLクエリ句 | ||
sqlcommand | SQLコマンド | ||
sqlfn | ::= | sqlselect | SELECTクエリ |
sqlclause | SQLクエリ句 | ||
sqlcommand | SQLコマンド |
これらの構文のうち_sqlで始まる式に現れる patおよびsqlの中では, ...(exp)または (...exp)という形で囲われるexpの中を除き (22.4節, 22.5節,および 22.6節参照), 以下は予約語として扱われる (この予約語のリストは 第17.2節からの再掲である). これらの予約語をSQL予約語と呼ぶ.
asc all begin by commit cross default delete desc distinct fetch first from group inner insert into is join limit natural next not null offset only on or order rollback row rows select set update values where
また,これらの構文には以下の制限がある.
-
•
_sqlに続くpatは開き丸括弧“(”から 始まってはならない.
-
•
式(トップレベル)の _sql sqlの sqlは, SQL予約語で始まらなければならない.
-
•
式(トップレベル)の _sql sqlは, 以下の位置以外に現れてはならない.
-
–
valやfun宣言の=の右側
-
–
let式のinとendの間
-
–
逐次実行式(;)の中
-
–
組ではない式を囲う丸括弧の中
-
–
上記4つの位置にあるfn式の=>の右側
-
–