ACTIVITY_COUNTステータス変数は、埋め込みSQLまたはストアド プロシージャ アプリケーションのSQL DML文の影響を受けた行数を戻します。
これは、埋め込みSQLアプリケーションのSQLCAのSQLERRD配列におけるアクティビティ カウント語と同じ機能を実現します。
ANSI準拠
ACTIVITY_COUNTは、ANSI/ISO SQL:2011規格に対するTeradataの拡張機能です。
ACTIVITY_COUNTの設定
ACTIVITY_COUNTは、ストアド プロシージャまたは埋め込みSQLアプリケーションが実行を開始するときには0に初期設定されており、各実行可能SQL文の処理後の実行時に更新されます。受け取るカウントをテストするための独自のコードを作成する必要があります。
- 4バイト制限(2^32-1行)
- 8バイト制限(2^64-1行)
8バイトのアクティビティ カウントを要求するようにクライアント アプリケーションをコーディングし、サーバーが8バイトのアクティビティ カウントを返すことができる場合、数値オーバーフローの警告は表示されなくなります。つまり、アクティビティ カウントは、常に実際のアクティビティ カウントになります(アクティビティ カウントのモジュロ2^32にはなりません)。ただし、8バイトのアクティビティ カウントを要求するようにクライアント アプリケーションをコーディングしない場合、またはサーバーが8バイトのアクティビティ カウントを返すことができない場合、やはり数値オーバーフローの警告が表示されます。
ACTIVITY_COUNTのテスト
影響された行数を知る必要のあるSQL文の各実行後にACTIVITY_COUNTを検査し、適切なエラー処理を確認します。
ACTIVITY_COUNT値に基づいてエラー処理を扱う自分のコードを作成する必要があります。
ACTIVITY_COUNTの使用上の制約
- ACTIVITY_COUNTをSET文のオペランドとして指定する。
例えば、次の文は可能です。
SET h1 = h1 + ACTIVITY_COUNT;
- ACTIVITY_COUNTをSQL文の式として指定する。
例えば、次のような文が可能です。
INSERT INTO table_1 (column_1) VALUES (:ACTIVITY_COUNT); UPDATE table_1 SET column_1 = column_1 + :ACTIVITY_COUNT;
- ACTIVITY_COUNTはストアド プロシージャ内で明示的に宣言できない。
- ACTIVITY_COUNTは値または式にSETできない。
例えば、次の文は無効です。
SET ACTIVITY_COUNT = h1 + h2;
- ACTIVITY_COUNTは、SELECT文のINTO句には指定できない。
例えば、次の文は無効です。
SELECT column_1 INTO :ACTIVITY_COUNT FROM table_1;
- ACTIVITY_COUNTは、ストアド プロシージャ内でCALL文のINOUTおよびOUTパラメータの代わりには指定できない。
- クエリーのアクティビティ カウントが限界の232-1行を超える場合、システムは実際のアクティビティ カウントのモジュロ232を、次の警告メッセージとともに戻します。
Numeric overflow has occurred internally. The number of rows returned is actual number of rows returned, modulo 2^32.
この状況における実際のアクティビティ カウントを判別するには、次のようにして、232に、戻されるモジュロ232の値を加える必要があります。
実際のアクティビティ カウント = returned_value + 232
これはSQLストアド プロシージャと埋め込みSQLアプリケーションの両方に当てはまります。
クライアント アプリケーションとサーバーの機能に応じて、アクティビティ カウントには2つの異なる制限があります。- 4バイト制限(2^32-1行)
- 8バイト制限(2^64-1行)
関連情報
- アクティビティ カウントについては、SQLコミュニケーション領域(SQLCA)を参照してください
- 埋め込みSQLアプリケーションの場合の条件処理については、WHENEVERを参照してください。
- ストアド プロシージャ アプリケーションの場合の条件処理については、完了条件、例外条件、およびユーザー定義条件のハンドラーを参照してください。