ストアド プロシージャの本体のサイズは、6.4 MBまでに制限されています。ただし、ストアド プロシージャのオブジェクト コード(コンパイル済みのストアド プロシージャ)のサイズには、制限はありません。
ストアド プロシージャ内のSQL文が大きくて複雑な場合は、構文解析プログラムの制限が適用されます。
反復も含めた入れ子のCALL文の数は、15を超えてはなりません。
プロシージャ内のパラメータ数は、256を超えてはなりません。
複数のデータベースにまたがってストアド プロシージャの名前を変更することはできません。
ANSIトランザクション モードで作成されたストアド プロシージャをTeradataトランザクション モードで実行したり、その逆を行なうことはできません。ただし、REPLACE PROCEDUREを使用して新しいセッションで再作成した後であれば、そのストアド プロシージャを実行することは可能です。
ストアド プロシージャは、作成時のプラットフォームと実行時のプラットフォームが異なると実行できません。ただし、この制約もまた、ALTER PROCEDURE文を使用してストアド プロシージャを再コンパイルすれば対処できます。
マクロ内の唯一の文がストアド プロシージャである場合、マクロからプロシージャを実行できます。
- ストアド プロシージャ内のEXPLAIN修飾子とUSINGリクエスト修飾子
- EXECUTEマクロ文
- ストアド プロシージャ内のWITH句
- BEGIN QUERY LOGGING
- END QUERY LOGGING
- FLUSH QUERY LOGGING
- REPLACE QUERY LOGGING
特定の日付形式で作成されたストアド プロシージャでは、実行セッションに設定された日付形式に関係なく、常に同じ日時の形式が表示されます。
ストアド プロシージャ内では、キュー テーブル形式のCREATE TABLEを実行できません。その他の形式のCREATE TABLE文はすべて有効です。
行レベル セキュリティ(RLS)管理のために、ストアド プロシージャにDDL文とDCL文を定義することはできません。RLSには、セキュリティ ポリシー、データ重要度分類、 およびユーザーに割り当てられているセキュリティ クレデンシャルに基づいてデータ アクセスを制御する機能が備わっています。ユーザーに上書き権限がない場合には、サポートされているRLS制約チェックが実行されます。
ストアド プロシージャでCURRENT_TIMEまたはCURRENT_TIMESTAMPを使用し、DBS制御汎用フィールド16 (System TimeZone Hour)および17 (System TimeZone Minute)を手動で変更した場合には、ストアド プロシージャを再コンパイルする必要があります。タイムゾーンを自動的に変更するためにTimeZoneStringをtdlocaledefに設定する必要はありません。
関連トピック
- REPLACE PROCEDUREまたはALTER PROCEDUREについては、<Teradata Vantage™ SQLデータ定義言語の構文規則および例、B035-1144>を参照してください。
- <Teradata Vantage™ SQLデータ操作言語、B035-1146>の「CREATE TABLE(キュー テーブル形式)」