모르는 수익률을 유지,하지만 난 다음 실행 ... 출력 매개 변수로 0을 받고 을 유지하고있어 :MySQL의 절차는 왜 0
INSERT INTO users (first_name, last_name, email, image, date_of_registration)
VALUES ("xx", "xx", "xxx", null, sysdate());SELECT LAST_INSERT_ID();
내가 좋은 결과를 얻었다 (! = 0) PersistentConnections
이 true
으로 설정되어 있다고 가정합니다. 이 문제를 일으킬 수있는 다른 구성은 무엇입니까?
절차
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;
자바
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");
당신은 기본적으로 프로 시저를 호출하는 경우도 예상되는 결과를 얻을 수 있습니까? 그리고 자바 내에서 insert를 실행하고 last_insert_id()를 선택하면 예상 결과도 얻게됩니까? – slowy
좋은 지적은 ... –