/
sql-server.js
108 lines (93 loc) · 3.73 KB
/
sql-server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
const sql = require('mssql')
var sql_server = {
query: function (sqlQuery, cb) {
var conn = new sql.ConnectionPool(global.config.db);
conn.connect().then(function () {
var req = new sql.Request(conn);
req.query(sqlQuery).then(function (recordset) {
cb(null, recordset);
//console.log(recordset);
conn.close();
})
.catch(function (err) {
cb(err, recordset);
//console.log(err);
conn.close();
});
})
.catch(function (err) {
cb(err, null);
});
},
storedProcedure : function (storedProcedure, params, cb) {
var arr_params = [];
if (params != "undefined" && params != null) {
if(typeof params == "string"){
arr_params = JSON.parse(params);
}
else{
arr_params = params;
}
}
var conn = new sql.ConnectionPool(global.config.db);
conn.connect().then(function () {
var req = new sql.Request(conn);
for(var i = 0; i < arr_params.length; i++) {
if(arr_params[i].direction == "input"){
req.input(arr_params[i].name, getSqlType(arr_params[i].type), arr_params[i].value);
}
else{
req.output(arr_params[i].name, getSqlType(arr_params[i].type));
}
}
req.execute(storedProcedure).then(function (recordset) {
cb(null, recordset);
conn.close();
})
.catch(function (err) {
cb(err, null);
conn.close();
});
})
.catch(function (err) {
cb(err, null);
});
}
};
function getSqlType(typeName)
{
switch(typeName) {
case 'sql.Bit': return sql.Bit;
case 'sql.BigInt': return sql.BigInt;
case 'sql.Decimal': return sql.Decimal;
case 'sql.Float': return sql.Float;
case 'sql.Int': return sql.Int;
case 'sql.Money': return sql.Money;
case 'sql.Numeric': return sql.Numeric;
case 'sql.SmallInt': return sql.SmallInt ;
case 'sql.SmallMoney': return sql.SmallMoney;
case 'sql.Real': return sql.Real ;
case 'sql.TinyInt': return sql.TinyInt ;
case 'sql.Char': return sql.Char ;
case 'sql.NChar': return sql.NChar;
case 'sql.Text': return sql.Text ;
case 'sql.NText': return sql.NText;
case 'sql.VarChar': return sql.VarChar ;
case 'sql.NVarChar': return sql.NVarChar ;
case 'sql.Time': return sql.Time ;
case 'sql.Date': return sql.Date ;
case 'sql.DateTime': return sql.DateTime ;
case 'sql.DateTime2': return sql.DateTime2;
case 'sql.DateTimeOffset': return sql.DateTimeOffset;
case 'sql.SmallDateTime': return sql.SmallDateTime;
case 'sql.UniqueIdentifier': return sql.UniqueIdentifier ;
case 'sql.Binary': return sql.Binary;
case 'sql.VarBinary': return sql.VarBinary;
case 'sql.Image': return sql.Image;
case 'sql.UDT': return sql.UDT ;
case 'sql.Geography': return sql.Geography;
case 'sql.Geometry': return sql.Geometry ;
default: return sql.VarChar;
}
}
module.exports = sql_server;