Hướng dẫn chi tiết cách tạo Stored Procedure (SP) trong SQL cho người mới bắt đầu

Bạn đã từng nghe về Stored Procedure trong SQL nhưng chưa biết cách tạo? Bài viết này sẽ cung cấp hướng dẫn chi tiết từng bước về cách tạo Stored Procedure trong SQL, giúp bạn nắm vững kiến thức và áp dụng hiệu quả.

1. Stored Procedure (SP) là gì?

Stored Procedure (SP) trong SQL là một tập hợp các câu lệnh SQL và logic được biên dịch sẵn và lưu trữ trong cơ sở dữ liệu. SP cho phép bạn tạo các truy vấn SQL có thể được lưu trữ và tái sử dụng nhiều lần. Mục đích chính của SP là ẩn các truy vấn SQL trực tiếp từ code ứng dụng, tăng cường bảo mật và cải thiện hiệu suất cơ sở dữ liệu khi thực hiện các thao tác như SELECT, UPDATE, DELETE.

Bạn có thể tạo và chạy Stored Procedure bằng SQL Server Management Studio (SSMS) hoặc các công cụ quản lý cơ sở dữ liệu khác.

2. Tại sao nên sử dụng SET NOCOUNT ON trong Stored Procedure?

SET NOCOUNT ON là một lệnh trong SQL được sử dụng để ngăn việc trả về số lượng hàng bị ảnh hưởng bởi các câu lệnh trong SP. Khi SET NOCOUNT ON, SQL Server sẽ không gửi thông báo về số lượng hàng bị ảnh hưởng sau mỗi câu lệnh, giúp giảm lưu lượng mạng và cải thiện hiệu suất, đặc biệt trong các SP phức tạp. Ngược lại, SET NOCOUNT OFF sẽ hiển thị số lượng hàng bị ảnh hưởng sau mỗi câu lệnh.

3. Các loại Stored Procedure trong SQL Server

Có hai loại Stored Procedure chính trong SQL Server:

  • User-defined Stored Procedure (SP do người dùng định nghĩa): Được tạo bởi các nhà phát triển hoặc quản trị cơ sở dữ liệu.
  • System Stored Procedure (SP hệ thống): Được tạo và quản lý bởi chính SQL Server.

3.1. User-defined Stored Procedure

User-defined Stored Procedure chứa một hoặc nhiều câu lệnh SQL để truy vấn, cập nhật hoặc xóa dữ liệu. Chúng có thể bao gồm cả lệnh DDL (Data Definition Language) và DML (Data Manipulation Language).

User-defined SP được chia thành hai loại nhỏ hơn:

  • T-SQL Stored Procedure: Được viết bằng Transact-SQL (T-SQL), ngôn ngữ mở rộng của SQL được sử dụng trong SQL Server. Chúng có thể nhận và trả về các tham số. Đây là loại SP phổ biến nhất.
  • CLR Stored Procedure: Được viết bằng các ngôn ngữ .NET như C# hoặc VB.NET và được thực thi bởi .NET Framework.

3.2. System Stored Procedure

System Stored Procedure được tạo sẵn bởi SQL Server để thực hiện các tác vụ quản trị máy chủ. Người dùng thường không thể sửa đổi các SP này. Chúng thường bắt đầu bằng tiền tố sp_.

4. Thực hành tạo Stored Procedure trong SQL Server

Để minh họa cách tạo SP, chúng ta sẽ thực hiện các bước sau:

  1. Tạo một SP để truy vấn dữ liệu (SELECT).
  2. Tạo một SP với tham số đầu vào.
  3. Tạo một SP để chèn dữ liệu (INSERT).
  4. Tạo một SP để cập nhật dữ liệu (UPDATE).
  5. Tạo một SP để xóa dữ liệu (DELETE).

4.1. Đăng nhập vào SQL Server và chọn Database

Đăng nhập vào SQL Server Management Studio (SSMS) bằng thông tin đăng nhập của bạn. Chọn database mà bạn muốn thao tác.

Trong Object Explorer, mở rộng database của bạn, sau đó mở rộng Programmability và chọn Stored Procedures. Đây là nơi bạn sẽ tạo và quản lý các SP của mình.

4.2. Tạo Stored Procedure SELECT

Trước tiên, chúng ta cần một bảng để thực hiện truy vấn. Giả sử chúng ta có bảng tblMembers với các cột sau: ID, MemberName, City, PhoneNumber. Nếu chưa có, hãy tạo bảng này bằng lệnh SQL:

CREATE TABLE tblMembers (
    ID INT IDENTITY(1,1) PRIMARY KEY,
    MemberName VARCHAR(100),
    City VARCHAR(50),
    PhoneNumber VARCHAR(20)
);

INSERT INTO tblMembers (MemberName, City, PhoneNumber) VALUES
('John Doe', 'New York', '123-456-7890'),
('Jane Smith', 'Los Angeles', '987-654-3210');

