SQL 解説書

付録 P. DATALINK での BNF 指定

DATALINK 値はカプセル化された値で、 データベース以外の場所に保管されているファイルへのデータベースからの論理参照を含んでいます。

このカプセル化された値のデータ位置属性は、URL の形式でのファイルへの論理参照です。 この属性の値は、 以下の BNF 119 によって指定される、URL の構文に準拠しています。 これは、RFC 1738 : Uniform Resource Locators (URL), T. Berners-Lee, L. Masinter, M. McCahill, December 1994 に基づいています。

BNF 指定では、以下の規則が使用されます。

DATALINK での BNF 指定を以下に示します。

URL

url          =    httpurl | fileurl | uncurl | dfsurl | emptyurl   

HTTP

httpurl      =    "http://" hostport [ "/" hpath ]  
hpath        =    hsegment *[ "/" hsegment ]  
hsegment     =    *[ uchar | ";" | ":" | "@" | "&" | "=" ]

RFC1738 の元の BNF での検索エレメントは除去されている点に注意してください。 これは、そのエレメントがファイル参照の本質的な部分ではなく、 DATALINK のコンテキストでは意味をなさないためです。

FILE

fileurl      =    "file://" host "/" fpath  
fpath        =    fsegment *[ "/" fsegment ]  
fsegment     =    *[ uchar | "?" | ":" | "@" | "&" | "=" ] 

RFC1738 とは異なり、host が任意選択ではなく、 "localhost" ストリングが特別な意味を持たない点に注意してください。 これにより、"localhost" の解釈で、 クライアント / サーバーと EEE 構成で混乱が生じるのを避けることができます。

UNC

uncurl       =    "unc:\\" hostname "\" sharename "\" uncpath
sharename    =    *uchar  
uncpath      =    fsegment *[ "\" fsegment ]

NT では、一般的に使用されている UNC 命名規則をサポートしています。 これは RFC1738 での標準方式ではありません。

DFS

dfsurl        =   "dfs://.../" cellname "/" fpath  
cellname      =   hostname

DFS 命名方式をサポートしています。 これは RFC1738 での標準方式ではありません。

EMPTYURL

emptyurl     =    "" 
hostport     =    host [ ":" port ] 
host         =    hostname | hostnumber  
hostname     =    *[ domainlabel "." ] toplabel  
domainlabel  =    alphadigit | alphadigit *[ alphadigit | "-" ] alphadigit  
toplabel     =    alpha | alpha *[ alphadigit | "-" ] alphadigit  
alphadigit   =    alpha | digit  
hostnumber   =    digits "." digits "." digits "." digits  
port         =    digits

DATALINK 値では、空の (長さゼロ) URL もサポートされています。 これらは、調整例外が報告されてヌル不可の DATALINK 列が呼び出される場合に、 DATALINK 列を更新するのに便利です。 長さゼロの URL を使用すれば、その列が更新され、リンクが解除されます。

各種の定義

lowalpha      =   "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" |
                  "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" |
                  "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" |
                  "y" | "z"
hialpha       =   "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" |
                  "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" |
                  "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" |
                  "Y" | "Z"
alpha         =   lowalpha | hialpha 
digit         =   "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" |
                  "8" | "9"
safe          =   "$" | "-" | "_" | "." | "+"
extra         =   "!" | "*" | "'" | "(" | ")" | ","
hex           =   digit | "A" | "B" | "C" | "D" | "E" | "F" |
                  "a" | "b" | "c" | "d" | "e" | "f"
escape        =   "%" hex hex  
unreserved    =   alpha | digit | safe | extra  
uchar         =   unreserved | escape  
digits        =   1*digit     

前後のブランク文字は、構文解析中に DB2 によって切り詰められます。 また、スキーム名 ('HTTP'、'FILE'、'UNC'、'DFS') および host では大文字小文字が区別されず、 いつでも大文字でデータベースに保管されます。


脚注:

119
BNF は "バッカス正規形式" (特定の言語の構文を記述するための正式な表記) です。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]