创建 mysql 过程
Create mysql procedure
我正在尝试在 mysql 数据库中创建过程此过程会将帐户从 table 移动到另一个
这是我的程序,但语法错误
CREATE PROCEDURE radius.archive_acct()
BEGIN
INSERT INTO radacctold
SELECT * FROM radacct
WHERE acctstoptime > 0
AND date(acctstarttime) < (CURDATE() - INTERVAL 3 MONTH);
DELETE FROM radacct
WHERE acctstoptime > 0
AND date(acctstarttime) < (CURDATE() - INTERVAL 3 MONTH);
END
这是错误
#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 '' at line 6
您应该将正常的定界符更改为其他值,然后创建并结束过程并重置定界符。
DELIMITER //
CREATE PROCEDURE radius.archive_acct()
BEGIN
INSERT INTO radacctold
SELECT * FROM radacct
WHERE acctstoptime > 0 AND date(acctstarttime) < (CURDATE() - INTERVAL 3 MONTH);
DELETE FROM radacct
WHERE acctstoptime > 0
AND date(acctstarttime) < (CURDATE() - INTERVAL 3 MONTH);
END //
DELIMITER ;
有关更多见解,请参阅:Getting Started with MySQL Stored Procedures
存储过程结构是为支持多个可执行语句而设计的。
每个语句都需要一个终止符,默认情况下是分号。 ;
。
需要指示mysql引擎立即停止执行每个终止的语句,直到主体结构被编译处理。
我们需要一个 DELIMITER
语句来暂时抑制默认终止符。
您的代码没有使用这样的 DELIMITER
。
以下示例将有助于修复您的代码。
-- define the delimiter
delimiter //
--- place here your stored procedure
-- and lastly following line
//
-- reset the delimiter
delimiter ;
在这里阅读我对类似问题的回答:
我正在尝试在 mysql 数据库中创建过程此过程会将帐户从 table 移动到另一个 这是我的程序,但语法错误
CREATE PROCEDURE radius.archive_acct()
BEGIN
INSERT INTO radacctold
SELECT * FROM radacct
WHERE acctstoptime > 0
AND date(acctstarttime) < (CURDATE() - INTERVAL 3 MONTH);
DELETE FROM radacct
WHERE acctstoptime > 0
AND date(acctstarttime) < (CURDATE() - INTERVAL 3 MONTH);
END
这是错误
#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 '' at line 6
您应该将正常的定界符更改为其他值,然后创建并结束过程并重置定界符。
DELIMITER //
CREATE PROCEDURE radius.archive_acct()
BEGIN
INSERT INTO radacctold
SELECT * FROM radacct
WHERE acctstoptime > 0 AND date(acctstarttime) < (CURDATE() - INTERVAL 3 MONTH);
DELETE FROM radacct
WHERE acctstoptime > 0
AND date(acctstarttime) < (CURDATE() - INTERVAL 3 MONTH);
END //
DELIMITER ;
有关更多见解,请参阅:Getting Started with MySQL Stored Procedures
存储过程结构是为支持多个可执行语句而设计的。
每个语句都需要一个终止符,默认情况下是分号。 ;
。
需要指示mysql引擎立即停止执行每个终止的语句,直到主体结构被编译处理。
我们需要一个 DELIMITER
语句来暂时抑制默认终止符。
您的代码没有使用这样的 DELIMITER
。
以下示例将有助于修复您的代码。
-- define the delimiter
delimiter //
--- place here your stored procedure
-- and lastly following line
//
-- reset the delimiter
delimiter ;
在这里阅读我对类似问题的回答: