SQL语法中的错误,MariaDB服务器版本用于在"创建过程pro()"附近使用的正确语法


DELIMITER $$
use adventureworks
CREATE PROCEDURE pro()
BEGIN
DECLARE i int DEFAULT 0;

WHILE i <= 50 DO
INSERT INTO salesorderheader(SalesOrderID, RevisionNumber, OrderDate)
VALUES (i, 1, "2001-07-01 00:00:00");
SET i = i + 1;
END WHILE;
END $$
call pro()
DELIMITER ;

每个语句后面都需要一个终止符。usecall语句没有一个。

您正在切换脚本开头的分隔符,因此语法为:

delimiter $$
use adventureworks$$
create procedure pro()
begin 
...
end$$
call pro()$$
delimiter ;

一种更典型的方法是仅更改过程定义的分隔符:

use adventureworks;
delimiter $$
create procedure pro()
begin 
...
end$$
delimiter ;
call pro();

附带说明:如果您运行的是MariaDB 10.3或更高版本,您可以使用递归查询而不是循环:

insert into salesorderheader(SalesOrderID, RevisionNumber, OrderDate)
with cte as (
select 1 as i 
union all select i + 1 from cte where i < 50
)
select i, 1, '2001-07-01'
from cte 

相关内容

  • 没有找到相关文章

最新更新