CONST、SET、DECLARE LOCAL、#variable、PARAMETER:T-SQLにおける定数変数の作り方
T-SQLで変数を定数にする方法
CONST
キーワードを使用して、変数をローカル変数として定義し、その変数に値を代入することができます。この方法で定義された変数は、そのスコープ内でのみ使用でき、一度代入された値を変更することはできません。
DECLARE @myVar CONST INT = 10;
SELECT @myVar; -- 結果: 10
-- 以下のコードはエラーになる
-- @myVar = 20;
SET @variable = value を使用する
SET
ステートメントを使用して、変数に値を代入することができます。SET
ステートメントで代入された変数は、ローカル変数として扱われます。
SET @myVar = 10;
SELECT @myVar; -- 結果: 10
-- 以下のコードはエラーにならない
@myVar = 20;
SELECT @myVar; -- 結果: 20
DECLARE @variable LOCAL を使用する
DECLARE
ステートメントで LOCAL
キーワードを指定して変数を定義すると、その変数はローカル変数として扱われます。ローカル変数は、そのスコープ内でのみ使用でき、一度代入された値を変更することはできません。
DECLARE @myVar LOCAL INT = 10;
SELECT @myVar; -- 結果: 10
-- 以下のコードはエラーになる
-- @myVar = 20;
#variable を使用する
#myVar = 10;
SELECT #myVar; -- 結果: 10
-- 以下のコードはエラーになる
-- #myVar = 20;
PARAMETER キーワードを使用する
ストアドプロシージャでパラメータとして変数を定義する場合は、PARAMETER
キーワードを使用します。PARAMETER
キーワードで定義された変数は、ストアドプロシージャ内でのみ使用でき、一度代入された値を変更することはできません。
CREATE PROCEDURE MyProcedure
(
@myParam INT
)
AS
BEGIN
SELECT @myParam; -- 結果: 10
-- 以下のコードはエラーになる
-- @myParam = 20;
END
-- 1. CONST キーワードを使用する
DECLARE @myVar CONST INT = 10;
SELECT @myVar; -- 結果: 10
-- 以下のコードはエラーになる
-- @myVar = 20;
-- 2. SET @variable = value を使用する
SET @myVar = 10;
SELECT @myVar; -- 結果: 10
-- 以下のコードはエラーにならない
@myVar = 20;
SELECT @myVar; -- 結果: 20
-- 3. DECLARE @variable LOCAL を使用する
DECLARE @myVar LOCAL INT = 10;
SELECT @myVar; -- 結果: 10
-- 以下のコードはエラーになる
-- @myVar = 20;
-- 4. #variable を使用する
#myVar = 10;
SELECT #myVar; -- 結果: 10
-- 以下のコードはエラーになる
-- #myVar = 20;
-- 5. PARAMETER キーワードを使用する
CREATE PROCEDURE MyProcedure
(
@myParam INT
)
AS
BEGIN
SELECT @myParam; -- 結果: 10
-- 以下のコードはエラーになる
-- @myParam = 20;
END
このコードを実行すると、以下の結果が出力されます。
10
20
10
10
T-SQLで変数を定数のように扱う方法はいくつかあります。これらの方法のどれを使用するかは、コードのスタイルや可読性などを考慮して選択してください。
T-SQLで変数を定数のように扱うその他の方法
WITH
ステートメントを使用して、CTE (Common Table Expressions) を定義することができます。CTE で定義された変数は、そのスコープ内でのみ使用でき、一度代入された値を変更することはできません。
WITH myCTE AS (
SELECT 10 AS myVar
)
SELECT myVar
FROM myCTE; -- 結果: 10
DECLARE @myTable TABLE (myVar INT);
INSERT INTO @myTable (myVar) VALUES (10);
SELECT myVar
FROM @myTable; -- 結果: 10
スカラー値関数を使用して、定数値を返す関数を作成することができます。
CREATE FUNCTION MyFunction()
RETURNS INT
AS
BEGIN
RETURN 10;
END
SELECT MyFunction(); -- 結果: 10
これらの方法は、特殊な状況で使用する場合があります。
sql-server t-sql