insert 문이 모두 성공적으로 수행되어 테이블 registration
및 registration_header
에 올바르게 삽입됩니다. 내 유일한 문제는 myOutParameter
통해 올바른 ID를 반환하지 않습니다.mysql의 out 매개 변수에 변수 값 할당
그것은 SET myOutParameter = @var_registrationId
내 구문이 잘못 사용 @var_registrationId
의 값을 따기 아니에요? 내가 그것을 설정할 수 있다는 것을 알고있다 SET
CREATE DEFINER=`root`@`localhost` PROCEDURE `register`(IN parameter1 INT, IN parameter2 INT, OUT myOutParameter INT)
BEGIN
DECLARE var_registrationId INT;
DECLARE EXIT HANDLER FOR sqlexception
BEGIN
ROLLBACK;
RESIGNAL;
END;
START TRANSACTION;
-- first insert to registration table which generates a Primary key auto increment id
INSERT INTO registration(col1,col2) VALUES (parameter1, parameter2);
SELECT LAST_INSERT_VALUE() INTO var_registrationId; -- id of insert on registration table
insert into registration_header(registrationId,column)
VALUES(@var_registrationId,parameter1);
-- the next statement is not assigning the value of var_registrationId to the myOutParameter using SET
SET myOutParameter = @var_registrationId; -- this isn't working and returns 0
COMMIT;
END
나는 무엇이 잘못 된 것인지 모른다.
도와 주시면 감사하겠습니다. 사전에
감사
'var_registrationId'는'@ var_registrationId'와 다릅니다. – Blank
지금 이해하십니까? – Drew
@Drew @ 기호를 제거했습니다. 사용 방법 및 사용시기와 @ 기호가 어떻게 다른지 혼란스러워합니다. – p3ace