0
USE COLLEGE;
DROP PROCEDURE IF EXISTS Fix_Egghead1;
DELIMITER $$
CREATE PROCEDURE Fix_Egghead1()
BEGIN
-- Setup error handing
DECLARE errorOccurred INT DEFAULT FALSE;
DECLARE errorMessage VARCHAR(255);
-- Called when an error occurs
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
BEGIN
SET errorOccurred = TRUE;
GET DIAGNOSTICS CONDITION 1
errorMessage = MESSAGE_TEXT;
END ;
START TRANSACTION;
DELETE FROM Student
WHERE Student.ID= 57;
INSERT INTO Faculty(LastName, FirstName, Email, HireDate, Salary, DepartmentID)
VALUES('Egghead', 'Eduardo', '[email protected]', 115000, 1);
IF errorOccurred = TRUE THEN
ROLLBACK;
SELECT CONCAT('The faculty member wasn't succesfully added to the Faculty table:' , errorMessage) AS Results;
ELSE
COMMIT;
SELECT 'The faculty member was successfully added to the Faculty table.';
END IF;
END
$$
DELIMITER ;
CALL Fix_Egghead1();
我正在創建中,我創建了兩種輸出是否加入成功或未成功加入到教師表的教員存儲過程的事務回滾,但問題是我的代碼沒有打印出需要打印的錯誤信息。我知道這不是一個成功的交易,因爲教員Eduardo Egghead仍然有一個學生的註冊記錄。我怎麼解決這個問題?但是,我確實想出了一個解決方案,解決方案是擺脫CONCAT函數,只需使用SELECT語句在錯誤消息中寫入,就像我對提交部分所做的那樣。還有其他建議嗎?
難道它甚至與那些錯位的報價編譯? – mustaccio
'''wasn't'''''''''''''''' –
@ mustaccio是的,它的確如此。這不是我的問題。請再次閱讀說明。你認爲你可以幫忙嗎? – User445555