首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL过程保持返回0

MySQL过程保持返回0
EN

Stack Overflow用户
提问于 2017-03-24 14:06:38
回答 1查看 57关注 0票数 1

不知道为什么,但我一直把0作为输出参数.我运行了以下命令:

代码语言:javascript
复制
INSERT INTO users (first_name, last_name, email, image, date_of_registration)
 VALUES ("xx", "xx", "xxx", null, sysdate());SELECT LAST_INSERT_ID();

而且我得到了比我假设的PersistentConnections设置为true的好结果(!= 0)。还有其他可能导致这件事的秘密吗?

操作步骤

代码语言:javascript
复制
DROP PROCEDURE IF EXISTS partners.create_user;
CREATE DEFINER=`partnersmaster`@`%` PROCEDURE `create_user`(
  IN p_first_name NVARCHAR(30),
  IN p_last_name NVARCHAR(30),
  IN p_email NVARCHAR(100),
  IN p_image NVARCHAR(200),
  IN p_date_of_registration TIMESTAMP,
  OUT p_user_id INT
  )
BEGIN
    INSERT INTO users (first_name, last_name, email, image, date_of_registration)
    VALUES (p_first_name, p_last_name, p_email, p_image, p_date_of_registration);
    SET @p_user_id = LAST_INSERT_ID();
END;

Java

代码语言:javascript
复制
conn = engine.getDal().getConnection();
st = conn.prepareCall("{call partners.create_user(?,?,?,?,?,?)}");
st.setString("p_first_name", user.getFirstName());
st.setString("p_last_name", user.getLastName());
st.setString("p_email", user.getEmail());
if(user.getImage() != null)
    st.setString("p_image", user.getImage());
else
    st.setNull("p_image", Types.NVARCHAR);
st.setTimestamp("p_date_of_registration", new Timestamp(System.currentTimeMillis()));
st.registerOutParameter("p_user_id", Types.INTEGER);
st.execute();
userId = st.getInt("p_user_id");
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-24 15:03:45

过程参数和会话变量- p_user_id@p_user_id之间存在一个问题.在您的示例中,没有设置p_user_id

用这种方式改变代码-

代码语言:javascript
复制
BEGIN
  ...
  ...
  ...
  SET p_user_id = LAST_INSERT_ID();
END;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43001596

复制
相关文章

相似问题

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