SQL语句没有流程控制语句,无法实现复杂的应用。PL/SQL语言时将结构化查询与数据库过程控制结合为一体的强大语言。PL/SQL不但支持更多的数据类型,拥有变量声明、赋值语句,而且有选择、循环等流程控制语句。存储过程是一组为了完成特定功能的PL/SQL语句集,经编译后存储在数据库中,用户可以重复该存储过程,这样可以降低数据开发人员的工作量。
一、创建一个stu表
mysql> create table stu( -> id int (10) primary key not null unique, -> name varchar(50) not null, -> class varchar(50) not null);
二、给stu表添加数据并查看stu表结构
mysql> insert into stu value(1,"Lucy","class1"), -> (2,"Tom","class1"), -> (3,"Rose","class2");
三、查看stu表数据
四、创建存储过程addcount能够获取表stu中的记录数和id的和,使用到了变量的声明、光标、流程控制等知识点。
mysql> create procedure addcount(out count int) -> begin -> declare itmp int; -> declare cur_id cursor for select id from stu; -> declare exit handler for not found close cur_id; -> select count(*) into count from stu; -> set @sum=0; -> open cur_id; -> repeat -> fetch cur_id into itmp; -> if itmp<10 -> then set @sum=@sum+itmp; -> end if; -> until 0 end repeat; -> close cur_id; -> end;/ Query OK, 0 rows affected (0.02 sec)
五、调用存储过程并查看数据
从调用存储过程的结果可以看出,stu表中共有三条数据,id之和为6。这个存储过程创建了一个cur_id的光标,使用这个光标来获取每条记录的id,使用repeat循环语句来实现所有id号相加。