SQL中的游标、异常处理、存储函数及总结(最新推荐)(sqlserver游标的使用场景)越早知道越好

随心笔谈9个月前发布 admin
207 00
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买

文章摘要

这篇文章介绍了在数据库中使用`proc`(过程)来实现特定功能的代码示例。文章主要讲解了两种不同的`proc`创建方式:一种使用条件名(`proc22`),另一种使用条件码(`proc23`)。两种`proc`的功能相似,都是用于输入一个部门名,并查询该部门员工的编号、名字和薪资。它们都通过游标将查询结果集返回,并在没有找到结果时设置标记位。 文章详细描述了proc的结构,包括定义局部变量、声明游标、处理标记值以及关闭游标的步骤。最后,文章展示了如何调用这两个proc,分别使用 `'销售部'` 作为输入部门名。尽管proc的功能基本相同,但它们在标记值的定义和游标的声明方式上有所不同。

– 用条件名
use test_procedure ;
— 需求:输入一个部门名,查询该部门员工的编号、名字、薪资,将查询的结果集添加游标
delimiter $$
create procedure proc22(in in_name varchar(50))
begin
— 定义局部变量
declare var_empno int;
declare var_ename varchar(50);
declare var_sal decimal(7,2);

— 定义标记值
declare flag int default 1;
— 声明游标
declare my_cursor cursor for
select empno ,ename ,sal from emp e,dept d where d.dname=in_name ;
— 定义句柄,当数据未发现时将标记位设置为0
declare continue handler for not found set flag=0;

— 打开游标
open my_cursor;
— 通过游标获得值
label:loop
fetch my_cursor into var_empno,var_ename,var_sal;
if flag=1 then
select var_empno,var_ename,var_sal;
else
leave label;
end if;
end loop label;
— 关闭游标
close my_cursor;
end $$
delimiter ;

call proc22(‘销售部’);

— 用条件码
use test_procedure ;
— 需求:输入一个部门名,查询该部门员工的编号、名字、薪资,将查询的结果集添加游标
delimiter $$
create procedure proc23(in in_name varchar(50))
begin
— 定义局部变量
declare var_empno int;
declare var_ename varchar(50);
declare var_sal decimal(7,2);

— 定义标记值
declare flag int default 1;
— 声明游标
declare my_cursor cursor for
select empno ,ename ,sal from emp e,dept d where d.dname=in_name ;
— 定义句柄,当数据未发现时将标记位设置为0
declare continue handler for 1329 set flag=0;

— 打开游标
open my_cursor;
— 通过游标获得值
label:loop
fetch my_cursor into var_empno,var_ename,var_sal;
if flag=1 then
select var_empno,var_ename,var_sal;
else
leave label;
end if;
end loop label;
— 关闭游标
close my_cursor;
end $$
delimiter ;

call proc23(‘销售部’);

© 版权声明

相关文章