繁体   English   中英

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

[英]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_flagBEGIN ... 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM