Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » SQL の使用 » SQL 言語の要素 » 変数

 

グローバル変数

グローバル変数は、データベース・サーバで設定された値を持っています。たとえば、グローバル変数 @@version の値は、データベース・サーバの現在のバージョン番号です。

グローバル変数は、名前の先頭に付けられた 2 つのアット・マーク (@) で、ローカル変数や接続レベル変数と区別されます。たとえば、@@error や @@rowcount はグローバル変数です。ユーザはグローバル変数を定義できません。また、グローバル変数の値は直接更新できません。

一部のグローバル変数 (@@identity など) は、接続に固有の情報と値を保持します。その他の変数 (@@connections など) は、すべての接続に共通の値を保持します。

グローバル変数と特殊定数

特殊定数 (CURRENT DATE、CURRENT TIME、USER、SQLSTATE など) は、グローバル変数に類似しています。

次の文は、バージョン・グローバル変数を呼び出します。

SELECT @@version;

プロシージャとトリガでは、グローバル変数は変数リストから選択できます。次のプロシージャでは、ver パラメータ内にあるサーバのバージョン番号を返します。

CREATE PROCEDURE VersionProc ( OUT ver VARCHAR(100) )
 BEGIN
   SELECT @@version
   INTO ver;
 END;

Embedded SQL の場合、グローバル変数はホスト変数リストから選択できます。

グローバル変数のリスト

次の表は、SQL Anywhere で使用できるグローバル変数のリストです。Transact-SQL と互換性を保つために用意されているグローバル変数もあります。このようなグローバル変数は、0、-1、または NULL のうちいずれかの固定値を返します。

変数名 意味
@@char_convert 0 (Transact-SQL との互換性を保つための値)。
@@client_csid -1 (Transact-SQL との互換性を保つための値)。
@@client_csname NULL (Transact-SQL との互換性を保つための値)。
@@connections 最後のサーバ起動後に行われたログインの数。
@@cpu_busy 0 (Transact-SQL との互換性を保つための値)。
@@dbts DEFAULT TIMESTAMP で定義されたすべてのカラムの最後に生成された値を表す TIMESTAMP 値。
@@error

直前に実行された文の成功または失敗をチェックする Transact-SQL エラー・コード。直前のトランザクションが成功していた場合は、0 が返されます。直前のトランザクションが失敗だった場合は、システムによって生成された最後のエラー番号が返されます。@@error が返す値の説明については、Transact-SQL プロシージャでのエラー処理を参照してください。

if @@error != 0 return のような文を指定すると、エラー発生時に処理が終了されます。PRINT 文や IF テストを含めて、すべての SQL 文は @@error をリセットするため、エラーのステータス・チェックは、成否を確認する対象の文の直後に行う必要があります。

@@fetch_status

最後のフェッチ文によって得られたステータス情報を保持します。この機能は @@sqlstatus と同じですが、@@sqlstatus とは異なる値を返します。Microsoft SQL Server との互換性のために用意されています。@@fetch_status には、次のいずれかの値が格納されます。

  • 0:フェッチ文は正常終了した。

  • -1:フェッチ文はエラーになった。

  • -2:結果セットにこれ以上データがない。

@@identity INSERT 文または SELECT INTO 文によって IDENTITY カラムまたは DEFAULT AUTOINCREMENT カラムに挿入された最後の値。@@identity グローバル変数を参照してください。
@@idle 0 (Transact-SQL との互換性を保つための値)。
@@io_busy 0 (Transact-SQL との互換性を保つための値)。
@@isolation 接続の現在の独立性レベル。@@isolation は、アクティブ・レベルの値を取ります。
@@langid 現在の接続で使用中の言語のユニークな言語 ID。
@@language 接続で使用されている言語の名前を返します。
@@max_connections パーソナル・サーバの場合、サーバに対して確立できる同時接続最大数 (10 接続)。ネットワーク・サーバの場合、アクティブ・クライアントの最大数 (各クライアントが複数の接続をサポートできるため、データベース接続とは異なります)。
@@maxcharlen CHAR 文字セットの文字の最大長 (バイト単位)。
@@ncharsize NCHAR 文字セットの文字の最大長 (バイト単位)。
@@nestlevel -1 (Transact-SQL との互換性を保つための値)。
@@pack_received 0 (Transact-SQL との互換性を保つための値)。
@@pack_sent 0 (Transact-SQL との互換性を保つための値)。
@@packet_errors 0 (Transact-SQL との互換性を保つための値)。
@@procid 現在実行されているプロシージャのストアド・プロシージャ ID。
@@rowcount

最後の文の影響を受けるローの数。@@rowcount の値は、文の直後にチェックする必要があります。

INSERT、UPDATE、DELETE の各文は、影響を受けたローの数を @@rowcount に設定します。

カーソルを使用する場合、@@rowcount は、最後のフェッチ要求までに、カーソルの結果セットからクライアントに返されたローの累積数を表します。

IF 文のようにローに影響を及ぼさない文によって、@@rowcount が 0 にリセットされることはありません。

@@servername 現在のデータベース・サーバの名前。
@@spid 現在の接続の接続ハンドル。これは、sa_conn_info プロシージャによって表示されるものと同じ値です。
@@sqlstatus

最後のフェッチ文によって得られたステータス情報を保持します。@@sqlstatus には、次のいずれかの値が格納されます。

  • 0:フェッチ文は正常終了した。

  • 1:フェッチ文はエラーになった。

  • 2:結果セットにこれ以上データがない。

@@textsize SET TEXTSIZE オプションの現在の値。これは、SELECT 文によって返される text または image データのバイト単位の最大長です。デフォルト設定は 32765で、これが READTEXT を使用して返すことができるバイト文字列の最大長です。この値は、SET 文を使用して設定できます。
@@thresh_hysteresis 0 (Transact-SQL との互換性を保つための値)。
@@timeticks 0 (Transact-SQL との互換性を保つための値)。
@@total_errors 0 (Transact-SQL との互換性を保つための値)。
@@total_read 0 (Transact-SQL との互換性を保つための値)。
@@total_write 0 (Transact-SQL との互換性を保つための値)。
@@tranchained 現在のトランザクション・モード。非連鎖の場合は 0、連鎖の場合は 1 です。
@@trancount トランザクションのネスト・レベル。バッチ内の BEGIN TRANSACTION ごとに、トランザクション・カウントが増分されます。
@@transtate -1 (Transact-SQL との互換性を保つための値)。
@@version SQL Anywhere の現在のバージョン番号。

@@identity グローバル変数