正文

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

文章摘要

这篇文章介绍了在数据库中使用`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(‘销售部’);