`
wm920
  • 浏览: 80601 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SQL Server 事务、异常和游标

 
阅读更多

--小测:输出各部门员工的部门名称和工号、姓名,工资。
  要求:
  各部门工资最高的放在前面
  在“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语句

    **一、SQL Server事务** 事务是数据库操作的基本单元,它包含了对数据库的一系列相关操作。这些操作要么全部执行,要么全部不执行,确保了数据的一致性和完整性。SQL Server中的事务主要有三种类型:自动提交事务、...

    在SQLSERVER2005下操作游标

    下面我们将深入探讨在SQL Server 2005中操作游标的详细步骤和关键知识点。 1. **游标类型**: SQL Server 2005提供了四种类型的游标: - **静态游标**:创建时一次性加载所有数据,期间数据集内的变化不会反映到...

    SQL SERVER中的存储过程和游标的使用大综合

    在SQL Server中,存储过程和游标是两个重要的数据库编程元素,它们对于数据操作和管理起着关键作用。本文将深入探讨这两个概念,以及如何在实际应用中有效地使用它们。 **存储过程(Stored Procedures)** 存储...

    Sql Server 游标的使用 事务的使用

    游标和事务是 SQL Server 中两个非常重要的概念。合理地使用游标可以帮助开发者更灵活地处理数据,而事务则能确保数据的完整性和一致性。在实际应用中,根据具体的业务需求选择合适的使用方式非常重要。

    MS SQL Server2005存储过程、游标、游标嵌套综合例子

    在提供的示例文件`sqlserver2005_procedure_cursor_sample_20101015.sql`中,很可能是包含了存储过程的定义,这些存储过程可能涉及到游标的使用,甚至游标嵌套,以解决特定的业务问题。通常,这样的示例会展示如何在...

    MS SQLSERVER游标和锁的课件

    **MS SQL SERVER 游标和锁详解** 在MS SQL SERVER中,游标和锁是数据库管理中的重要概念,它们在处理复杂数据操作和确保数据一致性方面发挥着关键作用。 **游标** 游标,顾名思义,就像指针一样在结果集上移动,...

    sql server 游标试用方法 例子

    在SQL Server中,游标是一种数据处理工具,它允许我们逐行处理查询结果集,而不仅仅是一次性返回所有数据。游标对于那些需要按顺序处理数据、分步操作或逐条检查结果的应用场景非常有用。本篇文章将深入探讨SQL ...

    SQL深入 事务与游标编程

    【SQL深入 事务与游标编程】 事务是数据库操作的核心概念...总结来说,事务和游标是SQL编程中的关键概念,用于确保数据完整性并允许对结果集进行精细化操作。掌握这两个概念对于任何数据库开发者来说都是至关重要的。

    游标循环—事务.sql

    带事物的游标循环,循环已有table,来实现游标循环,如有错误可以有效地回滚,对于初学者还是有所帮助。

    SQL+Server的事务、游标、存储过程及触发器.doc

    在SQL Server中,事务、游标、存储过程和触发器是数据库管理中不可或缺的重要概念,它们各自扮演着关键角色,确保数据的完整性和一致性。 **事务(Transactions)**是数据库操作的基本单位,它保证了一组操作要么...

    Sql Server临时表和游标的使用小结

    Sql Server也支持局部游标和全局游标。 - **局部游标**:只在其声明的范围内有效,即在定义它的批处理、存储过程或触发器内部可用。一旦执行完包含游标声明的批处理,游标就会被关闭并释放资源。 - **全局游标**:...

    SQL Server Native Client 10.0 驱动

    SQL Server Native Client 10.0 的OLE DB提供者支持多种特性,如事务、并发控制、数据类型转换和错误处理。通过OLE DB,开发者可以直接操作数据库对象,如表、视图、存储过程,并能利用SQL Server特有的特性,如XML...

    SQL server中的事务

    本章节的内容主要围绕事务、游标和锁三个数据库操作相关的知识点进行展开,目的是帮助读者深入理解这三个概念,并掌握它们的使用方法。 事务是数据库管理系统中一个非常基础且关键的概念。在数据库操作中,事务是...

    sqlserver2000事务问题.txt

    ### SQL Server 2000 事务处理详解 #### 一、事务概念及重要性 在数据库管理系统(DBMS)中,事务(Transaction)是...通过本文的详细介绍,希望能够帮助开发者更好地理解和应用 SQL Server 2000 中的事务管理功能。

    sqlserver2008 jar驱动(Microsoft SQL Server JDBC Driver).rar

    它提供了基本的JDBC连接功能,支持JDBC 4.0标准,能够处理大数据量的读写操作,支持游标、预编译语句以及事务管理等。 4. **jb51.net.txt 和 更多软件下载.url**: 这两个文件可能是提供额外信息或链接的资源。`jb...

    sqlserver驱动包

    此外,它还包含处理大型对象(如BLOB和CLOB)、SQL Server的日期和时间类型、以及一些高级特性(如游标、存储过程和事务管理)的类和方法。 3. msutil.jar: 这个文件主要包含一些实用工具类,用于辅助连接管理和...

    SQLserver驱动jar包

    此外,它还包含了处理SQL Server特有语法、事务管理、游标、批处理等功能的类。 3. `smuti.jar`:"muti"可能代表多线程或多用途,这个文件可能包含了用于多线程环境下的工具和类,或者是一些通用的实用工具类。它...

Global site tag (gtag.js) - Google Analytics