gpt4 book ai didi

php - 当我在 mysql 中调用过程时发生 #1054 错误

转载 作者:行者123 更新时间:2023-11-29 06:10:43 24 4
gpt4 key购买 nike

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 Message: #1054 - Unknown column 'v_error_flag' in 'field list'

我认为 IF 语句发生错误。

IF v_error_flag < 0 THEN 

但是,我不知道该如何解决。

最佳答案

v_error_flagBEGIN 中声明... END .

IF v_error_flag < 0 THEN条件不正常,所以 v_error_flag无法识别并引发错误。

您需要移动 IF v_error_flag < 0 THEN BEGIN 内部状况... END block 。

只需删除或评论第二个 BEGIN ... END block 为:

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

关于php - 当我在 mysql 中调用过程时发生 #1054 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38390162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com