[英]error code 1414 occurs in mysql when i call stored procedure with ouput parameter
[英]It occurs #1054 Error when I call procedure in mysql
CREATE PROCEDURE test_proc (in name varchar(100),out return_msg varchar(3000))
BEGIN
BEGIN
DECLARE v_return_msg VARCHAR(3000); -- return message
DECLARE v_error_flag INT DEFAULT 0;
DECLARE EXIT HANDLER FOR SQLEXCEPTION SET v_error_flag = -1;
START TRANSACTION;
INSERT INTO `tablename` (name, value) VALUES (name, 'Test2');
END;
IF v_error_flag < 0 THEN
ROLLBACK;
CALL DBMS_OUTPUT.PUT_LINE('Error : ' || mysql_error );
SELECT * FROM INSERT_INFO; -- UPDATE_TABLE_USED
SHOW ERRORS;
ELSE
COMMIT;
CALL DBMS_OUTPUT.PUT_LINE('Sucess : ' || sqlerrm );
SELECT 'Process succeed!!!';
END IF;
END
這是我的mysql查詢(過程)。
但是,當我致電我的程序時,它發生錯誤。
MySQL消息:#1054-“字段列表”中的未知列“ v_error_flag”
我認為IF語句發生錯誤。
IF v_error_flag < 0 THEN
但是,我不知道該如何解決。
v_error_flag
在BEGIN
... END
。
IF v_error_flag < 0 THEN
條件超出了塊范圍,因此無法識別v_error_flag
並引發錯誤。
您需要在BEGIN
... END
塊內移動IF v_error_flag < 0 THEN
條件。
要么
只需刪除或注釋第二BEGIN
... END
塊為:
CREATE PROCEDURE test_proc (in name varchar(100),out return_msg varchar(3000))
BEGIN
-- BEGIN <-- remove/comment this
DECLARE v_return_msg VARCHAR(3000); -- return message
DECLARE v_error_flag INT DEFAULT 0;
DECLARE EXIT HANDLER FOR SQLEXCEPTION SET v_error_flag = -1;
START TRANSACTION;
INSERT INTO `tablename` (name, value) VALUES (name, 'Test2');
-- END; <-- remove/comment this
IF v_error_flag < 0 THEN
ROLLBACK;
CALL DBMS_OUTPUT.PUT_LINE('Error : ' || mysql_error );
SELECT * FROM INSERT_INFO; -- UPDATE_TABLE_USED
SHOW ERRORS;
ELSE
COMMIT;
CALL DBMS_OUTPUT.PUT_LINE('Sucess : ' || sqlerrm );
SELECT 'Process succeed!!!';
END IF;
END
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.