16.20 - ストアド プロシージャの概要 - 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

定義

ストアド プロシージャ(Teradata Databaseで実行されるデータベース オブジェクト)は、Teradata Databaseへのインターフェースを提供する、SQL文と制御文と条件処理文の組み合わせです。

ストアド プロシージャという用語は、SQL文を使って記述したストアド プロシージャを指します。外部ストアド プロシージャという用語は、C、C++またはJavaで記述したストアド プロシージャを指します。
通常、ストアド プロシージャは以下のものから成り立っています。
  • プロシージャ名
  • 入力パラメータと出力パラメータ
  • プロシージャ本体

ストアド プロシージャごとに、データベース内にストアド プロシージャ テーブルがあります。このテーブルには、ユーザーが記述したストアド プロシージャ本体とそれに対応するコンパイル済みのストアド プロシージャ オブジェクト コードが含まれます。データ ディクショナリ テーブルには、ストアド プロシージャのパラメータと属性が含まれます。

プロシージャ本体とソース テキスト

以下の用語は、ストアド プロシージャの構造を理解するのに役立ちます。

用語 定義
プロシージャ本体 ストアド プロシージャのメイン タスクを構成する文の集合。

プロシージャ本体は、単一の制御文やSQL文、またはBEGIN…END複合文(ブロックとも呼ばれる)にできます。複合文は入れ子になることもあります。

ソース テキスト CREATE/REPLACE PROCEDUREステートメント、パラメータ、プロシージャ名、およびストアド プロシージャ本体を含む、ストアド プロシージャの定義全体。

プロシージャ本体に含まれる構成要素

プロシージャ本体には、次のような構成要素が含まれています。

ストアド プロシージャ本体のタイプ 含むことができるもの
単一文 単一のSQL文または制御文(動的SQLを含む)。
次の構成要素を含めることはない
  • すべての宣言(ローカル変数、条件、カーソル、または条件ハンドラー)文
  • カーソル文(OPEN、FETCH、またはCLOSE)
複合文
  • ローカル変数の宣言
  • 条件宣言
  • カーソル宣言
  • 条件ハンドラーの宣言
  • 制御文
  • 動的SQLを含む、ストアド プロシージャがサポートするSQLデータ操作言語(DML)、データ定義言語(DDL)、およびデータ制御言語(DDL)文。

プロシージャ本体に含まれる文が1文のみで、宣言を一切含まない場合は、複合文をBEGIN…ENDキーワードで囲む必要はありません。

ストアド プロシージャの利点

ストアド プロシージャには、複数の入力および出力パラメータとローカル変数に加えて制御文および条件処理文が含まれており、これらによってSQLは完全な計算用プログラミング言語となります。

ストアド プロシージャをベースとするアプリケーションは、同等の埋め込みSQLアプリケーションと比べて以下の利点があります。
  • クライアント/サーバー間のネットワーク トラフィックが非常に少ないため、パフォーマンスが優れています。
  • サーバー上でビジネス ルールをカプセル化および実施できるので、アプリケーションの保守が向上します。
  • トランザクションの制御が向上します。
  • ユーザーにデータ テーブルへの直接アクセスを求めるのではなく、プロシージャへのユーザー アクセスに制限することで、アプリケーションのセキュリティが向上します。
  • ストアド プロシージャに埋め込まれているすべてのSQL言語文を、1つのCALL文を通してサーバー上で実行できるので、アプリケーションの実行が向上します。

    CALL文を入れ子にすると、入れ子にされたプロシージャ内のすべてのトランザクションと複雑なクエリーが、結合されて1つの明示的なトランザクションになり、入れ子にされたプロシージャ内のエラーが内部的に処理されるため、パフォーマンスが向上します。

関連トピック

  • ストアド プロシージャの詳細は、SQLストアド プロシージャを参照してください。
  • ストアド プロシージャ制御文については、SQL制御文を参照してください。
  • 外部ストアド プロシージャについては、<Teradata Vantage™ SQLデータ定義言語 - 詳細トピック、B035-1184>および<Teradata Vantage™ SQL外部ルーチン プログラミング、B035-1147>を参照してください。
  • ストアド プロシージャ作成用の構文については、<Teradata Vantage™ SQLデータ定義言語の構文規則および例、B035-1144>の「CREATE/REPLACE PROCEDURE」を参照してください。