1 | const mssql = require( 'mssql' );
|
2 |
|
3 | const config = require( '../config/datawarehouse.mssql' );
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 | module.exports = function executeSproc( sprocInfo, onRow ) {
|
20 |
|
21 | return new Promise( async ( resolve, reject ) => {
|
22 | const { parameters, procedure } = sprocInfo;
|
23 | const results = [];
|
24 |
|
25 | const pool = await new mssql.ConnectionPool( config ).connect();
|
26 | const request = await pool.request();
|
27 | request.stream = true;
|
28 |
|
29 | request.on( 'row', ( row ) => {
|
30 | let newRow = row;
|
31 |
|
32 | if ( onRow ) {
|
33 | newRow = onRow( row );
|
34 | }
|
35 |
|
36 | results.push( newRow );
|
37 | } );
|
38 |
|
39 | request.on( 'error', ( error ) => {
|
40 | console.error( error );
|
41 | reject( error );
|
42 | } );
|
43 |
|
44 | request.on( 'done', () => resolve( results ) );
|
45 |
|
46 | parameters.forEach( ( { name, value } ) => request.input( name, mssql.NVarChar, value ) );
|
47 |
|
48 | request.execute( procedure, ( err ) => {
|
49 |
|
50 | if ( err ) {
|
51 | console.log( err );
|
52 | console.log( sprocInfo );
|
53 | }
|
54 |
|
55 | } );
|
56 |
|
57 | } );
|
58 |
|
59 | };
|