簡體   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