簡體   English   中英

執行查詢時發生錯誤

[英]Error occurred while executing query

我需要在數據庫上執行腳本。 該腳本包含一個很大的PL / SQL塊。 我正在嘗試使用phpmyadmin執行腳本,但是我認為我做錯了,因為我總是遇到錯誤。

這是我要執行的示例:

SET AUTOCOMMIT=0;
DROP PROCEDURE IF EXISTS proceduretest;
delimiter //
CREATE PROCEDURE proceduretest()
BEGIN
    SELECT @tableexist:=COUNT(*) FROM information_schema.TABLES WHERE TABLE_NAME = 'tabletest';
    IF @tableexist > 0 THEN
        INSERT INTO docs_id_entidades VALUES(56, 'test IF TRUE', 64);
    ELSE
        INSERT INTO docs_id_entidades VALUES(56, 'test IF FALSE', 64);
    END IF;
EXCEPTION
    WHEN OTHERS THEN
        RAISE_APPLICATION_ERROR(3001, 'Some error ocurred. Implicit rollback');
END;
//
delimiter ;
CALL proceduretest();
COMMIT;
DROP PROCEDURE IF EXISTS proceduretest;

這是錯誤:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(3001, 'Some error ocurred. Implicit r' at line 10  

正如VMai在他的評論中所說,問題是我沒有使用MySQL sintax。

該代碼的正確sintax是:

SET AUTOCOMMIT=0;
DROP PROCEDURE IF EXISTS proceduretest;
delimiter //
CREATE PROCEDURE proceduretest()
BEGIN
    DECLARE tableexist INT(1);
    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION ROLLBACK;
    SELECT COUNT(*) INTO tableexist FROM information_schema.TABLES WHERE TABLE_NAME = 'tabletest';
    IF tableexist > 0 THEN
        INSERT INTO docs_id_entidades VALUES(56, 'test IF TRUE', 64);
    ELSE
        INSERT INTO docs_id_entidades VALUES(56, 'test IF FALSE', 64);
    END IF;
END;
//
CALL proceduretest()//
COMMIT//
DROP PROCEDURE IF EXISTS proceduretest

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM