サポートされている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文に対して実行される権限チェックについては、ストアド プロシージャの権限チェックを参照してください。