Node.js+MySQL调用存储过程

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

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

  1. 连接到MySQL数据库服务器,请参考:http://www.yiibai.com/mysql/nodejs-connect.html
  2. 通过执行CALL spName语句来调用存储过程。spName是存储过程的名称。
  3. 关闭数据库连接。

调用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:\worksp\mysql\nodejs\nodejs-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中的存储过程。

易百教程移动端:请扫描本页面底部(右侧)二维码并关注微信公众号,回复:”教程” 选择相关教程阅读或直接访问:http://m.yiibai.com 。

上一篇:MySQL+Python连接和操作
下一篇:哥,这回真没有了

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • Java技术群: 227270512 (人数:2000,免费:否)
  • MySQL/SQL群: 418407075 (人数:2000,免费:否)
  • 大数据开发群: 655154550 (人数:2000,免费:否)
  • Python技术群: 287904175 (人数:2000,免费:否)
  • 人工智能深度学习: 456236082 (人数:2000,免费:否)
  • 测试工程师(新群): 415553199 (人数:1000,免费:否)
  • 前端技术群(新群): 410430016 (人数:1000,免费:是)
  • C/C++技术(新群): 629264796 (人数:1000,免费:是)
  • Node.js技术(新群): 621549808 (人数:1000,免费:是)
  • PostgreSQL数据库(新群): 539504187 (人数:1000,免费:是)
  • Linux技术: 479429477 (人数:2000,免费:否)
  • PHP开发者: 460153241 (人数:2000,免费:否)
  • Oracle数据库: 175248146 (人数:2000,免费:否)
  • C#/ASP.Net开发者: 579821706 (人数:2000,免费:是)
  • 数据分析师: 397883996 (人数:2000,免费:是)R语言,Matlab语言等技术

发表评论

您的电子邮箱地址不会被公开。