nodejs的mysql存储过程问题
我在MySQL过程中遇到了一个奇怪的问题。如果我从NodeJS调用下面的过程,那么它的运行绝对正常nodejs的mysql存储过程问题,mysql,node.js,stored-procedures,Mysql,Node.js,Stored Procedures,我在MySQL过程中遇到了一个奇怪的问题。如果我从NodeJS调用下面的过程,那么它的运行绝对正常 BEGIN INSERT INTO `tblProcessCCDs`(`CCDName`, `JSON`, `fldDIRECTEmailAttachmentID`) VALUES (CCDName, JSON, fldDIRECTEmailAttachmentID); END 然而,如果我将其更新为以下内容,那么它只是插入第一条记录 BEGIN DECLARE Process
BEGIN
INSERT INTO `tblProcessCCDs`(`CCDName`, `JSON`, `fldDIRECTEmailAttachmentID`)
VALUES (CCDName, JSON, fldDIRECTEmailAttachmentID);
END
然而,如果我将其更新为以下内容,那么它只是插入第一条记录
BEGIN
DECLARE ProcessCCDsID INT;
SET ProcessCCDsID = (SELECT ID FROM tblProcessCCDs WHERE `fldDIRECTEmailAttachmentID` = fldDIRECTEmailAttachmentID LIMIT 1);
IF(ProcessCCDsID = 0 OR ProcessCCDsID IS NULL) THEN BEGIN
INSERT INTO `tblProcessCCDs`(`CCDName`, `JSON`, `fldDIRECTEmailAttachmentID`)
VALUES (CCDName, JSON, fldDIRECTEmailAttachmentID);
END; END IF;
END
NodeJS代码:
var argv = require('minimist')(process.argv.slice(2));
var bb = require("blue-button");
var fs = require("fs");
var async = require("async");
var mysql = require("mysql2");
xml2js = require('xml2js');
const util = require('util');
var parser = new xml2js.Parser({explicitArray : false});
var ROW_XMLPath = "/disk2/Clinical/TCM/DIRECT/Testing/DOC00001.XML" ;
var ROW_EAD = "77" ;
if ( typeof ROW_XMLPath !== 'undefined' && ROW_XMLPath ) {
var EmailAttachmentID = ROW_EAD;
console.log("Email Attachment ID: "+EmailAttachmentID);
var CCDFilePath = ROW_XMLPath;
var CCDData = fs.readFileSync(CCDFilePath, 'utf-8');
var CCDDoc = bb.parse(CCDData);
async.series([
//Load user to get userId first
function(callback) { //ProcessCCDs
var connection = mysql.createConnection({user: 'mf287',database: 'DIRECTTCM',host: 'localhost',password: 'mfTest-HITEC_307',multipleStatements: true});
connection.connect();
console.log("connection Connected");
var testvar = "Sample Value";
var qryInsertProcessCCDs = 'CALL `spINSERT_tblProcessCCDs`(?,?,?);';
connection.query(qryInsertProcessCCDs, [CCDFilePath,testvar,EmailAttachmentID], function (err, rows, fields) {
if (!err) {
console.log(" Inserted into Process");
callback();
} else{
console.log('Error while performing Query. ',err);
callback(err);
}
});
connection.end();
}], function(err) { //This function gets called after the two tasks have called their "task callbacks"
if(err) return(err);
console.log("\n\nPATID: ", PATDEMOGRAPHICID,"\n\n");
});
}
从现在起,我一直在努力解决这个问题。但是,到目前为止运气不好。在这里寻求帮助。谢谢。你能发布你的nodejs代码吗?@Charlie,完成了。请现在检查。我没有看到任何明显的情况,但我很好奇如果删除“async.series”并只运行一个“connection.query”,会发生什么。我想知道async是否会在查询完成之前终止查询。