SQL 変数: SQL Server 変数の宣言、設定、選択

SQL Server の変数とは何ですか?

MS SQL では、変数はメモリ位置へのプレースホルダーとして機能するオブジェクトです。 変数は単一のデータ値を保持します。

SQL の変数の型: ローカル、グローバル

MS SQL には XNUMX 種類の変数があります。

  1. ローカル変数
  2. グローバル変数。

ただし、ユーザーが作成できるのはローカル変数のみです。

以下の図は、で利用可能な XNUMX 種類の変数を説明しています。 MS SQLサーバー.

SQL変数
SQL Server の変数の種類

ローカル変数

  • ユーザーがローカル変数を宣言します。
  • デフォルトでは、ローカル変数は次で始まります。 @.
  • すべてのローカル変数スコープには、次の制限があります。 現在のバッチまたは手順 任意のセッション内で。

グローバル変数

  • システムはグローバル変数を維持します。 ユーザーはそれらを宣言することはできません。
  • グローバル変数は次で始まります @@
  • 保管します セッション関連情報.

SQL で変数を宣言する方法

  • バッチまたはプロシージャで変数を使用する前に、次のことを行う必要があります。 変数を宣言します。
  • DECLARE コマンドは、メモリ位置のプレースホルダーとして機能する変数を DECLARE するために使用されます。
  • 宣言が行われた場合のみ、変数はバッチまたはプロシージャの後続の部分で使用できます。

TSQL 構文:

DECLARE  { @LOCAL_VARIABLE[AS] data_type  [ = value ] }

ルール:

  • 初期化は宣言時のオプションです。
  • デフォルトでは、DECLARE は変数を NULL に初期化します。
  • キーワード「AS」の使用はオプションです。
  • 複数のローカル変数を宣言するには、最初のローカル変数定義の後にカンマを使用し、次のローカル変数名と データ・タイプ.

変数の宣言の例

クエリ: 「AS」を使用した場合

DECLARE @COURSE_ID AS INT;

クエリ: 「AS」なし

DECLARE @COURSE_NAME VARCHAR (10);

クエリ: XNUMX つの変数を DECLARE

DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);

SQL変数への値の代入

次のように変数に値を割り当てることができます方法:

  1. DECLARE キーワードを使用した変数宣言中。
  2. SETの使用
  3. SELECTの使用

XNUMX つの方法すべてを詳しく見てみましょう。

DECLAREキーワードを使用した変数宣言時

T-SQL 構文:

DECLARE { @Local_Variable [AS] Datatype [ = value ] }

ここでは、データ型の後に「=」を使用し、その後に割り当てる値を使用できます。

クエリ:

DECLARE @COURSE_ID AS INT = 5
PRINT @COURSE_ID

SQL変数への値の代入

SQL SET VARIABLE の使用

場合によっては、宣言と初期化を分離しておきたいことがあります。 SET を使用すると、変数の宣言後に変数に値を割り当てることができます。SET を使用して値を割り当てるさまざまな方法を以下に示します。

: SET を使用して変数に値を代入する

構文:

DECLARE @Local_Variable <Data_Type>
SET @Local_Variable =  <Value>

クエリ:

DECLARE @COURSE_ID AS INT
SET @COURSE_ID = 5
PRINT @COURSE_ID

SQL セット変数

: 値を代入します。 複数の変数 SETを使用して。

構文:

DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable_2 <Data_Type>,
SET @Local_Variable_1 = <Value_1>
SET @Local_Variable_2 = <Value_2>

ルール: XNUMX つの SET キーワードは、値を割り当てるためにのみ使用できます。 XNUMXつの変数.

クエリ:

DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5)
SET @COURSE_ID = 5
SET @COURSE_NAME = 'UNIX'
PRINT @COURSE_ID
PRINT @COURSE_NAME

SQL セット変数

: を使用して変数に値を代入します。 スカラーサブクエリ SETを使用する

構文:

DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable_2 <Data_Type>,SET @Local_Variable_1 = (SELECT <Column_1> from <Table_Name> where <Condition_1>)

ルール:

  • クエリを括弧で囲みます。
  • クエリはスカラー クエリである必要があります。スカラー クエリとは、結果が 1 行と 1 列のみであるクエリです。そうでない場合、クエリはエラーをスローします。
  • クエリがゼロ行を返す場合、変数は EMPTY、つまり NULL に設定されます。

仮定: 以下に示すように、99 つの列を持つ「GuruXNUMX」というテーブルがあるとします。

