node mysql存储过程_Node.js+MySQL调用存储过程

在本教程中,您将学习如何从Node.js应用程序中调用MySQL中的存储过程。

调用存储过程的步骤与执行查询的步骤类似,如下所示:

连接到MySQL数据库服务器,请参考:

通过执行CALL spName语句来调用存储过程。spName是存储过程的名称。

关闭数据库连接。

调用MySQL存储过程示例

为了演示,我们创建一个新的存储过程filterTodo,以根据completed字段的值来查询todos表中的行。

use todoapp; DELIMITER $$ CREATE PROCEDURE `filterTodo`(IN done BOOLEAN) BEGIN SELECT * FROM todos WHERE completed = done; END$$ DELIMITER ;

存储过程filterTodo根据done参数返回todos表中的行。 如果done参数为true,则返回所有已完成的todos,否则返回未完成的todos。

在MySQL中调用一个存储过程,可以使用CALL语句。 例如,要调用filterTodo存储过程,请执行以下语句:

CALL filterTodo(true);

该语句返回以下结果集:

mysql> CALL filterTodo(true); +----+-----------------------------------------------+-----------+ | id | title | completed | +----+-----------------------------------------------+-----------+ | 4 | It should work perfectly | 1 | | 6 | 现在学习一次插入多行记录(by www.yiibai.com) | 1 | | 7 | It should work perfectly | 1 | +----+-----------------------------------------------+-----------+ 3 rows in set Query OK, 0 rows affected

以下storedproc.js程序调用filterTodo存储过程并返回结果集:

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();

请注意,该程序使用存储数据库信息的config.js模块:

let config = { host : 'localhost', user : 'root', password: '123456', database: 'todoapp' }; module.exports = config;

在CALL语句中,我们使用占位符(?)将数据传递给存储过程。

当我们在连接对象上调用query()方法时,我们将done参数的值作为query()方法的第二个参数传递。

下面,我们来运行storedproc.js程序,如下所示 –

F:workspmysqlnodejsnodejs-connect>node storedproc.js openssl config failed: error:02001003:system library:fopen:No such process [ RowDataPacket { id: 4, title: 'It should work perfectly', completed: 1 }, RowDataPacket { id: 6, title: '现在学习一次插入多行记录(by www.yiibai.com)', completed: 1 }, RowDataPacket { id: 7, title: 'It should work perfectly', completed: 1 } ]

程序按预期显示3行。

在本教程中,您已经学习了如何从Node.js程序中调用MySQL中的存储过程。

¥ 我要打赏 纠错/补充 收藏

哥,这回真没有了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值