トランザクションとストアドプロシージャについて学習し始めました。結果セットから値を変数に割り当てるさまざまな方法に慣れ親しんでいます。ここでDECLARE var_CurcId INT DEFAULT 0;
トランザクションまたは変数の宣言エラー
上のエラーを引き起こしている可能性がありますどのような
は、私がこれまで行ってきたものです。
CREATE DEFINER=`root`@`localhost` PROCEDURE `addCurriculumWithSchoolYear`(IN p_subjectName varchar(50), IN p_yrLevel varchar(30), IN p_desc TEXT, IN p_creator varchar(20))
BEGIN
DECLARE hasError BOOL DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET hasError = 1;
DECLARE var_CurcId INT DEFAULT 0;
DECLARE var_syStart INT DEFAULT 0;
DECLARE var_syEnd INT DEFAULT 0;
START TRANSACTION;
-- 1 insert statement to curriculum table
INSERT INTO curriculum(`name`,`yearLevel`,`description`,`creator`)
VALUES(p_subjectName,p_yrLevel,p_desc,p_creator);
-- 2 insert statement to schoolyearcurriculum table
INSERT INTO schoolyearcurriculums(curriculumId,syStart,syEnd)
VALUES(var_CurcId,var_syStart,var_syEnd);
IF `hasError` THEN
ROLLBACK; -- if error occurs to any of the insert, select statements above, undo it
ELSE
COMMIT; -- if all insert, select statement is successful, execute.
SELECT 'Successfully Inserted Information';
END IF;
END;
var_CurcId
変数の宣言にerorrので、私はあなたが私を助けることを願って、私はこれに新たなんだSyntax error: unexpected 'var_CurcId' (identifier)
を言っています。私はまだ:=
演算子とselect into
とset
のような異なる方法を試しています。
ご協力いただきありがとうございます。
ありがとうございました。
ありがとうございました。あなたはそれを解決しました!私はHandlerが変数宣言をしなければならないことは知らなかった。私はすべてのDECLAREステートメントはどこにでも置くことができると思った。私は助けに感謝します。もう一つの学習が私の知識に加わりました。 – p3ace