+167 votes
,post bởi (2.6k điểm)

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:

  1. Kết nối với máy chủ cơ sở dữ liệu MySQL.
  2. Gọi thủ tục được lưu trữ bằng cách thực hiện CALL spNamecâu lệnh. Đây spNamelà tên của thủ tục được lưu trữ.
  3. Đó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ừ todosbảng dựa trên giá trị của completedtrườ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ữ filterTodotrả về các hàng trong todosbả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 CALLcâu lệnh. Ví dụ, để gọi filterTodothủ 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 filterTodothủ 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.jsmô-đ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 CALLcâ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.

Your answer

Your name to display (optional):
Privacy: Your email address will only be used for sending these notifications.
Anti-spam verification:
To avoid this verification in future, please log in or register.
...