SQLServer ストアドプロシージャ入門 パラメータ設定 OUTPUT

今回は、SQLServerで利用することができるストアドプロシージャのパラメータを指定する方法を紹介していきます。
ストアドプロシージャの作成方法や実行方法がわからない方は、こちらの記事を参考にしてみてください。

それでは早速ストアドプロシージャのパラメータを指定する方法を紹介していきます。

パラメータの設定方法 入力パラメータ

パラメータを指定する方法を紹介していきます。
パラメータを指定するには、プロシージャ名の後ろに型とパラメータ名を指定する必要があります。

CREATE/ALTER PROCEDURE プロシージャ名
    @パラメータ名 型
   ,@パラメータ名 型
        ・
        ・
        ・
AS
BEGIN
  SQL文
END;

 

実際の例を見てみましょう。
下記のようなテーブル(UserMst)が存在するとしましょう。

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

 

UserMstから(id=00001)のデータを取得するストアドプロシージャを作成していきます。

CREATE PROCEDURE GetUserMstData
    @in_userid VARCHAR(5)
AS
BEGIN
    SELECT
      *
    FROM
      UserMst
    WHERE
      UserMst.id = @in_userid;

    RETURN 0;
END;

 

上記のように、「@in_userid」という型が「VARCHAR(5)」のパラメータを設定しました。
このパラメータには、UserMstから取得したいidを任意で指定することができます。

それでは実行してみましょう。
下記の画像のように、@in_useridに[00001]を代入して実行してみます。

呼び出し側のSQLが自動生成されましたので、確認してみましょう。
7行目でパラメータの指定を行っています。

USE [TEST]
GO

DECLARE    @return_value int

EXEC    @return_value = [dbo].[GetUserMstData]
        @in_userid = N'00001'

SELECT    'Return Value' = @return_value

GO

 

実行結果を見てみましょう。

結果1
id   |name|animal|height|weight
-----+----+------+------+------
00001|伊藤|いぬ  |150   |55.5

結果2
Return Value
------------
0

 

指定した、(id=00001)のデータが取得できていますね。

 

パラメータの設定方法 出力パラメータ OUTPUT

続いて、パラメータを利用して、ストアドプロシージャの結果を返す方法を紹介いたします。
それでは、(id=00002)のデータの項目nameを取得してみましょう。

呼び出し元にパラメータの値を返すには、OUTPUTを利用する必要があります。
下記のように、パラメータの型を宣言した後に、「OUTPUT」を付けましょう。

CREATE/ALTER PROCEDURE プロシージャ名
    @パラメータ名 型
   ,@パラメータ名 型 OUTPUT
AS
BEGIN
  SQL文
END;

実際の例を見ていきます。

ALTER PROCEDURE GetUserMstData
    @in_userid VARCHAR(5)
   ,@out_username NVARCHAR(30) OUTPUT
AS
BEGIN

    SELECT
      @out_username = [name]
    FROM
      UserMst
    WHERE
      UserMst.id = @in_userid;

    RETURN 0;
END;

解説
3行目:2つ目のパラメータにnameの項目を格納するパラメータを設定しました。OUTPUTを設定しましょう。
9行目:@out_usernameにSQLの結果を代入しています。

続いて、作成したプロシージャを呼び出す、呼び出し元を作成してみましょう。

USE [TEST]
GO

DECLARE    @return_value int,
        @out_username_moto nvarchar(30)

EXEC    @return_value = [dbo].[GetUserMstData]
        @in_userid = N'00002',
        @out_username = @out_username_moto OUTPUT

SELECT    @out_username_moto as '結果'

SELECT    'Return Value' = @return_value

GO

解説
4-5行目:変数宣言を行う。5行目にストアドで実行したnameの結果を格納する@out_username_motoを宣言している。
7-9行目:GetUserMstDataを実行 8行目9行目それぞれパラメータを設定
11行目:ストアドプロシージャの結果を確認 @out_username_moto の値を確認
13行目:返却値の値を確認

結果

結果1
結果
-------------
青木

結果2
Return Value
------------
0

 

結果1を見ると、青木が取得できていますね。このようにパラメータを利用して、呼び出し元に値を返すことができます。

まとめ

引数には入力パラメータと出力パラメータが大きく分けて存在します。
下記のようにプロシージャ名の後にパラメータを設定することができます。
出力パラメータの場合は、OUTPUTを付けてあげましょう。

CREATE/ALTER PROCEDURE プロシージャ名
    @パラメータ名 型
   ,@パラメータ名 型 OUTPUT
AS
BEGIN
  SQL文
END;

 

 

SQLServerの記事一覧

おすすめの記事