Bài viết này mô tả cách tạo và thực thi các hàm và thủ tục được lưu trữ MySQL trên tài khoản A2 Hosting của bạn. Bạn có thể sử dụng các hàm và thủ tục được lưu trữ cho nhiều trường hợp. Ví dụ:các chức năng và thủ tục được lưu trữ được thiết kế tốt có thể tăng cường bảo mật cơ sở dữ liệu, cải thiện tính toàn vẹn của dữ liệu và tăng hiệu suất.
Các hàm được lưu trữ
Các hàm được lưu trữ trong MySQL cung cấp một cách mạnh mẽ và linh hoạt để thao tác và xử lý dữ liệu. Bạn có thể xác định và chạy các chức năng được lưu trữ trên bất kỳ máy chủ A2 Hosting nào sử dụng MySQL.
Thiết lập cơ sở dữ liệu thử nghiệm
Để chứng minh một ví dụ cơ bản về các hàm được lưu trữ, hãy bắt đầu bằng cách tạo cơ sở dữ liệu mà chúng ta có thể sử dụng cho mục đích thử nghiệm. Trong câu lệnh SQL sau, hãy thay thế tên người dùng với tên người dùng tài khoản của bạn:
CREATE DATABASE username_test;Bạn có thể chạy lệnh SQL trước (và các lệnh SQL sau) từ dòng lệnh bằng công cụ MySQL hoặc trong trình duyệt web của bạn bằng phpMyAdmin.
Nếu bạn đang sử dụng phpMyAdmin, hãy nhấp vào tên tên người dùng _test để chọn cơ sở dữ liệu. Ngược lại, nếu bạn đang sử dụng chương trình dòng lệnh mysql, hãy nhập câu lệnh SQL sau:
USE username_test;
Tiếp theo, tạo một bảng trong tên người dùng _test cơ sở dữ liệu có tên sản phẩm . Để thực hiện việc này, hãy chạy câu lệnh SQL sau:
CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));
Câu lệnh SQL sau thêm một số dữ liệu mẫu vào sản phẩm bảng:
INSERT INTO products (prod_name, prod_cost, prod_price) VALUES ('Basic Widget',5.95,8.35),('Micro Widget',0.95,1.35),('Mega Widget',99.95,140.00);
Tạo hàm được lưu trữ
Bây giờ chúng ta có một cơ sở dữ liệu và một bảng để làm việc, chúng ta đã sẵn sàng để tạo một hàm được lưu trữ. Hãy tạo một hàm có tên calcProfit . Hàm này nhận hai tham số đầu vào:chi phí và giá của một thứ gì đó. Nó tính toán lợi nhuận bằng cách trừ chi phí khỏi giá, sau đó trả về giá trị cho biểu thức gọi.
Để tạo hàm được lưu trữ này, hãy chạy các câu lệnh MySQL sau:
DELIMITER $$ CREATE FUNCTION calcProfit(cost FLOAT, price FLOAT) RETURNS DECIMAL(9,2) BEGIN DECLARE profit DECIMAL(9,2); SET profit = price-cost; RETURN profit; END$$ DELIMITER ;DELIMITER lệnh ở đầu các câu lệnh này ngăn MySQL xử lý định nghĩa hàm quá sớm. DELIMITER lệnh ở cuối các câu lệnh này trả lại quá trình xử lý về bình thường.
Sử dụng chức năng được lưu trữ
Bây giờ bạn có thể thực thi chức năng được lưu trữ trong một truy vấn cơ sở dữ liệu. Câu lệnh SQL sau trình bày cách thực hiện việc này:
SELECT *, calcProfit(prod_cost,prod_price) AS profit FROM products;
Câu lệnh SQL này trả về các kết quả sau:
+---------+--------------+-----------+------------+--------+ | prod_id | prod_name | prod_cost | prod_price | profit | +---------+--------------+-----------+------------+--------+ | 1 | Basic Widget | 5.95 | 8.35 | 2.40 | | 2 | Micro Widget | 0.95 | 1.35 | 0.40 | | 3 | Mega Widget | 99.95 | 140 | 40.05 | +---------+--------------+-----------+------------+--------+
Như bạn có thể thấy, calcProfit chức năng tự động tính toán lợi nhuận (giá trừ chi phí) cho từng sản phẩm trong bảng.
Các thủ tục được lưu trữ
Các thủ tục được lưu trữ đôi khi bị nhầm lẫn với các hàm được lưu trữ, nhưng chúng khác nhau theo một số cách quan trọng. Ví dụ:các thủ tục đã lưu trữ phải được gọi bằng CALL câu lệnh, trong khi các hàm được lưu trữ có thể được sử dụng trực tiếp trong các biểu thức SQL. Bạn có thể xác định và chạy các thủ tục được lưu trữ trên bất kỳ máy chủ A2 Hosting nào sử dụng MySQL.
Các câu lệnh MySQL sau đây trình bày cách tạo một thủ tục được lưu trữ rất cơ bản có tên là procedureTest . Quy trình này thực hiện tra cứu đơn giản về sản phẩm bảng mà chúng tôi đã sử dụng trong ví dụ về hàm được lưu trữ ở trên. Mặc dù thủ tục này không được sử dụng nhiều trong thực tế, nhưng nó thể hiện cú pháp và cấu trúc chính xác để khai báo một thủ tục được lưu trữ:
DELIMITER $$ CREATE PROCEDURE procedureTest() BEGIN SELECT prod_name FROM products; END$$ DELIMITER ;
Để thực hiện thủ tục đã lưu trữ, hãy sử dụng câu lệnh MySQL sau:
CALL procedureTest() \GNếu bạn đang sử dụng phpMyAdmin, hãy nhập câu lệnh MySQL trước đó mà không có \ G tùy chọn ở cuối.
Thông tin khác
Để biết thêm thông tin về các thủ tục và hàm được lưu trữ trong MySQL, vui lòng truy cập http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html.