グローバル変数は、データベース・サーバで設定された値を持っています。たとえば、グローバル変数 @@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 プロシージャでのエラー処理を参照してください。
|
@@fetch_status |
最後のフェッチ文によって得られたステータス情報を保持します。この機能は @@sqlstatus と同じですが、@@sqlstatus とは異なる値を返します。Microsoft SQL Server との互換性のために用意されています。@@fetch_status には、次のいずれかの値が格納されます。
|
@@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 には、次のいずれかの値が格納されます。
|
@@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 の現在のバージョン番号。 |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |