如何解决Mysql 准备好的语句没有给出正确的结果集
我在我的存储过程中编写了准备好的语句,并从本地机器上的 node.js 调用以根据需要提供输出,但生产相同的存储过程会提供一次或两次结果集,然后为同一查询提供空结果集。
如果我一次又一次地调用该请求,假设 8 或 10 次一个接一个,那么它会给出 2 或 3 次空结果集。
这只会发生在这个存储过程中,不会发生在任何其他存储过程中。
我用谷歌搜索但找不到任何资源来帮助我。
像这样从节点 m 调用存储过程
function mdGetFiles(pUserData) {
var sQuery = "CALL spTestGetFiles(?,?)";
var sCommand = modules.MysqL.format(sQuery,[pUserData.selfId,pUserData.teamId]);
modules.debugLog('sCommand : ',sCommand);
return new modules.promise(function(resolve,reject) {
modules.dbClientHelper.getDbConnection()
.then(function(connection) {
return modules.dbClientHelper.executeQuery(connection,sCommand);
})
.then(function(finalResult) {
var oResultDetail = {
data: finalResult[0]
};
resolve(oResultDetail);
})
.error(function(sError) {
reject(sError);
})
.catch(function(sCatchError) {
reject(sCatchError);
});
});
};
我的存储过程
CREATE PROCEDURE `spTestGetFiles`(pSelfId VARCHAR(100),pTeamId VARCHAR(100))
BEGIN
SET @sSelfId = pSelfId;
SET @sTeamId = pTeamId;
SET @selectQuery = "";
SET @selectQuery =
'SELECT
documents.documentId,documents.documentName,documents.documentDescription
FROM
documents
WHERE documents.creatorId = ?
AND documents.teamId = ?
';
PREPARE stmt FROM @selectQuery;
EXECUTE stmt USING
@sSelfId,@sTeamId;
DEALLOCATE PREPARE stmt;
END
我使用了准备好的语句来防止 sql 注入。
这个存储过程 spTestGetFiles 为相同的 pSelfId 和 pTeamId 提供了一些时间结果和一些时间空结果。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。