Resumo : neste tutorial, você aprenderá como chamar um procedimento armazenado no MySQL a partir de um aplicativo Node.js.
Este tutorial pega onde oO tutorial de exclusão de dados no MySQL do Node.js foi interrompido.
As etapas para chamar um procedimento armazenado são semelhantes às etapas para executar uma consulta como segue:
- Conecte-se ao servidor de banco de dados MySQL.
- Chame o procedimento armazenado executando a
CALL spName
instrução. OspName
é o nome do procedimento armazenado. - Feche a conexão com o banco de dados.
Chamando um exemplo de procedimento armazenado MySQL
Para demonstração, criamos um novo procedimento armazenado filterTodo
para consultar linhas da todos
tabela com base no valor do completed
campo.
DELIMITER $$
CREATE PROCEDURE filterTodo(IN done BOOLEAN)
BEGIN
SELECT * FROM todos WHERE completed = done;
END$$
DELIMITER ;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
O procedimento armazenado filterTodo
recupera linhas da todos
tabela dependendo do valor do done
argumento. Quando o done
argumento é verdadeiro, ele recupera todos os todos concluídos; Caso contrário, ele retorna todos incompletos.
Para chamar um procedimento armazenado, você usa a CALL
instrução. Por exemplo, para chamar o filterTodo
procedimento armazenado, execute a seguinte instrução:
CALL filterTodo(false);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A instrução retorna o seguinte conjunto de resultados:
+----+------------------------------------+-----------+
| id | title | completed |
+----+------------------------------------+-----------+
| 2 | Insert a new row with placeholders | 0 |
| 3 | Master Node.js MySQL | 0 |
+----+------------------------------------+-----------+
2 rows in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Linguagem de código: JavaScript ( javascript )
O stored_procedure.js
programa a seguir chama o filterTodo
procedimento armazenado e retorna o conjunto de resultados:
let mysql = require('mysql');
let connection = mysql.createConnection({
host: process.env.DB_HOST,
port: process.env.DB_PORT,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
});
connection.connect((err) => {
if (err) return console.error(err.message);
let sql = `CALL filterTodo(?)`;
connection.query(sql, [false], (error, results, fields) => {
if (error) return console.error(error.message);
console.log(results);
});
// close the database connection
connection.end();
});
Linguagem de código: JavaScript ( javascript )
Como funciona.
Primeiro, importe o mysql
módulo:
let mysql = require('mysql');
Linguagem de código: JavaScript ( javascript )
Segundo, crie uma conexão com o banco de dados MySQL usando o createConnection
método:
let connection = mysql.createConnection({
host: process.env.DB_HOST,
port: process.env.DB_PORT,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
});
Linguagem de código: JavaScript ( javascript )
Observe que recuperamos os parâmetros de conexão (host, porta, usuário, senha e banco de dados) das variáveis de ambiente usando .env
.
Terceiro, conecte-se ao banco de dados MySQL:
connection.connect((err) => {
if (err) return console.error(err.message);
});
Linguagem de código: JavaScript ( javascript )
Este código verifica se há algum erro e o exibe.
Quarto, defina uma consulta SQL que chame o filterTodo
procedimento armazenado:
let sql = `CALL filterTodo(?)`;
Linguagem de código: JavaScript ( javascript )
Quinto, especifique os dados usados na consulta:
let data = [false];
Linguagem de código: JavaScript ( javascript )
Neste caso, o espaço reservado ?
na consulta SQL será substituído por false
.
Sexto, execute a consulta SQL usando o query
método:
connection.query(sql, [false], (error, results, fields) => {
if (error) return console.error(error.message);
console.log(results);
});
Linguagem de código: JavaScript ( javascript )
Este código executa a consulta e exibe o número de linhas afetadas.
Por fim, feche a conexão com o banco de dados:
connection.end();
Linguagem de código: CSS ( css )
Neste tutorial, você aprendeu como chamar um procedimento armazenado no MySQL a partir de um programa Node.js.