エラー処理 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - XMLデータ型

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/amr1556233250442.ditamap
dita:ditavalPath
ja-JP/amr1556233250442.ditaval
dita:id
B035-1140
Product Category
Software
Teradata Vantage

バッチ モードのシュレッディングでは、デフォルトで、個別の文書を処理している間にエラーが発生した場合、バッチはアボートされ、ストアド プロシージャから発生したエラーのタイプを示すエラー メッセージが返されます。

場合により、バッチ内の残りのドキュメントを引き続き処理して、後から順位付け、解決できるように指定されたエラー テーブルにエラーを書き込むことが望ましいときがあります。このシュレッディングの許容モードは、errorTableオプションをexternalContextパラメータの一部としてバッチ シュレッディングのストアド プロシージャに渡すことにより呼び出すことができます。

externalContextパラメータは、name=valueペアのカンマ区切りのリストです。許容されるエラー処理を呼び出すには、ユーザーはexternalContextの名前のいずれかとしてerrorTableを指定し、その値としてテーブル名を含めることができます。テーブル名はそのデータベース名で修飾することもできます。修飾しない場合、テーブルはシュレッディング ストアド プロシージャを呼び出すユーザーの下に存在する必要があります。文書のバッチのシュレッディングの際に、いずれかの文書がシュレッディングに失敗すると、その文書IDとエラー メッセージがエラー テーブルに書き込まれます。

エラー テーブルは必ずマルチセット テーブルとなり、次の2つの列を含む必要があります。
DOCID  VARCHAR(128),
ERRMSG VARCHAR(512),
追加の列を定義できますが、それらの列はNULL受入れ可能な列か、またはデフォルトの値が定義されている必要があります。エラー発生の時刻の特定に役立つ列を追加することをお勧めします。 例えば、
TS     TIMESTAMP DEFAULT CURRENT_TIMESTAMP
次のいずれかに該当する場合は、エラーが発生します。
  • エラー テーブルが存在しない。
  • エラー テーブルにdocid列とerrmsg列が存在しない。
  • シュレッディング プロシージャを呼び出すユーザーには、エラー テーブルへの挿入権限がない。

XMLバッチのシュレッディングは2つのフェーズで行なわれます。最初のフェーズでは、バッチ内のすべての文書が揮発テーブルにシュレッディングされ、第2フェーズではデータが揮発テーブルからターゲット テーブルに転送されます。最初のフェーズで何らかの理由によっていずれかの文書のシュレッディングに失敗すると、対応する文書IDとエラー メッセージがエラー テーブルに書き込まれます。これにより、ストアド プロシージャはバッチ内の残りの文書を引き続きシュレッディングできます。ただし第2フェーズで(データを揮発テーブルからターゲット テーブルに移動中に)エラーが発生した場合は、ターゲット テーブルへの書き込みなしにシュレッディングの手順はアボートします。