MySQL while迴圈(儲存過程 函式)

2021-10-10 22:50:59 字數 2850 閱讀 6487

-- ----------------------------

-- table structure for students

-- ----------------------------

drop table if exists `students`;

create table `students` (

`id` int not null auto_increment comment '主鍵id',

`name` varchar(255) character set utf8 collate utf8_general_ci not null comment '姓名',

`code` varchar(20) character set utf8 collate utf8_general_ci not null comment '學號',

`class` varchar(255) character set utf8 collate utf8_general_ci not null default '一班' comment '所在班級',

primary key (`id`)

) engine=innodb auto_increment=5 default charset=utf8;

-- ----------------------------

-- records of students

-- ----------------------------

insert into `students` values ('1', '張三', '202001001', '一班');

insert into `students` values ('2', '李四', '202001002', '一班');

insert into `students` values ('3', '王五', '202001003', '一班');

insert into `students` values ('4', '趙六', '202001004', '一班');

示意圖:

drop procedure if exists insertstudents; # 如果存在test儲存過程則刪除

create procedure insertstudents() # 建立無參儲存過程,名稱為insertstudents

begin

declare i int; # 申明變數

set i = 0; # 變數賦值

while i<5 do # 結束迴圈的條件: 當i大於5時跳出while迴圈

insert into students(name, code, class) values('***', '2020010' + i + 10, '一班'); # 往students表新增資料

set i = i+1; # 迴圈一次,i加1

end while; # 結束while迴圈

select * from sudents; # 檢視students表資料

end $$ # 結束定義語句

delimiter ; # 重新將分隔符設定為;

執行結果:

call insertstudents();  #呼叫儲存過程

drop procedure insertstudents;  #刪除儲存過程
set global log_bin_trust_function_creators=true;

delimiter $$

drop function if exists insertstudents; # 如果存在insertstudents函式則刪除

create function insertstudents(i int(10)) returns int(10) # 建立函式 學習while迴圈的用法

begin

while i<5 do # 結束迴圈的條件: 當i大於5時跳出while迴圈

insert into students(name, code, class) values('***', '2020010' + i + 10, '一班'); # 往students表新增資料

set i = i+1; # 迴圈一次,i加1

end while; # 結束while迴圈

return (select count(*) from students);

end $$

delimiter ;

執行結果:

select insertstudents(3);   #呼叫函式

執行結果:

drop function insertstudents;    #刪除函式

mysql迴圈(儲存過程)

delimiter drop procedure if exists test create procedure test begin declare i int declare j int set i 11235 set j 02011200 while i 15236 do insert int...

迴圈佇列(即順序儲存的佇列,元素迴圈儲存)

在邏輯上把順序儲存的佇列想象成乙個環,就是迴圈佇列。迴圈佇列仍是順序儲存,只是元素可以迴圈儲存在給定的儲存空間。前篇文章,順序儲存佇列基本操作 所描述的佇列的儲存空間只可以使用一次,在一些元素出隊之後,空出來的空間沒有辦法再次儲存,造成浪費,所以更多選擇迴圈佇列。兩者的記憶體中的儲存一樣,只是邏輯上...

mysql while迴圈多輸出一行原因解析

有這樣乙個儲存過程 drop procedure if exists tmall test delimiter create procedure tmall test begin declare done tinyint default 0 declare u id int 11 declare c...