Skip to content

Commit e6ee95d

Browse files
committed
chore: introduce ProcedureCallPacket examples
1 parent abb6c02 commit e6ee95d

File tree

1 file changed

+60
-4
lines changed

1 file changed

+60
-4
lines changed

documentation/en/TypeScript-Examples.md

Lines changed: 60 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,8 @@ conn.query<ResultSetHeader>(sql, (_err, result) => {
177177
insertId: 0,
178178
info: '',
179179
serverStatus: 2,
180-
warningStatus: 0
180+
warningStatus: 0,
181+
changedRows: 0
181182
}
182183
*/
183184
});
@@ -212,23 +213,78 @@ conn.query<ResultSetHeader[]>(sql, (_err, results) => {
212213
insertId: 0,
213214
info: '',
214215
serverStatus: 10,
215-
warningStatus: 0
216+
warningStatus: 0,
217+
changedRows: 0
216218
},
217219
ResultSetHeader {
218220
fieldCount: 0,
219221
affectedRows: 0,
220222
insertId: 0,
221223
info: '',
222224
serverStatus: 2,
223-
warningStatus: 0
225+
warningStatus: 0,
226+
changedRows: 0
224227
}
225228
]
226229
*/
227230
});
228231
```
229232

233+
---
234+
230235
#### ProcedureCallPacket
231-
> In progress
236+
By performing a **Call Procedure** using `INSERT`, `UPDATE`, etc., the return will be a `ProcedureCallPacket<ResultSetHeader>` (even if you perform multiples queries and set `multipleStatements` to `true`).
237+
238+
> For `CREATE PROCEDURE` and `DROP PROCEDURE`, these returns will be the *default* `ResultSetHeader`.
239+
240+
```ts
241+
import mysql, { ProcedureCallPacket, ResultSetHeader } from 'mysql2';
242+
243+
const conn = mysql.createConnection({
244+
user: 'test',
245+
database: 'test',
246+
});
247+
248+
/** ResultSetHeader */
249+
conn.query('DROP PROCEDURE IF EXISTS myProcedure');
250+
251+
/** ResultSetHeader */
252+
conn.query(`
253+
CREATE PROCEDURE myProcedure()
254+
BEGIN
255+
SET @1 = 1;
256+
SET @2 = 2;
257+
END
258+
`);
259+
260+
/** ProcedureCallPacket */
261+
const sql = 'CALL myProcedure()';
262+
263+
conn.query<ProcedureCallPacket<ResultSetHeader>>(sql, (_err, result) => {
264+
console.log(result);
265+
/**
266+
* @result: ResultSetHeader {
267+
fieldCount: 0,
268+
affectedRows: 0,
269+
insertId: 0,
270+
info: '',
271+
serverStatus: 2,
272+
warningStatus: 0,
273+
changedRows: 0
274+
}
275+
*/
276+
});
277+
```
278+
279+
By using `SELECT` and `SHOW` queries in a **Procedure Call**, it groups the results as:
280+
```tsx
281+
// ProcedureCallPacket<RowDataPacket[]>
282+
[...RowDataPacket[], ResultSetHeader]
283+
284+
// ProcedureCallPacket<RowDataPacket[][]>
285+
[...RowDataPacket[][], ResultSetHeader]
286+
```
287+
For `ProcedureCallPacket<RowDataPacket[]>` and `ProcedureCallPacket<RowDataPacket[][]>`, please see the following advanced examples.
232288

233289
---
234290

0 commit comments

Comments
 (0)