SQLServer ストアドプロシージャ入門 プロシージャの作成と呼び出し

今回は初心者の方向けに、SQLServerで利用することができるストアドプロシージャの作成方法と呼び出し方法を紹介していきます。
SQLを書くことができるけど、ストアドプロシージャを利用したことがない人向けに記載していこうと思います。

それでは早速ストアドプロシージャを使っていきましょう。

ストアドプロシージャの作成方法

まず最もシンプルで簡単なストアドプロシージャを作成してみましょう。
ストアドプロシージャを作成するには、下記のように記載することで作成することができます。

CREATE PROCEDURE プロシージャ名
AS
BEGIN
  SQL文
END;

 

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

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

 

UserMstのデータを取得するストアドプロシージャを作成していきます。

CREATE PROCEDURE GetUserMstData
AS
BEGIN
    SELECT
      *
    FROM
      UserMst
END;

 

こちらのCREATE文を実行し、ストアドプロシージャの作成を完了しました。
プロシージャ名を「GetUserMstsData」としたので「オブジェクトエクスプローラー」から探してみましょう。
普段は「テーブル」をよく使用すると思いますが、ストアドプロシージャは「プログラミング⇒ストアドプロシージャ」に存在します。

上記のように、GetUserMstDataがありましたね。これでストアドプロシージャの作成は完了です。

ストアドプロシージャの実行方法 呼び出し方

先ほど、ストアドプロシージャを作成することができましたが、
実際にストアドプロシージャを呼び出して使用してみましょう。

呼び出し元を自分で書くこともできますが、今回は自動生成機能を利用してみましょう。
「オブジェクトエクスプローラー」から先ほど作成した「GetUserMstData」を右クリックで「ストアドプロシージャの実行」を選んでください。

すると下記のような画面が表示されます。パラメータがある場合はここで入力するのですが、


今回はパラメータが存在しないのでそのまま「OK」を入力します。
SQLが作成され、実行結果が表示されたと思います。

USE [TEST]
GO

DECLARE    @return_value int

EXEC    @return_value = [dbo].[GetUserMstData]

SELECT    'Return Value' = @return_value

GO

解説
1行目;DB名
4行目:変数の宣言 int型変数の「@return_value」を宣言
6行目:ストアドプロシージャの実行
8行目:ストアドプロシージャのリターン値を取得 今回はリターン値を設定していないので、0が取得されます。

結果

結果1
id   |name|animal|height|weight
-----+----+------+------+------
00001|伊藤|いぬ  |150   |55.5
00002|青木|ねこ  |160   |66.6

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

 

上記のように、ストアドプロシージャを利用して、UserMstのデータを取得することができましたね。
今回は、リターン値を設定しませんでしたが、設定したい場合はとても簡単です。

リターン値を変更する場合は、下記のように、「RETURN」を利用してリターンする値を指定してあげましょう。

CREATE PROCEDURE GetUserMstData
AS
BEGIN
    SELECT
      *
    FROM
      UserMst
      
    RETURN 1;
END;

 

上記のようにRETURNを設定することができるので覚えておきましょう。

ストアドプロシージャの変更

最後に作成したストアドプロシージャの変更方法を紹介します。
1度作成したストアドプロシージャを変更するには、「CREATE PROCEDURE」では、できません。
既に存在しますといった、エラーメッセージが表示されてしまいます。

「CREATE PROCEDURE」ではなく「ALTER PROCEDURE」を利用しましょう。
実際の例を記載してみましょう。

ALTER PROCEDURE GetUserMstData
AS
BEGIN
    SELECT
      *
    FROM
      UserMst;

    RETURN 1;
END;

 

すると既に存在する、ストアドプロシージャを変更することができました。
また、「オブジェクトエクスプローラー」からも簡単に作成することができます。
「オブジェクトエクスプローラー」から先ほど作成した「GetUserMstData」を右クリックで「変更」を選んでください。

すると、現在登録されているSQLが表示されたと思います。そのSQLに対して、変更したい個所を変更し、実行しましょう。
このように、既に登録されているストアドプロシージャに対して変更を加えたい場合は、「ALTER PROCEDURE」を利用しましょう。

まとめ

ストアドプロシージャを作成するには、「CREATE PROCEDURE」を利用する。

CREATE PROCEDURE プロシージャ名
AS
BEGIN
    SQL文
END;

 

作成したストアドプロシージャを実行するには、「EXEC」を使用することで呼び出すことができる。
「オブジェクトエクスプローラー」から先ほど作成したストアドプロシージャを右クリックで「ストアドプロシージャの実行」を選んでください。

 

作成したストアドプロシージャを変更したい場合、「ALTER PROCEDURE」を利用しましょう。
「オブジェクトエクスプローラー」から先ほど作成したストアドプロシージャを右クリックで「変更」を選んでください。

 

SQLServerの記事一覧

 

おすすめの記事