0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初心者】SQL Serverとストアドプロシージャについて

Posted at

ユーザーテーブル(id, name, address)に作成するストアドプロシージャの一般的な例をいくつかご紹介します。
ストアドプロシージャは、特定の処理をひとまとまりにしてデータベースに保存しておくものです。
これにより、複数のアプリケーションから同じ処理を安全かつ効率的に実行できるようになります。

ストアドプロシージャの主な種類

テーブルの操作(CRUD: Create, Read, Update, Delete)に対応する形でストアドプロシージャを作成するのが一般的です。

1. データの挿入(C: Create)

新しいユーザーを追加するためのプロシージャです。

Create.sql
CREATE PROCEDURE dbo.InsertUser
    @name NVARCHAR(50),
    @address NVARCHAR(100)
AS
BEGIN
    INSERT INTO UserTable (name, address)
    VALUES (@name, @address);
END;
GO

利用例:

アプリケーションから新しいユーザーの名前と住所を引数として渡し、このプロシージャを呼び出すことで、安全にレコードが挿入されます。

2. データの取得(R: Read)

特定の条件に合うユーザーの情報を取得するためのプロシージャです。

Read.sql
CREATE PROCEDURE dbo.GetUserByName
    @name NVARCHAR(50)
AS
BEGIN
    SELECT id, name, address
    FROM UserTable
    WHERE name = @name;
END;
GO

利用例:

ユーザーが検索フォームに名前を入力した際、その名前を引数としてこのプロシージャを呼び出し、該当するユーザー情報を取得します。

3. データの更新(U: Update)

既存のユーザーの情報を更新するためのプロシージャです。

Update.sql
CREATE PROCEDURE dbo.UpdateUserAddress
    @id INT,
    @newAddress NVARCHAR(100)
AS
BEGIN
    UPDATE UserTable
    SET address = @newAddress
    WHERE id = @id;
END;
GO

利用例:

ユーザーが住所を変更した場合、ユーザーのidと新しい住所を引数として渡し、このプロシージャを呼び出して情報を更新します。

4. データの削除(D: Delete)

特定のユーザーを削除するためのプロシージャです。

Delete.sql
CREATE PROCEDURE dbo.DeleteUser
    @id INT
AS
BEGIN
    DELETE FROM UserTable
    WHERE id = @id;
END;
GO

利用例:

管理者が特定のユーザーアカウントを削除する際に、idを引数としてこのプロシージャを呼び出します。

なぜストアドプロシージャを使うのか?

セキュリティ: SQLインジェクション攻撃を防ぐことができます。引数として渡された値は、SQL文の一部ではなくデータとして扱われるため、不正なコードが実行されるのを防ぎます。

パフォーマンス: 実行プランが一度コンパイルされてキャッシュされるため、再利用する際に高速に実行できます。

保守性: データベース内でロジックを一元管理できるため、アプリケーションコードを変更することなく、ビジネスロジックを修正できます。

このように、ストアドプロシージャは、CRUD操作を抽象化し、安全で効率的なデータベースアクセスを実現するための強力なツールです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?