从一个小例子认识SQL游标(下)

简介: SQL数据库开发

3、一个有意思的小例子

虽然知道了游标的概念和基本用法,但对于什么时候用游标还很模糊,甚至误认为游标可以被子查询所代替。直到遇到了这个有意思的小例子:表结构如下:

1.jpg

题目要求是:列出从事同一种工作但属于不同部门的雇员的不同组合

即如下结果:

2.jpg

在想尽了子查询、表连接、建临时表等等办法之后,我发现我遇到了一个不可逾越的障碍:无法排除两个名字组合的唯一性。即:我得到的结果可能是如下

3.jpg

最终我们用游标,代码如下:

SELECT A.Ename AS ANAME, B.Ename AS BNAME
INTO #t
FROM EMP A
JOIN EMP B
ON A.job = B.job AND A.deptNo <> B.deptNo and A.Ename<>b.Ename
ORDER BY ANAME
--DROP TABLE #t
DECLARE TEST_CURSOR CURSOR FOR
SELECT ANAME, BNAME FROM #t
OPEN TEST_CURSOR
 DECLARE @ANAME VARCHAR(20)
 DECLARE @BNAME VARCHAR(20)
 FETCH NEXT FROM TEST_CURSOR INTO @ANAME, @BNAME
 DELETE FROM #t WHERE ANAME=@BNAME AND BNAME=@ANAME
 WHILE @@FETCH_STATUS = 0
 BEGIN
   FETCH NEXT FROM TEST_CURSOR INTO @ANAME, @BNAME
   DELETE FROM #t WHERE ANAME=@BNAME AND BNAME=@ANAME
 END
CLOSE TEST_CURSOR
DEALLOCATE TEST_CURSOR
SELECT * FROM #t


以上就是游标的一些简单介绍,其实工作中不到万不得已,一般不会使用游标,因为对于数据量大的表使用游标,那执行效率绝对是个灾难。


SQL讲究的是简单才是王道,切勿为了追求什么骚操作把数据库给整垮了,切记!


                                                     ——End——


相关文章
|
7月前
|
存储 SQL 数据库
数据库sql语句-----游标和存储过程
数据库sql语句-----游标和存储过程
61 1
|
6月前
|
SQL 存储 Java
SQL游标的应用场景及使用方法
SQL游标的应用场景及使用方法
|
5月前
|
SQL 存储 搜索推荐
SQL游标的原理与在数据库操作中的应用
SQL游标的原理与在数据库操作中的应用
|
5月前
|
SQL Java 数据库连接
SQL游标的基本使用方法与示例
SQL游标的基本使用方法与示例
|
5月前
|
SQL 存储 Java
SQL游标的应用场景及使用方法
SQL游标的应用场景及使用方法
|
6月前
|
SQL 程序员 数据处理
探索SQL游标
探索SQL游标
|
6月前
|
存储 SQL 关系型数据库
MySQL游标的创建与使用——Baidu Comate全文SQL-AI生成
MySQL游标的创建与使用——Baidu Comate全文SQL-AI生成
56 0
|
7月前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL游标自定义异常:数据探险家的“专属警示灯”
【4月更文挑战第19天】Oracle PL/SQL中的游标自定义异常是处理数据异常的有效工具,犹如数据探险家的警示灯。通过声明异常名(如`LOW_SALARY_EXCEPTION`)并在满足特定条件(如薪资低于阈值)时使用`RAISE`抛出异常,能灵活应对复杂业务规则。示例代码展示了如何在游标操作中定义和捕获自定义异常,提升代码可读性和维护性,确保在面对数据挑战时能及时响应。掌握自定义异常,让数据管理更从容。
|
7月前
|
SQL Oracle 安全
Oracle的PL/SQL游标异常处理:从“惊涛骇浪”到“风平浪静”
【4月更文挑战第19天】Oracle PL/SQL游标异常处理确保了在数据操作中遇到的问题得以优雅解决,如`NO_DATA_FOUND`或`TOO_MANY_ROWS`等异常。通过使用`EXCEPTION`块捕获并处理这些异常,开发者可以防止程序因游标问题而崩溃。例如,当查询无结果时,可以显示定制的错误信息而不是让程序终止。掌握游标异常处理是成为娴熟的Oracle数据管理员的关键,能保证在复杂的数据环境中稳健运行。
|
7月前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL中FOR语句循环游标的奇幻之旅
【4月更文挑战第19天】在Oracle PL/SQL中,FOR语句与游标结合,提供了一种简化数据遍历的高效方法。传统游标处理涉及多个步骤,而FOR循环游标自动处理细节,使代码更简洁、易读。通过示例展示了如何使用FOR循环游标遍历员工表并打印姓名和薪资,对比传统方式,FOR语句不仅简化代码,还因内部优化提升了执行效率。推荐开发者利用这一功能提高工作效率。