`
wm920
  • 浏览: 77475 次
  • 性别: 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的事务、游标、存储过程及触发器(pdf)

    SQL Server的事务、游标、存储过程及触发器的创建和实例

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

    SQLServer 存储过程 游标的使用方法 事务的使用方法

    SQL Server 事务 游标 基本语法操作实例 全SQL语句

    SQL Server 事务 游标 基本语法操作实例 全SQL语句

    游标循环—事务.sql

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

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

    关键字:事物、游标、存储过程、触发器引言:在关系数据库系统中,事务指的是组成为独立单元的一个或多个SQL操作的可恢复的序列。对数据库的任何一次读或写都是在某次事务内完成的。游标类似一个指针,指向某一个...

    SQL Server 2008宝典

    第4部分为数据库管理篇,介绍如何使用T-SQL程序对数据进行复杂的运算,以及如何使用视图、存储过程、触发器、索引、用户定义数据类型、用户定义函数、全文索引、游标、事务和锁、统计信息和同义词等方面的知识;...

    游标嵌套 STATUS 异常 存储过程

    1,异常处理,事务回滚。 2,错误消息返回。 3,游标嵌套。 4,对于嵌套游标STATUS的互相影响问题的解决办法《注意001和002的注释位置,fetch的位置》。 对于初学者,存储过程重要的几个方面,都有展示到,大虾们请...

    数据库实用教程——SQL Server 2008第11章 事务与游标.ppt

    数据库实用教程——SQL Server 2008第11章 事务与游标

    Microsoft SQL Server 2005技术内幕: T-SQ程序设计.pdf

    该书解释并比较了SQL Server 2000和SQL Server 2005在数据库开发相关问题上的解决方案,深入讨论了SQL Server 2005中新增的T-SQL编程特性,包含了大量的代码示例、表示例和逻辑难题以帮助数据库开发人员和管理员理解...

    SQL Server自定义异常raiserror使用示例

    在使用SQL Server存储过程或者触发器时,通常会使用自定义异常来处理一些特殊逻辑。例如游标的销毁,事务的回滚。接下来将会详细的介绍SQL Server自定义异常的使用。 使用“raiserror”来抛出自定义异常。如下代码:...

    SQL Server 2012从零开始学培训视频和PPT.rar

    第1章初识SQL Server2012.ppt 网盘...第11章事务和锁.ppt 第12章游标ppt 第13章存储过程和自定义函数。ppt 第14章视图操作.ppt 第15章触发器ppt 第16章SQL Server2012的安全机制.ppt 第17章 数据库的备份与恢复,Ppt

    SQL Server 2008管理员必备指南(超高清PDF)Part1

    无论您是学生还是数据库领域的从业人员,都可从《SQL Server 2008管理员必备指南》获得解决问题和完成工作所需的信息。 《SQL Server 2008管理员必备指南》重要主题: 规划、部署和配置SQL Server 2008 管理服务器,...

    SQLServer数据库实用语法

    SQLServer数据库实用语法 存储过程、事务、游标

    SQL Server 2008管理员必备指南(超高清PDF)Part3

    无论您是学生还是数据库领域的从业人员,都可从《SQL Server 2008管理员必备指南》获得解决问题和完成工作所需的信息。 《SQL Server 2008管理员必备指南》重要主题: 规划、部署和配置SQL Server 2008 管理服务器,...

    SQL Server高级开发与专业应用

    SQL Server的系统结构,关系数据库管理基础,SQL Server的安全模式和安全管理策略,数据库及数据库对象创建和使用,任务和报警设置,数据库的备份、恢复和复制,SQL Server系统性能的监视和优化,游标、事务和锁的...

    SQL Server 2008宝典.(电子工业.刘智勇.刘径周).part2

    第4部分为数据库管理篇,介绍如何使用T-SQL程序对数据进行复杂的运算,以及如何使用视图、存储过程、触发器、索引、用户定义数据类型、用户定义函数、全文索引、游标、事务和锁、统计信息和同义词等方面的知识;...

    SQL Server 2008宝典.(电子工业.刘智勇.刘径周).part1

    第4部分为数据库管理篇,介绍如何使用T-SQL程序对数据进行复杂的运算,以及如何使用视图、存储过程、触发器、索引、用户定义数据类型、用户定义函数、全文索引、游标、事务和锁、统计信息和同义词等方面的知识;...

Global site tag (gtag.js) - Google Analytics