Để tạo một SP SELECT, nhấp chuột phải vào Stored Procedures và chọn New Stored Procedure.

Một khung code mẫu sẽ hiện ra. Bạn sẽ viết truy vấn SELECT của mình giữa BEGINEND. Ví dụ:

CREATE PROCEDURE stpGetAllMembers
AS
BEGIN
    SELECT ID, MemberName, City, PhoneNumber
    FROM tblMembers;
END
GO

SP này có tên là stpGetAllMembers và sẽ trả về tất cả các hàng từ bảng tblMembers.

4.3. Thực thi Stored Procedure SELECT

Để thực thi SP, bạn có thể nhấp chuột phải vào tên SP trong Object Explorer và chọn Execute Stored Procedure. Hoặc, bạn có thể mở một cửa sổ Query mới và nhập lệnh sau:

EXEC stpGetAllMembers;

Kết quả sẽ hiển thị tất cả các bản ghi từ bảng tblMembers.

4.4. Tạo Stored Procedure SELECT với tham số

Để tạo một SP SELECT có tham số, bạn cần định nghĩa các tham số trong phần khai báo SP. Ví dụ, chúng ta sẽ tạo một SP để lấy thông tin thành viên theo tên thành phố:

CREATE PROCEDURE stpGetMemberByCityName (
    @CityName VARCHAR(50)
)
AS
BEGIN
    SELECT ID, MemberName, City, PhoneNumber
    FROM tblMembers
    WHERE City = @CityName;
END
GO

Trong SP này, @CityName là tham số đầu vào. Để thực thi SP, bạn cần cung cấp giá trị cho tham số này:

EXEC stpGetMemberByCityName @CityName = 'New York';

4.5. Tạo Stored Procedure INSERT

Để tạo một SP INSERT, bạn sử dụng câu lệnh INSERT INTO. Ví dụ:

CREATE PROCEDURE stpInsertMember (
    @MemberName VARCHAR(100),
    @City VARCHAR(50),
    @PhoneNumber VARCHAR(20)
)
AS
BEGIN
    INSERT INTO tblMembers (MemberName, City, PhoneNumber)
    VALUES (@MemberName, @City, @PhoneNumber);
END
GO

Thực thi SP INSERT:

EXEC stpInsertMember @MemberName = 'Mahesh Chand', @City = 'Mumbai', @PhoneNumber = '123-456-7891';

4.6. Tạo Stored Procedure UPDATE

Để tạo một SP UPDATE, bạn sử dụng câu lệnh UPDATE ... SET ... WHERE. Ví dụ:

CREATE PROCEDURE stpUpdateMemberByID (
    @ID INT,
    @MemberName VARCHAR(100),
    @City VARCHAR(50),
    @PhoneNumber VARCHAR(20)
)
AS
BEGIN
    UPDATE tblMembers
    SET MemberName = @MemberName,
        City = @City,
        PhoneNumber = @PhoneNumber
    WHERE ID = @ID;
END
GO

Thực thi SP UPDATE:

EXEC stpUpdateMemberByID @ID = 1, @MemberName = 'Updated Name', @City = 'Updated City', @PhoneNumber = 'Updated Phone';

4.7. Tạo Stored Procedure DELETE

Để tạo một SP DELETE, bạn sử dụng câu lệnh DELETE. Ví dụ:

CREATE PROCEDURE stpDeleteMemberByID (
    @ID INT
)
AS
BEGIN
    DELETE FROM tblMembers
    WHERE ID = @ID;
END
GO

Thực thi SP DELETE:

EXEC stpDeleteMemberByID @ID = 1;

5. Các lưu ý khác khi làm việc với Stored Procedure

5.1. Viết bình luận trong SQL Server

Bạn có thể viết bình luận trong SQL Server theo hai cách:

  • Sử dụng // để viết bình luận trên một dòng.
  • Sử dụng /* ... */ để viết bình luận trên nhiều dòng.

5.2. Quy ước đặt tên cho Stored Procedure

Để dễ quản lý và bảo trì, nên tuân theo một quy ước đặt tên nhất quán cho các SP. Một số quy ước phổ biến bao gồm sử dụng tiền tố như sp_ (cho system SP, dù bạn không nên tạo system SP của riêng mình), stp_ hoặc usp_ (cho user-defined SP).

Ví dụ: stpGetAllMembers, stpInsertMember.

6. Kết luận

Stored Procedure là một công cụ mạnh mẽ trong SQL Server, giúp tăng cường bảo mật, cải thiện hiệu suất và đơn giản hóa việc quản lý cơ sở dữ liệu. Bằng cách nắm vững các bước tạo và sử dụng SP, bạn có thể xây dựng các ứng dụng cơ sở dữ liệu hiệu quả và dễ bảo trì hơn. Hãy thực hành thường xuyên để làm quen với các loại SP khác nhau và áp dụng chúng vào các dự án thực tế của bạn.