![](/img/trans.png)
[英]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.