hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Cấu trúc dữ liệu và giải thuật
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Lập trình C#
      • Lập Trình C# Cơ Bản
      • ASP.NET Core MVC
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • MySQL
Stored Procedure Trong MySQL — thủ tục lưu trữ

Stored Procedure Trong MySQL — thủ tục lưu trữ

  • 08-07-2025
  • Toanngo92
  • 0 Comments

Stored Procedure trong MySQL – một tính năng rất mạnh mẽ để đóng gói logic xử lý, tương tự như hàm (function) trong các ngôn ngữ lập trình. Đây là phần quan trọng nếu bạn muốn tách biệt xử lý logic phía CSDL, giảm tải cho ứng dụng phía trên.

Mục lục

  • ✅ 1. Stored Procedure là gì?
  • ✅ 2. Cú pháp tạo Stored Procedure
  • ✅ 3. Ví dụ đơn giản
    • 🧪 Bảng mẫu:
    • 📌 Tạo procedure thêm sinh viên:
    • 🔁 Gọi procedure:
  • ✅ 4. Procedure có OUT và INOUT
  • ✅ 5. Các câu lệnh bên trong Procedure
  • ✅ 6. Ví dụ có IF logic
  • ✅ 7. Quản lý thủ tục
    • Xem danh sách procedure:
    • Xem chi tiết thủ tục:
    • Xóa thủ tục:
  • ✅ 8. Ưu và nhược điểm
  • 📘 Kết Luận

✅ 1. Stored Procedure là gì?

  • Stored Procedure (thủ tục lưu trữ) là một tập hợp các câu lệnh SQL được lưu sẵn trong cơ sở dữ liệu và có thể được gọi lại nhiều lần.
  • Nó giống như một hàm có thể nhận tham số và thực thi một khối SQL.
  • Được sử dụng để:
    • Tự động hóa các tác vụ lặp lại
    • Tách logic nghiệp vụ khỏi ứng dụng
    • Nâng cao bảo mật và hiệu suất

✅ 2. Cú pháp tạo Stored Procedure

DELIMITER $$

CREATE PROCEDURE ten_thu_tuc ([IN|OUT|INOUT] tham_so KIEU)
BEGIN
    -- câu lệnh SQL
END$$

DELIMITER ;

DELIMITER $$ dùng để tránh nhầm lẫn giữa dấu ; trong câu lệnh và kết thúc thủ tục.


✅ 3. Ví dụ đơn giản

🧪 Bảng mẫu:

CREATE TABLE Students (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);

📌 Tạo procedure thêm sinh viên:

DELIMITER $$

CREATE PROCEDURE AddStudent(IN p_name VARCHAR(50), IN p_age INT)
BEGIN
    INSERT INTO Students(name, age)
    VALUES (p_name, p_age);
END$$

DELIMITER ;

🔁 Gọi procedure:

CALL AddStudent('Toan', 20);

✅ 4. Procedure có OUT và INOUT

DELIMITER $$

CREATE PROCEDURE GetStudentCount(OUT total INT)
BEGIN
    SELECT COUNT(*) INTO total FROM Students;
END$$

DELIMITER ;

Gọi và nhận kết quả:

CALL GetStudentCount(@count);
SELECT @count;

✅ 5. Các câu lệnh bên trong Procedure

Bạn có thể dùng:

LệnhMô tả
DECLAREKhai báo biến
SETGán giá trị cho biến
IF...THENCấu trúc điều kiện
LOOP, WHILE, REPEATLặp
CURSORTruy vấn nhiều dòng (ít dùng hơn)

✅ 6. Ví dụ có IF logic

DELIMITER $$

CREATE PROCEDURE CheckAge(IN p_age INT)
BEGIN
    IF p_age >= 18 THEN
        SELECT 'Đã đủ tuổi trưởng thành' AS KetQua;
    ELSE
        SELECT 'Chưa đủ tuổi' AS KetQua;
    END IF;
END$$

DELIMITER ;
CALL CheckAge(20);

✅ 7. Quản lý thủ tục

Xem danh sách procedure:

SHOW PROCEDURE STATUS WHERE Db = 'ten_database';

Xem chi tiết thủ tục:

SHOW CREATE PROCEDURE AddStudent;

Xóa thủ tục:

DROP PROCEDURE IF EXISTS AddStudent;

✅ 8. Ưu và nhược điểm

Ưu điểmNhược điểm
✅ Giúp tái sử dụng truy vấn❌ Cần hiểu cú pháp riêng
✅ Bảo mật – không cần lộ SQL❌ Debug, log khó hơn phía ứng dụng
✅ Chạy nhanh hơn truy vấn động❌ Không phù hợp logic phức tạp UI

📘 Kết Luận

  • Stored Procedure rất hữu ích khi bạn cần tự động hóa xử lý, giảm logic ở ứng dụng và tăng bảo mật.
  • Nó giúp bạn đóng gói truy vấn, xử lý logic trực tiếp trong CSDL mà vẫn có thể dễ dàng gọi lại bất cứ lúc nào.
  • Nên dùng cho: tạo báo cáo, thêm dữ liệu có điều kiện, cập nhật nhiều bảng…

Bài viết liên quan:

TCL Trong MySQL – Quản Lý Giao Dịch Với COMMIT, ROLLBACK, SAVEPOINT
FUNCTION Trong MySQL – Định Nghĩa Hàm Tùy Chỉnh Trả Về Giá Trị
TRIGGER Trong MySQL – Kích Hoạt Tự Động Khi Dữ Liệu Thay Đổi
Giao Dịch (Transaction) Trong MySQL — START TRANSACTION, COMMIT, ROLLBACK
Tăng Tốc Truy Vấn Dữ Liệu Với INDEX Trong MySQL
VIEW Trong MySQL — Bảng Ảo Từ Truy Vấn
Điều Kiện Trong Truy Vấn Với CASE WHEN và Wildcard, REGEXP trong MySQL
Truy Vấn Con (SUBQUERY) và Biểu Thức Bảng Chung (CTE) Trong MySQL
Kết Hợp Dữ Liệu Từ Nhiều Bảng Với JOIN Trong MySQL
Hàm Tổng Hợp và Nhóm Dữ Liệu Trong MySQL: GROUP BY, HAVING
Truy Vấn Dữ Liệu Với SELECT Trong MySQL
Các Lệnh DML Cơ Bản Trong MySQL: INSERT, UPDATE, DELETE

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

Truy Vấn Dữ Liệu Với SELECT Trong MySQL

Các Lệnh DML Cơ Bản Trong MySQL: INSERT, UPDATE, DELETE

TCL Trong MySQL – Quản Lý Giao Dịch Với COMMIT, ROLLBACK, SAVEPOINT

DCL Trong MySQL – Quản Lý Quyền Truy Cập Với GRANT và REVOKE

FUNCTION Trong MySQL – Định Nghĩa Hàm Tùy Chỉnh Trả Về Giá Trị

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×