diff --git "a/12\346\236\227\344\277\212\344\274\237/1011\346\270\270\346\240\207.md" "b/12\346\236\227\344\277\212\344\274\237/1011\346\270\270\346\240\207.md" new file mode 100644 index 0000000000000000000000000000000000000000..4c3f8d065b11927baac04dda5a31f5a061916aac --- /dev/null +++ "b/12\346\236\227\344\277\212\344\274\237/1011\346\270\270\346\240\207.md" @@ -0,0 +1,72 @@ +1.定义游标 + +declare 游标名称 cursor select_statement + +2.打开游标 + +open 游标名称 + +3.获取游标 + +fetch 结果集 into 变量 + +4.关闭 + +close 游标名称 + + + +1.利用游标,查询并计算出emp表中全公司的总薪资(sal和comm) + +drop procedure UU; +delimiter // +create procedure UU(out n int) +begin + declare s int; + declare c int; + declare i int default 1; + declare num cursor for select sal,ifnull(comm,0) from emp; + declare continue handler for 1329 set i=2; + set n=0; + open num ; +while i=1 do + fetch num into s,c; + set n=n+s+c; +end while; + close num; +end // +delimiter ; +call UU(@nn); +select @nn; + + + +-- 2.利用游标修改表格,如果sal<1000,则删除工资为此值的员工,如果1000 < sal <= 3000,该员工薪资涨100并将该员工的信息放在新表中,否则扣工资100 + +drop procedure II; +delimiter // +create procedure II() +begin + declare id int; + declare nsal int; + declare i int default 1; + declare num1 cursor for select empno,sal from emp; + declare continue handler for 1329 set i=2; + open num1; + create table if not exists xinbiao( + empno int primary key auto_increment, + sal int + ); + while i=1 do + fetch num1 into id,nsal; + if nsal<1000 then delete from emp where empno=id; + elseif 1000=3000 then update emp set sal=sal+100 where empno=id; + insert into xinbiao values(id,nsal); + else update emp set sal=sal-100 where empno=id; + end if; + end while; + close num1; +end // +delimiter ; +call II(); +select * from xinbiao; \ No newline at end of file