16.20 - ストアド プロシージャのDDL文 - Teradata Vantage NewSQL Engine

Teradata Vantage™ SQL ストアド プロシージャおよび埋め込みSQL

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1148-162K-JPN

サポートされているDDL文

ストアド プロシージャ内では、以下のSQL DDL文を使用できます。
  • ALTER FUNCTION
  • ALTER TABLE
  • ALTER TRIGGER
  • BEGIN LOGGING
  • COLLECT STATISTICS (最適化ルーチン形式)
  • COMMENT
  • CREATE CAST
  • CREATE DATABASE
  • CREATE ERROR TABLE
  • CREATE HASH INDEX
  • CREATE INDEX
  • CREATE JOIN INDEX
  • CREATE MACRO
  • CREATE ORDERING
  • CREATE PROFILE
  • CREATE RECURSIVE VIEW
  • CREATE ROLE
  • CREATE TABLE
  • CREATE TRANSFORM
  • CREATE TRIGGER
  • CREATE USER
  • CREATE VIEW
  • DELETE DATABASE
  • DELETE USER
  • DROP CAST
  • DROP DATABASE
  • DROP ERROR TABLE
  • DROP HASH INDEX
  • DROP INDEX
  • DROP JOIN INDEX
  • DROP MACRO
  • DROP ORDERING
  • DROP PROCEDURE
  • DROP PROFILE
  • DROP ROLE
  • DROP STATISTICS (最適化ルーチン形式)
  • DROP TABLE
  • DROP TRANSFORM
  • DROP TRIGGER
  • DROP USER
  • DROP VIEW
  • END LOGGING
  • MODIFY DATABASE
  • MODIFY PROFILE
  • MODIFY USER
  • RENAME MACRO
  • RENAME PROCEDURE
  • RENAME TABLE
  • RENAME TRIGGER
  • RENAME VIEW
  • REPLACE CAST
  • REPLACE FUNCTION
  • REPLACE MACRO
  • REPLACE ORDERING
  • REPLACE TRANSFORM
  • REPLACE TRIGGER
  • REPLACE VIEW
  • SET QUERY_BAND = … FOR TRANSACTION

使用上の注意

注意
COMMENT ストアド プロシージャ内ではDDL COMMENT文だけを使用できます。埋め込みSQLアプリケーションに限定されているDML COMMENT文を指定して、データベース オブジェクト、テーブルの列、およびパラメータのコメントを取り出すことはできません
CREATE TABLE CREATE TABLE文の変形はすべて有効です。
CREATE VOLATILE TABLE ストアド プロシージャ内にCREATE VOLATILE TABLE文を入れると、ログイン データベース内に揮発テーブルが作成されます。そのデータベース内に同じ名前の付いたオブジェクトがすでに存在すると、実行時例外が発生することになります。

揮発性のテーブルを参照するストアド プロシージャ内のDML文内には、修飾子としてユーザーのログイン データベースがあるか、または修飾のデータベース名が皆無である必要があります。

CREATE DATABASE/
CREATE USER ストアド プロシージャ内のCREATE DATABASE文またはCREATE USER文には、FROM句が入っていなければなりません。指定されたデータベースは、作成されるUSERまたはDATABASEの直接の所有者になります。

CREATE DATABASEまたはCREATE USERがFROM句を省略した場合、ストアド プロシージャの作成時にコンパイル エラーが報告されます。5568 - “SQL statement is not supported within a stored procedure.”

ストアド プロシージャ内で、FROM句を使わないで動的SQL文としてCREATE USER/ DATABASEを指定すると、ストアド プロシージャを実行したときに実行時例外として同じエラーが報告されます。

SET QUERY_BAND ストアド プロシージャのSET QUERY_BAND文は、FOR TRANSACTION句を指定する必要があります。クエリー バンドをストアド プロシージャ内のセッションに設定することはできません。

SET QUERY_BAND文のクエリー バンド指定文字列は、IN引数またはINOUT引数の形でストアド プロシージャに渡すことができます。

サポートされていないDDL文

ストアド プロシージャ内では、以下のSQL DDL文は使用できません。
  • ALTER METHOD
  • ALTER PROCEDURE
  • ALTER TYPE
  • CREATE FUNCTION
  • CREATE METHOD
  • CREATE PROCEDURE
  • CREATE TABLE(キュー テーブルおよびトレース テーブル形式)
  • CREATE TYPE(すべての形式)
  • DATABASE
  • DROP TYPE
  • EXPLAIN
  • HELP(すべての形式)
  • REPLACE METHOD
  • REPLACE PROCEDURE
  • REPLACE TYPE
  • SET QUERY_BAND = … FOR SESSION
  • SET ROLE
  • SET SESSION(すべての形式)
  • SET TIME ZONE
  • SHOW(すべての形式)

DDL文に対するトランザクション モードの影響

ストアド プロシージャに指定したDDL文の実行時の動作は、そのプロシージャが作成されたときのTeradataセッションのトランザクション モードによって異なります。
  • ストアド プロシージャにおいてTeradataトランザクション モードで明示的(ユーザー定義の)トランザクションに指定するDDL文は、そのトランザクションの最後の文でなければなりません。そうではない場合、実行時例外(SQLCODE: 3932、SQLSTATE: ‘T3932’)が発生します。
  • ストアド プロシージャをANSIトランザクション モードで実行する場合は、そのプロシージャ本体に指定されているどのDDL文の後にもCOMMIT WORK文が続いていなければなりません。そうではない場合、実行時例外(SQLCODE: 3722、SQLSTATE: ‘T3722’)が発生します。

関連トピック

以下に関する詳細な情報
  • サポートされているDDL文の詳細について、<Teradata Vantage™ SQLデータ定義言語 - 詳細トピック、B035-1184>を参照してください。
  • SET QUERY_BAND文に対して実行される権限チェックについては、ストアド プロシージャの権限チェックを参照してください。