変数とシノニムを宣言して割り当てる
T-SQL では、他のプログラミング言語と同様に、変数は後で使用するために値を一時的に格納できるオブジェクトです。 ストアド プロシージャと関数にパラメーター値を渡すために変数を使用したときに、変数が既に見つかりました。
T-SQL では、変数を使用する前に宣言する必要があります。 これらは、宣言時に値を割り当てたり、初期化したりすることができます。 変数の宣言には、次に示すように、名前とデータ型の指定が含まれます。 変数を宣言するには、DECLARE ステートメントを使用する必要があります。
--Declare and initialize the variables.
DECLARE @numrows INT = 3, @catid INT = 2;
--Use variables to pass the parameters to the procedure.
EXEC Production.ProdsByCategory @numrows = @numrows, @catid = @catid;
GO
変数は、参照先と同じバッチで宣言する必要があります。 つまり、すべての T-SQL 変数は、可視性と有効期間の両方で、バッチのスコープ内でローカルになります。 バッチ内で宣言された変数を表示できるのは、同じバッチ内の他のステートメントだけです。 変数は、バッチの終了時に自動的に破棄されます。
変数の使用
変数を宣言したら、変数を初期化するか、値を割り当てる必要があります。 これを行うには、次の 3 つの方法があります。
- SQL Server 2008 以降では、DECLARE ステートメントを使用して変数を初期化できます。
- SQL Server の任意のバージョンでは、SET ステートメントを使用して 1 つの (スカラー) 値を割り当てることができます。
- どのバージョンの SQL Server でも、SELECT ステートメントを使用して変数に値を割り当てることができます。 SELECT ステートメントから返される行が 1 行であることを確認します。 空の結果は、変数に元の値を残します。複数の結果が最後の結果を返します。
次の例は、変数に値を宣言して割り当てる 3 つの方法を示しています。
DECLARE @var1 AS INT = 99;
DECLARE @var2 AS NVARCHAR(255);
SET @var2 = N'string';
DECLARE @var3 AS NVARCHAR(20);
SELECT @var3 = lastname FROM HR.Employees WHERE empid=1;
SELECT @var1 AS var1, @var2 AS var2, @var3 AS var3;
GO
これにより、次の結果が生成されます。
| var1 | var2 | var3 |
|---|---|---|
| 99 | 文字列 | デイビス |
ヒント
ローカル変数の完全なガイダンスについては、 T-SQL リファレンス ドキュメントを参照してください。
シノニムの使用
SQL Server では、シノニムは、同じデータベースまたは SQL Server の別のインスタンスに格納されているオブジェクトへのリンク (別名) を作成するためのメソッドを提供します。 シノニムが定義されている可能性があるオブジェクトには、テーブル、ビュー、ストアド プロシージャ、およびユーザー定義関数が含まれます。
シノニムは、リモート オブジェクトをローカルに表示したり、ローカル オブジェクトの代替名を指定したりするために使用できます。 たとえば、シノニムを使用して、クライアント コードと、コードによって使用される実際のデータベース オブジェクトの間に抽象化レイヤーを提供できます。 コードは、オブジェクトの実際の名前に関係なく、エイリアスによってオブジェクトを参照します。
注
存在しないオブジェクトを指すシノニムを作成できます。 これは、遅延名前解決と呼ばれます。 SQL Server エンジンは、実行時にシノニムが使用されるまで、実際のオブジェクトの存在を確認しません。
シノニムを管理するには、次の例のように、データ定義言語 (DDL) コマンド CREATE SYNONYM、ALTER SYNONYM、DROP SYNONYM を使用します。
CREATE SYNONYM dbo.ProdsByCategory FOR TSQL.Production.ProdsByCategory;
GO
EXEC dbo.ProdsByCategory @numrows = 3, @catid = 2;
シノニムを作成するには、'CREATE SYNONYM' 権限と、シノニムが格納されるスキーマを変更する権限が必要です。
注
シノニムを作成するには、ユーザーが CREATE SYNONYM 権限を持ち、宛先スキーマで ALTER SCHEMA 権限を所有または所有している必要があります。
シノニムは、実行時に参照された際にソースオブジェクトに解決される「空の」オブジェクトです。