Thứ Tư, 24 tháng 5, 2017

[Hệ quản trị CSDL] Bài 3: Stored Procedured

1. Stored Procedured là gì? Stored Procedured để làm gì?
- Stored Procedured là một đoạn  sql được lưu lại trong danh mục của database. Và có thể được gọi trong 1 chương trinh, 1 trigger.
- Mục đích dùng Stored Procedured là:
   + Tăng hiệu suất của ứng dung vì nó đã được dịch và lưu trong danh mục của database
   +   Giảm thiểu lưu lượng giữa ứng dụng và database server do ứng dụng không cần gửi tập các câu lệnh chưa được biên dịch mà chỉ cần gửi tên của store procedured
  + Có khả năng tái sử dụng và rõ ràng đối với các ứng dụng.
   + Bảo mật do người quản trị có thể phân quyền cho hệ thống.

- Hạn chế:
   + Làm cho database server luôn trong tình trạng load memory và process ở mức cao.
   + Khai báo đơn giản không thể có những cú pháp logic như những ngôn ngữ lập trình.
   + Không thể kiểm tra lỗi của SP
   + Bảo trì khó.

2. Cú pháp
DELIMITER //
CREATE PROCEDURE sp_name
   BEGIN
   SELECT *  FROM products;
   END //
DELIMITER ;

CALL sp_name()

3.Thực hành

VD1: Tạo 1 hàm lấy ra thành phố và điện thoại của nước có tên đưa vào hàm
DELIMITER $$
CREATE PROCEDURE getOfficeByContry(IN countryName varchar(255))
BEGIN
  SELECT city, phone
    FROM offices
    WHERE country = countryName;
END $$

DELIMITER ;

VD2:  Tạo hàm đếm số đơn hàng có trạng thái là status
DELIMITER $$
CREATE PROCEDURE CountOrderByStatus(
             IN orderStatus VARCHAR(25), OUT total INT)
BEGIN
  SELECT count(orderNumber) INTO total
  FROM orders
  WHERE status = orderStatus;
END$$
DELIMITER ;

Không có nhận xét nào:

Đăng nhận xét