`
wenhai_zhang
  • 浏览: 187869 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

重温Oracle(8)

 
阅读更多

第二十章 游标、函数

 

游标

游标是一种PL/SQL控制结构,可以对SQL语句的处理进行显示控制,便于对表的行数据逐条进行处理。

游标并不是一个数据库对象,只是存留在内存中。

 

操作步骤:

声明游标

打开游标

取出结果,此时的结果取出的是一行数据

关闭游标

到底那种类型可以把一行的数据都装起来?ROWTYPE类型,此类型表示可以把一行的数据都装起来。

 

使用for循环操作游标(比较常用)

Declare

  Cursor mycur is select * from emp where empno=1; --声明游标

  empInfo emp%ROWTYPE;

  cou number;

begin

  for empInfo in mycur LOOP

    cou:= mycur%ROWCOUNT; --获取游标的所有记录数

    dbms_output.put_line(cou||'雇员编号:'||empInfo.empno);

    dbms_output.put_line(cou||'雇员姓名:'||empInfo.ename);

  end LOOP;

end;

/

 

使用游标输出所有信息

Declare

  Cursor mycur is select * from emp; --创建游标

  empInfo emp%ROWTYPE;

begin

OPEN mycur; --游标操作使用循环,但是在操作之前必须先将游标打开

FETCH mycur INTO empInfo; --使游标向下移一行,即游标指向第一行并赋值给empInfo

While(mycur%FOUND) LOOP

    dbms_output.put_line('雇员编号:'||empInfo.empno);

dbms_output.put_line('雇员姓名:'||empInfo.ename);

FETCH mycur INTO empInfo; --修改游标,继续向下

End LOOP;

End;

/

 

LOOP…END LOOP循环游标

Declare

  Cursor mycur is select * from emp;

  empInfo emp%ROWTYPE;

begin

if mycur%ISOPEN then  --打开游标要先判断游标是否已经打开

  null;

else

  open mycur;

end if;

LOOP

  FETCH mycur INTO empInfo;

  EXIT WHEN mycur%NOTFOUND;

  dbms_output.put_line('雇员编号:'||empInfo.empno);

dbms_output.put_line('雇员姓名:'||empInfo.ename);

End LOOP;

End;

/

 

注意:

<!--[if !supportLists]-->1,  <!--[endif]-->在打开游标之前最好先判断游标是否已经打开。

<!--[if !supportLists]-->2,  <!--[endif]-->可以使用ROWCOUNT对游标所操作的行数进行记录。

 

函数

函数就是一个有返回值的过程。

定义一个函数:此函数可以根据雇员的编号查询出雇员的年薪

Create or replace function myfun(eno emp.empno%TYPE) return number

As

rsal number;

Begin

  Select (sal+nvl(comm,0))*12 info rsal from emp where empno=eno;

  Return rsal;

End;

/

调用:select myfun(7369) from dual;

 

第二十一章 存储过程

 

存储过程

与过程项目,存储过程是存在数据库中的一个对象

如果编译错误。可以用show errors or show errors procedure myproc

 

基本语法:

Create or replace procedure myproc

As

 I number;

Begin

 I:=100;

 Dbms_output.put_line(‘i=’||i);

End;

/

 

执行:exec myproc

 

带出入参数的语法:

Create or replace procedure myproc(dno in out dept.deptno%TYPE,name dept.dname%TYPE,dl dept.loc%TYPE) –传入参数,IN 带入参数,OUT 带出参数

As

 Cou number;

Begin

 Select count(deptno) into cou from dept where deptno=dno;

If cou=0 then –判断传入部门ID是否存在,不存在则插入

  Insert into dept(deptno,dname,loc) values(dno,name,dl);

  Dbms_output.put_line(‘部门插入成功’);

  Dno:=1;

Else

  Dbms_output.put_line(‘部门已存在,无法插入!’);

  Dno:=-1;

End if;

End;

/

 

说明:

IN:带入参数,默认的

IN OUT:带入带出参数

OUT:带出参数,不允许传入值

 

删除存储过程

Drop procedure myproc;

分享到:
评论

相关推荐

    数据库Oracle教程

    本教程旨在帮助你重温或深入学习Oracle数据库的基础知识及高级特性,让你在数据库管理领域更加得心应手。 首先,Oracle数据库的核心概念包括数据模型、SQL语言、数据库架构和事务管理。数据模型是数据库设计的基础...

    oracle基础知识回顾与练习.zip

    总的来说,“oracle基础知识回顾与练习.zip”提供了全面的Oracle SQL学习路径,无论你是初学者还是希望重温基础的开发者,都能从中受益。通过系统学习和实践,你可以逐步掌握Oracle数据库的关键技能,为未来的职业...

    zkoss CE6.0+spring3.0.5+hibernate3.6+oracle10g+mysql5最全包

    这是一个关于企业级应用开发的集成环境包,包含了前端框架ZKoss CE6.0、后端框架Spring3.0.5、ORM框架Hibernate3.6,...对于想要了解早期Java开发技术或者重温旧有技术栈的开发者来说,这是一个非常有价值的参考资料。

    行业-89 再次重温写出各种SQL语句的时候,会用什么执行计划?(2).rar

    DBMS还提供了查询分析工具,如Oracle的Explain Plan或SQL Server的Execution Plan,它们能展示每一步的预计成本、实际资源消耗和操作顺序,帮助开发者理解并优化执行计划。 总结来说,"行业-89 再次重温写出各种SQL...

    行业-88 再次重温写出各种SQL语句的时候,会用什么执行计划?(1).rar

    本资料“行业-88 再次重温写出各种SQL语句的时候,会用什么执行计划?(1)”很可能是探讨SQL查询执行计划的一份深入教程,旨在帮助读者掌握如何分析和优化SQL语句的执行流程。 首先,执行计划包括以下几个关键元素...

    行业-90 再次重温写出各种SQL语句的时候,会用什么执行计划?(3).rar

    1. 使用EXPLAIN或EXPLAIN PLAN:在大多数数据库系统(如MySQL、PostgreSQL、Oracle等)中,可以在SQL语句前加上`EXPLAIN`或`EXPLAIN PLAN`关键字来查看执行计划。 2. 查询分析器:某些数据库管理系统(如SQL Server...

    java培训实习总结.doc

    在实习期间,学员们重温了Java的基础语法、类和对象的概念,以及异常处理等关键知识。 2. **JavaWeb开发**:JavaWeb技术包括Servlet和JSP,它们是构建动态Web应用的重要工具。Servlet是一个Java类,用于扩展服务器...

    MySQL数据库中SCOTT模式的经典数据表创建与插入示例

    适用人群:初学者以及希望重温或深入理解SQL语句构造的人群,特别是在企业级应用场景下对于多表连接查询、数据完整性约束方面有一定了解需求的学习者或者从业者;对于那些想了解传统Oracle的scott用户下sample table...

    2020年软件测试顶岗实习报告总结.docx

    (2) 工作方法:在编写测试用例的过程中,我重温了编程基础知识,并积极寻求同事的帮助。我认识到,不断积累知识和经验,以及将遇到的问题和解决方案铭记于心,是提升工作效率的关键。 (3) 工作责任:在公司,我视...

    SQL-4 数据库知识

    本文将深入探讨SQL的多个重要知识点,帮助读者重温或掌握这些基础概念。 1. 数据库基础 - 数据库:是存储和管理数据的系统,如Oracle、MySQL、SQL Server等。 - 关系型数据库:基于关系理论,通过表格形式展示...

    ninechip:一个用Java编写的Chip-8模拟器!

    综上所述,Ninechip是一个基于Java的Chip-8模拟器,它不仅让开发者能够重温复古的编程体验,同时也是学习和理解计算机体系结构、虚拟机原理以及Java编程的实用工具。通过参与这个项目,无论是初学者还是经验丰富的...

    java培训实习报告.docx

    2. **Core Java**:从基础的变量、运算符到控制结构,实习生重温了Java的核心概念,这是所有Java开发的基础。 3. **SQL和数据库**:学习了SQL语言,包括基础和优化,以及Oracle数据库开发和PL/SQL,这是处理数据和...

    PB学习手册附阅读器

    6. **数据库连接**:讲述如何配置数据源,使用ADO、ODBC或OLE DB等方式连接不同的数据库系统,如SQL Server、Oracle、MySQL等。 7. **应用程序部署**:介绍PB应用程序的编译、发布和部署过程,包括生成可执行文件和...

    2021高考英语一轮复习课时作业9Unit9Wheels北师大版必修3

    对于那些带着孩子一起旅行的家庭来说,六旗探索王国不仅能给孩子们带来快乐,也能让成人重温童年的乐趣。在这里,游客可以在保证安全的前提下,体验各种刺激的游乐设施,享受与野生动物近距离接触的乐趣。 旧金山湾...

    陆卫康的VFP技术文章和示例

    6. **网络与数据库连接**:VFP可以与其他数据库(如SQL Server、Oracle等)进行连接,实现数据交换和处理。 7. **数据可视化**:VFP支持图表和图形的创建,便于数据可视化展示。 8. **脚本语言**:VFP的命令式语言...

    mapinfo 4 安装程序

    再者,MapInfo 4具备数据库集成能力,可以与多种数据库系统无缝对接,如Microsoft Access、Oracle和SQL Server等。这使得用户可以直接在GIS环境中进行数据库操作,实现地理数据与业务数据的结合。 安装过程中,用户...

    delphi7绿色精简版.rar

    5. **数据库支持**:Delphi 7内置了ADO(ActiveX Data Objects)组件,可以方便地连接和操作各种数据库,如SQL Server、Oracle、MySQL等。 6. **Unicode支持**:虽然Delphi 7相对较旧,但它已经支持Unicode,允许...

    borland c biulder BC 编程工具

    8. **数据库集成**:BC++ Builder提供了与各种数据库系统的良好集成,包括InterBase、Oracle、SQL Server等,通过其DataSnap技术,可以轻松实现客户端和服务器之间的数据交换。 9. **文档和社区支持**:尽管这款...

    FOXPRO25

    不过,随着技术的发展,现代开发更多倾向于使用如SQL Server、Oracle、MySQL等更现代的数据库系统,或者.NET、Java等更强大的开发平台。 总的来说,FOXPRO25是数据库管理和应用开发的一个历史里程碑,它在当时以其...

    Java个人实习总结.pdf

    1. Java基础知识回顾:在实习期间,实习生可能重温了Java的基础语法、面向对象的编程原则、数据类型、控制结构、异常处理等,这些都是Java编程的根基。 2. 集成开发环境(IDE)的使用:在实习中,实习生需要熟悉并...

Global site tag (gtag.js) - Google Analytics