Bài viết này mô tả cách tạo và thực thi các chức năng và quy trình được lưu trữ của MySQL trên tài khoản Dịch vụ lưu trữ A2 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 tình huống khác nhau. 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
chức năng lưu trữ
Các chức năng được lưu trữ của 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Để minh họa một ví dụ cơ bản về các chức năng được lưu trữ, hãy bắt đầu bằng cách tạo cơ sở dữ liệu mà chúng tôi 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 bằng tên người dùng tài khoản của bạn
CREATE DATABASE username_test;
Nếu bạn đang sử dụng phpMyAdmin, hãy nhấp vào tên username_test để chọn cơ sở dữ liệu. Mặt khác, 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 cơ sở dữ liệu username_test có tên là 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 đây thêm một số dữ liệu mẫu vào bảng sản phẩm
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 chức năng đượ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ả của một cái gì đó. Nó tính toán lợi nhuận bằng cách lấy giá trừ đi chi phí, rồi trả về giá trị cho biểu thức gọi
Để tạo chức năng đượ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 ;
Lệnh DELIMITER ở đầu các câu lệnh này ngăn MySQL xử lý định nghĩa hàm quá sớm. Lệnh DELIMITER ở cuối các câu lệnh này sẽ đưa quá trình xử lý trở lại 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 truy vấn cơ sở dữ liệu. Câu lệnh SQL sau minh họa 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, hàm calcProfit tự động tính lợi nhuận [giá trừ chi phí] cho mỗi sản phẩm trong bảng
thủ tục lưu trữ
Các thủ tục được lưu trữ đôi khi bị nhầm lẫn với các chức năng được lưu trữ, nhưng chúng khác nhau ở một số điểm quan trọng. Ví dụ, các thủ tục được lưu trữ phải được gọi bằng câu lệnh CALL, 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 lưu sẵn 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 lưu trữ rất cơ bản có tên là thủ tụcTest. Quy trình này thực hiện một tra cứu đơn giản trên bảng sản phẩm 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 đúng cú pháp và cấu trúc để khai báo thủ tục lưu sẵn
DELIMITER $$ CREATE PROCEDURE procedureTest[] BEGIN SELECT prod_name FROM products; END$$ DELIMITER ;
Để thực thi thủ tục được lưu trữ, hãy sử dụng câu lệnh MySQL sau
________số 8Nếu bạn đang sử dụng phpMyAdmin, hãy nhập câu lệnh MySQL trước đó mà không có tùy chọn \G ở cuối
Thêm thông tin
Để biết thêm thông tin về các thủ tục và chức năng được lưu trữ trong MySQL, vui lòng truy cập http. // nhà phát triển. mysql. com/doc/refman/5. 0/vi/tạo thủ tục. html
Bạn đã tạo một hàm có tên là hello nhận một tham số. Tham số bị bỏ qua và trả về một
USE username_test;7 chứa giá trị 'foobar'. Bạn đã tạo một bảng tên là yar và thêm ba hàng vào đó. Câu lệnh select chạy hàm
USE username_test;8 cho mỗi hàng được trả về theo năm
Hàm là một khối mã có tổ chức, có thể sử dụng lại được dùng để thực hiện một hành động đơn lẻ có liên quan. Các chức năng cung cấp tính mô-đun tốt hơn cho ứng dụng của bạn và mức độ tái sử dụng mã cao
MySQL cung cấp một bộ hàm dựng sẵn thực hiện các tác vụ cụ thể, ví dụ hàm CURDATE[] trả về ngày hiện tại
Bạn có thể tạo một hàm được lưu trữ bằng cách sử dụng câu lệnh CREATE FUNCTION
cú pháp
Sau đây là cú pháp câu lệnh CREATE FUNCTION -
CREATE FUNCTION function_Name[input_arguments] RETURNS output_parameter
Trong đó, function_name là tên hàm bạn cần tạo, input_arguments là giá trị đầu vào của hàm và output_parameter là giá trị trả về của hàm
ví dụ 1
Giả sử chúng ta đã tạo một bảng có tên Emp trong cơ sở dữ liệu bằng cách sử dụng câu lệnh CREATE như hình dưới đây -
USE username_test;0
Và chúng tôi đã chèn ba bản ghi vào bảng Emp dưới dạng -
USE username_test;1
Truy vấn sau tạo một hàm có tên getDob[] chấp nhận tên của nhân viên, truy xuất và trả về giá trị của cột DOB
USE username_test;2
Nếu bạn gọi hàm, bạn có thể nhận được ngày sinh của một nhân viên như hình bên dưới -
USE username_test;3
ví dụ 2
Giả sử chúng ta đã tạo một bảng khác như hình bên dưới -
USE username_test;4
Truy vấn sau tạo một hàm có tên tbl_Update −
USE username_test;5
Bạn có thể gọi hàm đã tạo ở trên như hình bên dưới -
USE username_test;6
Nếu bạn lấy các bản ghi của bảng student bằng cách sử dụng câu lệnh select, bạn có thể quan sát bản ghi đã sửa đổi -