Tóm tắt : trong hướng dẫn này, bạn sẽ học cách gọi thủ tục lưu sẵn trong MySQL từ ứng dụng Node.js.
Các bước gọi thủ tục lưu trữ tương tự như các bước thực hiện truy vấn như sau:
- Kết nối với máy chủ cơ sở dữ liệu MySQL.
- Gọi thủ tục được lưu trữ bằng cách thực hiện
CALL spName
câu lệnh. Đây spName
là tên của thủ tục được lưu trữ. - Đóng kết nối cơ sở dữ liệu.
Gọi một ví dụ thủ tục lưu trữ MySQL
Để minh họa, chúng tôi tạo một thủ tục được lưu trữ mới filterTodo
để truy vấn các hàng từ todos
bảng dựa trên giá trị của completed
trường.
DELIMITER $$ CREATE PROCEDURE `filterTodo`(IN done BOOLEAN) BEGIN SELECT * FROM todos WHERE completed = done; END$$ DELIMITER ;
Ngôn ngữ mã: SQL (Ngôn ngữ truy vấn có cấu trúc) ( sql )
Thủ tục được lưu trữ filterTodo
trả về các hàng trong todos
bảng dựa trên done
đối số. Nếu đối số done là đúng, thì nó trả về tất cả các việc cần làm đã hoàn thành, nếu không, nó trả về các việc cần làm chưa hoàn thành.
Như bạn đã biết, để gọi một thủ tục lưu trữ trong MySQL, bạn sử dụng CALL
câu lệnh. Ví dụ, để gọi filterTodo
thủ tục lưu sẵn, bạn thực hiện câu lệnh sau:
CALL filterTodo(true);
Ngôn ngữ mã: SQL (Ngôn ngữ truy vấn có cấu trúc) ( sql )
Câu lệnh trả về tập kết quả sau:
+----+--------------------------+-----------+ | id | title | completed | +----+--------------------------+-----------+ | 4 | It should work perfectly | 1 | +----+--------------------------+-----------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.01 sec)
Ngôn ngữ mã: JavaScript ( javascript )
Chương trình storedproc.js sau gọi filterTodo
thủ tục lưu sẵn và trả về tập kết quả:
let mysql = require('mysql'); let config = require('./config.js'); let connection = mysql.createConnection(config); let sql = `CALL filterTodo(?)`; connection.query(sql, true, (error, results, fields) => { if (error) { return console.error(error.message); } console.log(results[0]); }); connection.end();
Ngôn ngữ mã: JavaScript ( javascript )
Lưu ý rằng chương trình sử dụng config.js
mô-đun lưu trữ thông tin của cơ sở dữ liệu:
let config = { host : 'localhost', user : 'root', password: '', database: 'todoapp' }; module.exports = config;
Ngôn ngữ mã: JavaScript ( javascript )
Trong CALL
câu lệnh, chúng tôi đã sử dụng trình giữ chỗ (?) để truyền dữ liệu cho thủ tục được lưu trữ.
Khi chúng ta gọi query()
phương thức trên connection
đối tượng, chúng ta chuyển giá trị của done
đối số làm đối số thứ hai của query()
phương thức.
Hãy chạy chương trình storedproc.js.
> node storedproc.js [ RowDataPacket { id: 4, title: 'It should work perfectly', completed: 1 } ]
Ngôn ngữ mã: JavaScript ( javascript )
Chương trình hiển thị 1 hàng như ý.
Trong hướng dẫn này, bạn đã học cách gọi thủ tục lưu trữ trong MySQL từ chương trình Node.js.