SQLServer ストアドプロシージャ入門 変数宣言

ここでは、ストアドプロシージャの基本的な内容である、
変数の宣言方法と変数に値を設定する方法を紹介していきます。

とても基本的な内容なのでストアドプロシージャを利用するためには必ず抑えておきましょう。

ストアドプロシージャを作成方法や実行方法を知りたい方はこちらを参考にしてみてください。

 

変数宣言

変数の宣言方法を紹介していきます。
変数を宣言する時は、DECLEARを使用しましょう。

DECLARE @変数名 型

変数名の前に[@]がいるので気を付けましょう。
実際に宣言をしていきます。

DECLARE @no int;
DECLARE @value varchar(5); 

このような感じで宣言することができます。

変数に値を設定

続いて、変数に値をセットする方法を紹介します。
変数に値をセットする時は、[SET]を利用します。

SET @変数名 = 値;

実際に値を設定してみましょう。

SET @no = 10;
SET @value = 'ABCDE';

また、宣言と同時に値を設定することも可能です。

DECLARE @no int = 10;
DECLARE @value varchar(5) = 'ABCDE';

 

SELECT文で取得した値を変数に設定

SELECT文で取得した値を変数に設定する方法を紹介していきます。
SQL文で取得した値を変数に直接代入することができるので紹介していきます。

 

まずはSELECT分に直接記載する方法があります。
SELECT分の項目部分で変数を代入しましょう。
下記サンプルになります。

SELECT
  @value = [name]
FROM
  UserMst
WHERE
  UserMst.id = '00001';

 

また、SELECT分の結果を変数に代入するといった書き方も可能です。
下記サンプルになります。

SET @value = (SELECT
                [name]
              FROM
                UserMst
              WHERE
                UserMst.id = '00001');

このようにSQLの値を変数に格納する方法があるので押さえておきましょう。

書き方は違いますが、同じ値が格納されます。

 

サンプルソース

データ

テーブル:UserMst
id   |name|animal|height|weight
-----+----+------+------+------
00001|伊藤|いぬ  |150   |55.5
00002|青木|ねこ  |160   |66.6

 

サンプルソース 
id=00001のデータのnameの値を取得するサンプルです。
変数(@name)には、伊藤が格納されます。

CREATE PROCEDURE [dbo].[DECLARE_TEST]
AS
BEGIN

    --変数宣言 代入
    DECLARE @no INT = 10;
    DECLARE @value VARCHAR(5) = 'ABCDE';
    DECLARE @name NVARCHAR(5) = '名前';

    --値確認
    PRINT @no;
    PRINT @value;
    PRINT @name;

    -- SQLの結果を変数に格納
    SELECT
      @name = [name]
    FROM
      UserMst
    WHERE
      UserMst.id = '00001';

    --値確認
    PRINT @no;
    PRINT @value;
    PRINT @name;

END;

 

PRINT で値の確認をすることができます。
[メッセージ]欄に値が表示されているので、各変数の値を確認してみましょう。

 

まとめ

今回はSQLServerのストアドプロシージャにおける変数の使い方を紹介しました。

DECLARE @変数名 型

 

ただSQLを実行するだけではなく、変数を宣言して格納することができるのが、ストアドプロシージャの大きな特徴ですので是非押さえておきましょう。

 

SQLServerの記事一覧

おすすめの記事