【发布时间】:2021-11-23 10:18:16
【问题描述】:
所以我想计算用户输入数字的阶乘。我需要在触发器中使用 WHILE 循环来执行此操作。我知道这种方法非常违反直觉,但这是我们被指示这样做的方式。我想出的是,用户将在以下格式的表格中输入他们的数据:
create table factorial(
n int not null,
fact int default 1,
primary key(n));
用户将只输入数字“n”,随后将激活一个触发器,该触发器将计算阶乘并将其插入相应的“事实”单元格。我想出的触发器是这样的:
delimiter //
create trigger fact_calc
before insert on factorial for each row
begin
declare f int;
set f=1;
declare c int;
set c=1;
while(c<=new.n)
do
set f=f*c;
end while;
insert into factorial(fact) values(f);
end;
//
但这会在 declare c int; 行引发语法错误,我似乎无法弄清楚原因。任何帮助将不胜感激。
我使用的是在 Windows 10 上运行的 MariaDB 10.6 客户端。
【问题讨论】:
标签: mysql while-loop triggers mariadb