1. Stored Procedure trong MySQL là gì?
- Stored Procedure (SP) là một tập hợp các câu lệnh SQL được lưu trữ trên máy chủ cơ sở dữ liệu và có thể được gọi để thực hiện một tác vụ cụ thể. Khi sử dụng SP, chúng ta có thể tránh việc gửi nhiều câu lệnh SQL riêng lẻ, tăng hiệu suất và bảo mật.
2. Lợi ích của Stored Procedure trong MySQL là gì?
- Tăng hiệu suất: Giảm tải cho ứng dụng client vì SP được thực thi trực tiếp trên máy chủ.
- Tái sử dụng mã lệnh: Một SP có thể được sử dụng lại trong nhiều ứng dụng mà không cần viết lại mã.
- Bảo mật: SP có thể được cấp quyền truy cập riêng biệt, giúp bảo vệ dữ liệu.
- Quản lý logic nghiệp vụ: Tập trung logic vào cơ sở dữ liệu giúp giảm lỗi và tăng khả năng bảo trì.
3. Sự khác biệt giữa Stored Procedure và Function trong MySQL là gì?
- Stored Procedure: Thực hiện một loạt các hành động và có thể không trả về giá trị, hoặc trả về nhiều giá trị thông qua biến OUT.
- Function: Luôn trả về một giá trị duy nhất và có thể được sử dụng trực tiếp trong câu lệnh SQL (SELECT, WHERE…).
4. Làm thế nào để tạo một Stored Procedure trong MySQL?
Cú pháp để tạo SP trong MySQL:
CALL
6. IN, OUT, INOUT trong Stored Procedure có nghĩa là gì?
- IN: Giá trị được truyền vào SP, chỉ có thể được đọc.
- OUT: Giá trị được trả về từ SP, chỉ có thể được ghi, không được đọc bên trong SP.
- INOUT: Giá trị được truyền vào, có thể đọc và ghi bên trong SP, và sẽ được trả về khi kết thúc SP.
7. Làm thế nào để xử lý lỗi trong Stored Procedure?
MySQL cung cấp cơ chế xử lý lỗi bằng cách sử dụng DECLARE HANDLER
. Ví dụ:
CALL
12. Stored Procedure có ảnh hưởng đến hiệu suất hệ thống không?
- SP có thể tăng hiệu suất khi giảm số lượng yêu cầu gửi từ client đến server. Tuy nhiên, nếu không được tối ưu hóa, SP có thể gây nghẽn cổ chai nếu thực hiện quá nhiều phép tính phức tạp trong cơ sở dữ liệu.
13. Làm thế nào để sửa đổi hoặc xóa một Stored Procedure?
Để sửa đổi, bạn cần xóa SP cũ và tạo lại SP mới. Xóa SP bằng cách:
information_schema.ROUTINES