首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >存储过程插入两次MYSQL

存储过程插入两次MYSQL
EN

Stack Overflow用户
提问于 2017-03-31 15:36:45
回答 1查看 803关注 0票数 0

我在MySQL中有这个存储过程:

代码语言:javascript
复制
CREATE PROCEDURE c_ranges(
    _nombre VARCHAR(100),
    _limiteinferior DECIMAL(10,2),
    _limitesuperior DECIMAL(10,2)
)
BEGIN
    DECLARE _newID INT;
    SELECT MAX(idrango)+1 FROM rango INTO _newID;
    IF (_newID IS NULL) THEN
        SET _newID = 0;
    END IF;
    INSERT INTO rango (idrango,nombre,limiteinferior,limitesuperior)
    VALUES(_newID,_nombre,_limiteinferior,_limitesuperior);
    SELECT idrango FROM rango WHERE idrango=_newID;
END //

当我像这样运行它时:

代码语言:javascript
复制
CALL c_ranges("My range",0,10.3)

它插入同一条记录两次,但第二次插入的id加1。

这是使用存储过程多次尝试插入后的表内容。

第一次尝试:call c_Ranges("first range",0,0)

第二次尝试:call c_Ranges("second range",0,0)

第三次尝试:call c_Ranges("third range",0,0)

我真的很困惑,谁能告诉我这是怎么回事?

EN

回答 1

Stack Overflow用户

发布于 2018-07-07 02:54:40

我最近遇到了这种情况。发生在我身上的是,由于我自己的逻辑,我的代码中调用存储过程的方法执行了两次。我知道,这很愚蠢,但确实是这样!

我的验证将评估存储过程响应的结果,并据此管理检索空JSON或响应JSON的流程。我的错误是运行方法两次,而不是存储响应,然后运行验证。是这样的..。

我做错了什么。

代码语言:javascript
复制
return (string.IsNullOrEmpty(data.callProcedure("copyData")) ? "{}" : data.callProcedure("copyData"));

我应该做的事!

代码语言:javascript
复制
string response = data.callProcedure("copyData");
return (string.IsNullOrEmpty(response) ? "{}" : response));

希望它能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43135113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档