Trong cơ sở dữ liệu, việc quản lý dữ liệu và truy xuất thông tin là một trong những nhiệm vụ quan trọng. SQL (Structured Query Language) là một ngôn ngữ phổ biến để làm việc với cơ sở dữ liệu. Và trong SQL, PROCEDURE là một khái niệm quan trọng cho phép bạn tạo ra các khối mã SQL. Nó đề cập đến một đối tượng chứa một tập hợp các câu lệnh SQL được lưu trữ trong cơ sở dữ liệu và có thể được gọi hay thực thi nhiều lần.

1. PROCEDURE trong SQL là gì?

PROCEDURE trong SQL là một đối tượng có thể chứa một tập hợp các câu lệnh SQL được lưu trữ trong cơ sở dữ liệu. Nó hoạt động tương tự như một hàm hoặc phương thức trong các ngôn ngữ lập trình thông thường, nhưng chủ yếu dùng để thực thi các câu lệnh SQL. Mục đích chính của PROCEDURE là giảm thiểu sự lặp lại mã, tăng tính tái sử dụng và dễ dàng bảo trì mã SQL trong hệ thống cơ sở dữ liệu.

>>> Xem thêm bài viết về SQL:

- Tìm hiểu về ràng buộc (Constraint) trong SQL

- Các kiểu dữ liệu trong MySQL

2. Mục đích của PROCEDURE trong SQL

Dưới đây là một số mục đích khi sử dụng PROCEDURE: 

Tái sử dụng: PROCEDURE cho phép bạn đóng gói các câu lệnh SQL liên quan vào một đơn vị độc lập có thể được gọi nhiều lần từ nhiều chương trình hoặc truy vấn khác nhau. Điều này giúp giảm thiểu sự lặp lại mã và giữ cho mã SQL dễ dàng bảo trì.

Tính chất tập trung: Bằng cách sử dụng PROCEDURE, bạn có thể tập trung các câu lệnh SQL cụ thể vào một nơi duy nhất trong cơ sở dữ liệu, giúp quản lý và hiểu mã dễ dàng hơn.

Hiệu suất cơ sở dữ liệu: PROCEDURE có thể cải thiện hiệu suất của cơ sở dữ liệu bằng cách giảm số lần phải gửi các câu lệnh SQL lên máy chủ cơ sở dữ liệu. Thay vào đó, chỉ cần gọi PROCEDURE một lần và thực hiện nhiều tác vụ trên máy chủ.

3. Cú pháp tạo PROCEDURE

Để tạo một PROCEDURE trong SQL, ta dùng cú pháp như sau:

CREATE { PROCEDURE | PROC } [schema_name.]PROCEDURE_name
[ @parameter [type_schema_name.] datatype
[ VARYING ] [ = default ] [ OUT | OUTPUT | READONLY ]
, @parameter [type_schema_name.] datatype 
[ VARYING ] [ = default ] [ OUT | OUTPUT | READONLY ] ] 

[ WITH { ENCRYPTION | RECOMPILE | EXECUTE AS Clause } ] 
[ FOR REPLICATION ] 

AS 

BEGIN 
[declaration_section] 

executable_section 

END;

Trong đó: 

schema_name: Tên schema (lược đồ) sở hữu PROCEDURE.

PROCEDURE_name: Tên gán cho PROCEDURE.

@parameter: Một hay nhiều tham số được truyền vào hàm.

type_schema_name: Kiểu dữ liệu của schema (nếu có). 

datatype: Kiểu dữ liệu cho @parameter.

Default: Giá trị mặc định gán cho @parameter.

OUT/OUTPUT: @parameter là một tham số đầu ra

READONLY: @parameter không thể bị PROCEDURE ghi đè lên.

ENCRYPTION: Mã nguồn (source) của PROCEDURE sẽ không được lưu trữ dưới dạng text trong hệ thống.

RECOMPILE: Truy vấn sẽ không được lưu ở bộ nhớ đệm (cache) cho thủ tục này.

EXECUTE AS clause: Xác định ngữ cảnh bảo mật để thực thi thủ tục.

FOR REPLICATION: PROCEDURE đã lưu sẽ chỉ được thực thi trong quá trình replication (nhân bản).

Ví dụ:

CREATE PROCEDURE spCustomer
@customer_name VARCHAR(50) OUT 

AS 

BEGIN 

DECLARE @customer_id INT; 

SET @customer_id = 8; 

IF @customer_id < 10 
  SET @customer_name = 'Smith'; 
  ELSE 
  SET @customer_name = 'Lawrence'; 

END;

Sau đó, chúng ta có thể thực hiện tham chiếu spCustomer như sau:

USE [test] 
GO 

DECLARE @site_name varchar(50); 

EXEC FindSite @site_name OUT; 
PRINT @site_name; 

GO

4. Cú pháp xóa PROCEDURE trong SQL

Để xóa một PROCEDURE, ta sử dụng cú pháp sau:

DROP PROCEDURE PROCEDURE_name;

Trong đó: PROCEDURE_name là tên PROCEDURE bạn muốn xóa bỏ.

Ví dụ:

DROP PROCEDURE spCustomer;

Thực hiện lệnh này là bạn đã vừa xóa bỏ thủ tục spCustomer khỏi database.

Xem thêm bài viết:

- Hướng dẫn cài đặt Web server Apache trên CentOS 7

- Cài đặt cấu hình cân bằng tải với HaProxy và Docker

- Tìm hiểu về ràng buộc (Constraint) trong SQL

Tổng kết

Như vậy chúng ta đã tìm hiểu về PROCEDURE trong SQL. Qua bài viết này, Stringee hi vọng bạn hiểu được công dụng, trạng thái và cách sử dụng của nó và áp dụng vào các ví dụ thực tiễn.


Stringee Communication APIs là giải pháp cung cấp các tính năng giao tiếp như gọi thoại, gọi video, tin nhắn chat, SMS hay tổng đài CSKH cho phép tích hợp trực tiếp vào ứng dụng/website của doanh nghiệp nhanh chóng. Nhờ đó giúp tiết kiệm đến 80% thời gian và chi phí cho doanh nghiệp bởi thông thường nếu tự phát triển các tính năng này có thể mất từ 1 - 3 năm.

Bộ API giao tiếp của Stringee hiện đang được tin dùng bởi các doanh nghiệp ở mọi quy mô, lĩnh vực ngành nghề như TPBank, VOVBacsi24, VNDirect, Shinhan Finance, Ahamove, Logivan, Homedy,  Adavigo, bTaskee…

Quý bạn đọc quan tâm xin mời đăng ký NHẬN TƯ VẤN TẠI ĐÂY: