前に準備されている動的SQL文が実行されるときに返されるデータに関する情報を取得します。
ANSI準拠
DESCRIBEは、ANSI/ISO SQL:2011規格に対するTeradataの拡張機能です。
DESCRIBEは、ANSI/ISO SQL:2011の文のDESCRIBE INPUTおよびDESCRIBE OUTPUTと同様に機能します。
必要な権限
なし。
呼び出し
実行可能形式。
動的SQL。
埋め込みSQLのみ。
構文
DESCRIBE statement_name INTO [:] descriptor_area [ USING { NAMES | ANY | BOTH | LABELS } ] [ FOR STATEMENT { statement_number | [:] statement_number_variable } ]
構文要素
- statement_name
- 前準備された文に関連付けた名前。有効なSQL識別子。単一引用符で囲みません。
- descriptor_area
- 前に準備されている文が実行されるときに返されるデータに関する情報を受け取る領域。
- statement_number
- 情報を求めるリクエスト内の文番号。
- statement_number_variable
- 情報を求めるリクエスト内の文番号。
使用上の注意
- 一般ルール
- SQLDAが定義されている必要があります。
- statement_nameで指定される文が、同じトランザクション内で準備されていなければなりません。
- 準備された文がデータを返さない文である場合、準備された文がデータを返さない文であるという確認以外には、有用な情報は得られません。
- DESCRIBEそのものを動的SQL文として実行することはできません。
- USING句のルール
指定するUSINGの形式 列 NAMES SQLDAのSQLNAMEフィールドにタイトルが置かれます。 USING句が指定されていない場合もそのようになります。
LABELS SQLDAのSQLNAMEフィールドにタイトルが置かれます。 選択リストで列に対してTITLE句が指定される場合、そのタイトルが返されます。
CREATE TABLE時にTITLEを付けて列が定義され、SELECT文でタイトルが指定されない場合には、CREATE TABLE文に指定したタイトルが返されます。
どちらもない場合は、デフォルトのタイトル(列名)が返されます。
BOTH SQLDAのSQLNAMEフィールドに名前とタイトルが置かれます。 この場合、以下のように、SQLVAR配列には列ごとに2つの要素(2 * n個の要素)が必要です。
要素の最初のセットには名前および列情報が含まれます。
2番目のセットには列のタイトルが含まれます。
ANY SQLDAのSQLNAMEフィールドにタイトルまたは名前が置かれます。 列にタイトルがある場合、そのタイトルがSQLNAMEフィールドに置かれます。
列にタイトルがない場合、列名がSQLNAMEフィールドに置かれます。
- FOR STATEMENT句のルール
- FOR STATEMENT句は動的な複文リクエストをサポートするためのものですが、単一文リクエストに使用することもできます。
- FOR STATEMENT句を指定しない場合、準備された動的SQLリクエストの最初の(または唯一の)SQL文についての記述情報が返されます。
- FOR STATEMENT句を指定する場合、準備された動的SQLリクエスト(句の整数値オペランドによって識別される)のSQL文の記述情報が返されます。
そのような文がない場合(例えば、FOR STATEMENT 3がコード化され、リクエストに文が2つだけしかない場合)、-504という値がSQLCODEに返され、情報は返されません。
関連情報
- descriptor_areaについては、<Teradata® Preprocessor2 for Embedded SQLプログラマ ガイド、B035-2446>を参照してください。
- EXECUTE (動的SQL形式)
- EXECUTE IMMEDIATE
- PREPARE (動的)