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