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

随心笔谈3年前发布 admin
213 0 0

文章摘要

这篇文章介绍了如何在SQL中使用条件名和条件码来编写procedure,以便根据输入的部门名查询对应的员工信息,并将结果集添加游标。文章中定义了两个procedure:proc22和proc23。 在proc22中,使用了条件名(in_name)作为WHERE子句的一部分,直接指定部门名。程序通过游标从员工表和部门表中查询符合条件的员工信息。程序中还声明了标记值和句柄,用于处理数据未找到的情况。 在proc23中,使用了条件码1329来指定部门名。程序同样使用游标进行查询,并通过全局继续句柄来处理未找到数据的情况。两者的区别主要在于游标处理和继续句柄的实现方式。 文章强调了通过条件名和条件码实现的灵活性和高效性,适用于需要根据外部输入进行动态查询的场景。

– 用条件名
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(‘销售部’);

© 版权声明

相关文章