SQL セット変数

今後のチュートリアルでは「Guru99」テーブルを使用します

例1: サブクエリが結果として XNUMX 行を返す場合。

DECLARE @COURSE_NAME VARCHAR (10)
SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3)
PRINT @COURSE_NAME

SQL セット変数

例 2: サブクエリの結果としてゼロ行が返された場合

DECLARE @COURSE_NAME VARCHAR (10)
SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5)
PRINT @COURSE_NAME

この特定のケースでは、変数値は EMPTY、つまり NULL です。

SQL セット変数

SQL SELECT VARIABLE の使用

SET と同様に、DECLARE を使用して変数を宣言した後、SELECT を使用して変数に値を割り当てることもできます。 以下に、SELECT を使用して値を割り当てるさまざまな方法を示します。

: SELECT を使用して変数に値を代入する

構文:

DECLARE @LOCAL_VARIABLE <Data_Type>
SELECT @LOCAL_VARIABLE = <Value>

クエリ:

DECLARE @COURSE_ID INT
SELECT @COURSE_ID = 5
PRINT @COURSE_ID

SQL 選択変数

: SELECT を使用して複数の変数に値を代入する

構文:

DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>,  @Local_Variable _2 = <Value_2>

ルール: SET とは異なり、SELECT を使用して値を割り当てることができます。 複数の変数に で区切られています コンマ.

DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5)
SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX'
PRINT @COURSE_ID
PRINT @COURSE_NAME

SQL 選択変数

: SELECT を使用したサブクエリで変数に値を代入する

構文:

DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = (SELECT <Column_1> from <Table_name> where <Condition_1>)

ルール:

  • クエリを括弧で囲みます。
  • クエリはスカラー クエリである必要があります。スカラー クエリは、結果が 1 行 1 列であるクエリです。そうでない場合、クエリはエラーをスローします。
  • クエリがゼロ行を返す場合、変数は EMPTY、つまり NULL になります。
  • 「Guru99」テーブルを再検討してください

例1: サブクエリが結果として XNUMX 行を返す場合。

DECLARE @COURSE_NAME VARCHAR (10)
SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1)
PRINT @COURSE_NAME

SQL 選択変数

例2: サブクエリの結果としてゼロ行が返された場合

DECLARE @COURSE_NAME VARCHAR (10)
SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5)
PRINT @COURSE_NAME

この特定のケースでは、変数は EMPTY、つまり NULL になります。

SQL 選択変数

例3: 通常の SELECT ステートメントを使用して変数に値を割り当てます。

構文:

DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>

ルール:

  • SET とは異なり、クエリの結果が複数行になる場合、変数値は最後の行の値に設定されます。
  • クエリがゼロ行を返す場合、変数は EMPTY、つまり NULL に設定されます。

クエリ 1: クエリは XNUMX 行を返します。

DECLARE @COURSE_NAME VARCHAR (10)
SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3
PRINT @COURSE_NAME

SQL 選択変数

クエリ 2: クエリは複数の行を返します。

DECLARE @COURSE_NAME VARCHAR (10)
SELECT @COURSE_NAME = Tutorial_name from Guru99
PRINT @COURSE_NAME

この特殊なケースでは、変数の値は次のようになります。 最後の行の値に設定します.

SQL 選択変数

クエリ 3: クエリは行を返しません。

DECLARE @COURSE_NAME VARCHAR (10)
SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5
PRINT @COURSE_NAME

この特定のケースでは、変数は EMPTY、つまり NULL です。

SQL 選択変数

その他の SQL 変数の例

クエリで変数を使用する

クエリ:

DECLARE @COURSE_ID Int = 1
SELECT * from Guru99 where Tutorial_id = @COURSE_ID

その他のSQL変数

SQL Server 変数に関する興味深い事実!

  • ローカル変数はPRINTとSELECT COMMANDを使用して表示できます。
  • テーブル データ型では、宣言中に「AS」を使用できません。
  • SET は ANSI 標準に準拠していますが、SELECT は準拠していません。
  • @ という名前のローカル変数を作成することもできます。 たとえば次のように宣言できます。
    'DECLARE @@ as VARCHAR (10)'
    

まとめ

  • 変数は、プレースホルダーとして機能するオブジェクトです。
  • ローカルとグローバルの XNUMX 種類の変数が存在します。
  • 変数を割り当てるには、次の1つの方法があります。2) DECLAREを使用する 3) SETを使用する XNUMX) SELECTを使用する