当 node-mssql 使用违反其类型的主键约束的 TVP 参数执行存储过程时,我的节点应用程序崩溃。
events.js:183
throw er; // Unhandled 'error' event
^
Error: [Microsoft][SQL Server Native Client 11.0][SQL Server]The data for
the table-valued parameter 1 doesn't conform to the table type of the
parameter. SQL Server error is: 3602, state: 30
我尝试以多种方式处理错误,包括添加事件侦听器。我怀疑我用错了,但还没有弄清楚到底是怎么回事。
const sql = require('mssql/msnodesqlv8');
sql.on('error', err => {
console.log(err);
})
const tvp = new sql.Table('EventsMultiplicativeType');
tvp.columns.add('MUID', sql.Int);
tvp.columns.add('DateID_Start', sql.Int);
tvp.columns.add('Value', sql.Float);
tvp.columns.add('Number_Consecutive_Observation', sql.Int);
tvp.columns.add('Detail', sql.VarChar(sql.MAX));
tvp.rows.add(8750, 20180101, 5, 5, 'Hello');
tvp.rows.add(8750, 20180101, 5, 5, 'Hello');
sql.connect(dbConfig).then(pool => {
pool.on('error', err=> console.log(err));
return pool.request()
.on('error', err => console.log(err))
.input('EventTable', tvp)
.execute('sp_ValidateEventsMultiplicative')
.then(result =>console.log(results))
.catch(err => console.log(err))
}).catch(err => console.log(err));
sql.on('error', err => {
console.log(err);
})