--小测:输出各部门员工的部门名称和工号、姓名,工资。
要求:
各部门工资最高的放在前面
在“DALLAS”地方的部门名称后加上“*”。
·三种实现方式
1 通过显式游标
2 通过FOR循环
3 通过动态SQL方式
显示游标
declare type emp_dept is record( name dept.dname%type, loc dept.loc%type, empno emp.empno%type, ename emp.ename%type, sal emp.sal%type); emp_table emp_dept; cursor cur_emp is select d.dname, d.loc, e.empno, e.ename, e.sal from emp e, dept d where d.deptno = e.deptno order by e.deptno, e.sal desc; begin open cur_emp; fetch cur_emp into emp_table; loop if emp_table.loc = 'DALLAS' THEN dbms_output.put_line(emp_table.loc || '*' || '-->' || emp_table.name || '-->' || emp_table.empno || '-->' || emp_table.sal); else dbms_output.put_line(emp_table.loc || '-->' || emp_table.name || '-->' || emp_table.empno || '-->' || emp_table.sal); end if; fetch cur_emp into emp_table; exit when cur_emp%notfound; end loop; close cur_emp; end; ----不用if else begin for x in (select(case when d.loc='DALLAS' then d.loc||'*' else d.loc end),d.dname,e.empno,e.ename,e.sal from emp e,dept d where d.deptno=e.deptno order by e.deptno,e.sal desc) loop dbms_output.put_line(x.loc||'-->'||x.dname||'-->'||x.empno||'-->'||x.sal); end loop; END;
for循环
begin for x in (select d.dname,d.loc,e.empno,e.ename,e.sal from emp e,dept d where d.deptno=e.deptno order by e.deptno,e.sal desc) loop if x.loc='DALLAS' then x.loc:=x.loc||'*'; end if; dbms_output.put_line(x.loc||'-->'||x.dname||'-->'||x.empno||'-->'||x.sal); end loop; END;
动态sql
<span style="background-color: rgb(255, 255, 255);">declare cursor cur_emp is select d.dname, d.loc, e.empno, e.ename, e.sal from emp e, dept d where d.deptno = e.deptno order by e.deptno, e.sal desc; type emp_table_type is table of cur_emp%rowtype index by binary_integer; emp_table emp_table_type; str_sql varchar2(1000); begin str_sql := 'select d.dname, d.loc, e.empno, e.ename, e.sal from emp e, dept d where d.deptno = e.deptno order by e.deptno, e.sal desc'; execute immediate str_sql bulk collect into emp_table; for i in 1 .. emp_table.count loop if emp_table(i).loc = 'DALLAS' THEN dbms_output.put_line(emp_table(i).loc || '*' || '-->' || emp_table(i).dname || '-->' || emp_table(i).empno || '-->' || emp_table(i).sal); else dbms_output.put_line(emp_table(i).loc || '-->' || emp_table(i).dname || '-->' || emp_table(i).empno || '-->' || emp_table(i).sal); end if; end loop; end;</span>
相关推荐
在SQL Server数据库管理系统中,事务和游标是两个非常重要的概念,它们对于数据操作和处理具有深远的影响。本文将深入探讨这两个主题,并解释如何利用它们解决日常数据库管理中遇到的复杂问题。 首先,我们来谈谈...
**一、SQL Server事务** 事务是数据库操作的基本单元,它包含了对数据库的一系列相关操作。这些操作要么全部执行,要么全部不执行,确保了数据的一致性和完整性。SQL Server中的事务主要有三种类型:自动提交事务、...
下面我们将深入探讨在SQL Server 2005中操作游标的详细步骤和关键知识点。 1. **游标类型**: SQL Server 2005提供了四种类型的游标: - **静态游标**:创建时一次性加载所有数据,期间数据集内的变化不会反映到...
在SQL Server中,存储过程和游标是两个重要的数据库编程元素,它们对于数据操作和管理起着关键作用。本文将深入探讨这两个概念,以及如何在实际应用中有效地使用它们。 **存储过程(Stored Procedures)** 存储...
游标和事务是 SQL Server 中两个非常重要的概念。合理地使用游标可以帮助开发者更灵活地处理数据,而事务则能确保数据的完整性和一致性。在实际应用中,根据具体的业务需求选择合适的使用方式非常重要。
在提供的示例文件`sqlserver2005_procedure_cursor_sample_20101015.sql`中,很可能是包含了存储过程的定义,这些存储过程可能涉及到游标的使用,甚至游标嵌套,以解决特定的业务问题。通常,这样的示例会展示如何在...
**MS SQL SERVER 游标和锁详解** 在MS SQL SERVER中,游标和锁是数据库管理中的重要概念,它们在处理复杂数据操作和确保数据一致性方面发挥着关键作用。 **游标** 游标,顾名思义,就像指针一样在结果集上移动,...
在SQL Server中,游标是一种数据处理工具,它允许我们逐行处理查询结果集,而不仅仅是一次性返回所有数据。游标对于那些需要按顺序处理数据、分步操作或逐条检查结果的应用场景非常有用。本篇文章将深入探讨SQL ...
【SQL深入 事务与游标编程】 事务是数据库操作的核心概念...总结来说,事务和游标是SQL编程中的关键概念,用于确保数据完整性并允许对结果集进行精细化操作。掌握这两个概念对于任何数据库开发者来说都是至关重要的。
带事物的游标循环,循环已有table,来实现游标循环,如有错误可以有效地回滚,对于初学者还是有所帮助。
在SQL Server中,事务、游标、存储过程和触发器是数据库管理中不可或缺的重要概念,它们各自扮演着关键角色,确保数据的完整性和一致性。 **事务(Transactions)**是数据库操作的基本单位,它保证了一组操作要么...
Sql Server也支持局部游标和全局游标。 - **局部游标**:只在其声明的范围内有效,即在定义它的批处理、存储过程或触发器内部可用。一旦执行完包含游标声明的批处理,游标就会被关闭并释放资源。 - **全局游标**:...
SQL Server Native Client 10.0 的OLE DB提供者支持多种特性,如事务、并发控制、数据类型转换和错误处理。通过OLE DB,开发者可以直接操作数据库对象,如表、视图、存储过程,并能利用SQL Server特有的特性,如XML...
本章节的内容主要围绕事务、游标和锁三个数据库操作相关的知识点进行展开,目的是帮助读者深入理解这三个概念,并掌握它们的使用方法。 事务是数据库管理系统中一个非常基础且关键的概念。在数据库操作中,事务是...
### SQL Server 2000 事务处理详解 #### 一、事务概念及重要性 在数据库管理系统(DBMS)中,事务(Transaction)是...通过本文的详细介绍,希望能够帮助开发者更好地理解和应用 SQL Server 2000 中的事务管理功能。
它提供了基本的JDBC连接功能,支持JDBC 4.0标准,能够处理大数据量的读写操作,支持游标、预编译语句以及事务管理等。 4. **jb51.net.txt 和 更多软件下载.url**: 这两个文件可能是提供额外信息或链接的资源。`jb...
此外,它还包含处理大型对象(如BLOB和CLOB)、SQL Server的日期和时间类型、以及一些高级特性(如游标、存储过程和事务管理)的类和方法。 3. msutil.jar: 这个文件主要包含一些实用工具类,用于辅助连接管理和...
此外,它还包含了处理SQL Server特有语法、事务管理、游标、批处理等功能的类。 3. `smuti.jar`:"muti"可能代表多线程或多用途,这个文件可能包含了用于多线程环境下的工具和类,或者是一些通用的实用工具类。它...