求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
要资料
 
 

mysql教程
MySQL快速学习入门
MySQL是什么
MySQL安装
MySQL示例数据库
MySQL导入示例数据库
MySQL基础教程
MySQL查询数据
MySQL WHERE语句
MySQL插入数据
MySQL更新表数据
MySQL删除表数据
MySQL创建与删除数据库
MySQL创建表
MySQL修改表结构
MySQL重命名表
MySQL数据类型
高级部分
MySQL技巧
MySQL存储过程
MySQL视图
MySQL触发器
MySQL管理
MySQL全文搜索
MySQL函数
应用程序连接
MySQL+Node.js连接和操作
Python+MySQL连接和操作
 
 

Node.js+MySQL调用存储过程
987 次浏览
8次  

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

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

连接到MySQL数据库服务器,请参考:http://lib.uml.com.cn/ebook/mysql/mysql24-1.asp

通过执行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:\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中的存储过程。


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



987 次浏览
8次
 捐助