BTEQは、SQLを解釈せずデータベースに渡しますが、SQLリクエストがどの地点で始まり終了するかを決定するための必要最低限の入力解析は行なう必要があります。 先頭のピリオドがない場合、SQLリクエストの開始として解釈されます。 リクエストの終了を検知するには、BTEQは終了のためのセミコロンを見つける必要があります。 検索中、BTEQは指定された入力行を1文字ずつ確認し、BTEQがその目的のためのみに認識する区切り記号内に検索文字が存在するかどうかを基準に、テキストの一部を無視します。 具体的には、注釈、括弧、引用符、およびパス スルー テキスト文字列は、認識された区切り記号のセットを構成し、下記の構文解析の規則セクションで説明されているように重大な意味を持ちます。 BTEQは、Teradata SQL構文の検証を行ないません。 リクエスト終了のためのセミコロンとみなされるものを見つけるとすぐに、リクエストは検証なしでデータベースに渡されます。
onusはBTEQユーザー上にあり、構文的に正しいリクエストを提供します。 これがないと、BTEQはリクエスト終了のためのセミコロンが入力のどこに存在するか誤って解釈し、bogusリクエストの実行依頼を停止する場合があります。
BTEQは、次の構文解析の規則を使用して、リクエストの最後の部分を検索する間、入力テキストのどの部分を無視するかを決定します。
- コメントの開始「/*」が検索されると、それに続くすべては、コメント終了の文字列「*/」が検知されるまで無視することができます。
- 単一引用符または二重引用符がコメント外の場所で検知された場合、一致する同じ形式の引用符が検知されるまで無視できます。
- コメントまたは引用符で囲まれた文字列の外側で検知されたすべての左側の括弧については、終了のためのセミコロンの検索は、コメントまたは引用符で囲まれた文字列に存在しない対応する右側の引用符がそれぞれにおいて検知されるまで継続されます。
- @BEGIN_PASS_THRU文字列が検知されると、それに続くすべては、@END_PASS_THRU文字列が検知されるまで無視することができます。
上記規則の唯一の例外は、BTEQがバッチ モードで使用され、入力(stdinまたはRUNファイル)の最後の命令または最後の命令とみなされるものを処理している場合です。
このような場合、BTEQは、終了のためのセミコロンが見つかったかどうかにかかわらず、SQLリクエストをそのままの状態でデータベースへ送信することを終了します。