Oracle存储过程(10 级学员 庞丽课堂总结)

转载 2012年03月22日 21:14:03

Oracle存储过程

         今天我们学习了存储过程和存储函数也是一种PL/SQL块,是存入数据库的PL/SQL块,它和PL/SQL程序相比起来,

一、存储过程和它有很多优点,具体归纳一下,如下:

(1)       存储过程和函数以命名的数据库对象形式存储于数据库当中。存储在数据库中的优点是很明显的,因为代码不保存在本地,用户可以在任何客户机上登录到数据库,并调用或修改代码。

(2)       存储过程和函数可由数据库提供安全保证,要想使用存储过程和函数,需要有存储过程和函数的所有者的授权,只有被授权的用户或创建者本身才能执行存储过程或调用函数。

(3)       存储过程和函数的信息是写入数据字典的,所以存储过程可以看做是一个公用模块,用户编写的PL/SQL程序或其他存储过程都可以调用它(但存储过程和函数不能调用PL/SQL程序)。一个重复使用的功能,可以设计成为存储过程,比如:显示一张工作统计表,可以设计成为存储过程;一个经常调用的计算,可以设计成为存数函数;根据雇员编号返回雇员的姓名,可以设计成存储函数。

(4)       像其他高级语言的过程和函数一样,可以传递参数给存储过程或函数,参数的传递也有多种方式。存储过程可以有返回值,也可以没有返回值,存储过程的返回值必须通过参数带回;函数有一定的数据类型,像其他的标准函数一样,我们可以通过对函数名的调用返回函数值。

(5)       存储过程和函数需要进行编译,以排除语法错误,只有编译通过才能调用。      

二、存储过程的建立及执行

         创建存储过程的基本语句:

(1)       create producedure命令建立存储过程和存储函数。

(2)       语法:

Create [or replace] producedure过程名(参数列表)as

                     PL/SQL子程序体;

三、调用存储过程的方法

         1)方法一:

                            Execute 模式名.存储过程名[(参数…)];

(3)       方法二:

Begin

         模式名.存储过程名[(参数…)];

End;

传递的参数必须与定义的参数类型、个数和顺序一致(如果参数定义了默认值,则调用时可以省略参数)。参数可以是变量、常量。

如果是调用本账户下的存储过程,则模式名可以省略。要调用其他账户编写的存储过程,则模式名必须要添加。

四、存储过程的实例:

1)题目:为指定的职员在原工资的基础上涨10%的工资

         create or replace procedure updateSal(emp_no number)

as

 ---declare声明

 emp_sal emp.sal%type;

--开始

Begin

         --查询该员工的工资

   select sal into emp_sal from emp where empno=emp_no;

         --给该员工涨工资

   update emp set sal = emp_sal*1.1 where empno=emp_no;

--结束标识

 end;

 2)在Java程序中使用存储过程

         代码如下:

首先我们来创建一个包体,

createorreplacepackage emppackage is

  -- Author  : ADMINISTRATOR

  -- Created : 2012-3-22 下午 02:05:43

  -- Purpose :

  -- Public type declarations

  type empcursor isrefcursor;

  -- Public function and procedure declarations

  procedure selectEmps(emplist out empcursor);

end emppackage;

并且要实现这个包体。

Java代码如下:

publicstaticvoid testProcedures() throws SQLException{

       //参数 in out 参数     通过占位符

       CallableStatement cas = conn.prepareCall("{call emppackage.selectEmps(?)}");

       //从1开始

       int index=1;

       //为占位符赋值

       //输出参数  cas.registerOutParameter(index++,oracle.jdbc.OracleTypes.CURSOR);

       boolean flag = cas.execute();

       System.out.println(flag);

       //OracleCallableStatement强制造型为oracle中的存储过程的对象

       //调用里边的getCursor()方法获取返回的ResultSet的结果集

       ResultSet rs = ((OracleCallableStatement)cas).getCursor(1);

       while(rs.next()){

           System.out.println(rs.getInt(1));

       }


 

五、带参数的存储过程

         参数的作用是向存储过程传递数据,或从存储过程获得返回结果。正确的使用参数可以大大增加存储过程的灵活性和通用性。

         参数的类型有三种,如下所示:

                   In  定义一个输入参数变量,用于传递参数给存储过程。

                   OUT   定义一个输出参数变量,用于从存储过程获取数据。

                   IN OUT    定义一个输入、输出参数变量,兼有以上两者的功能。

 参数的定义形式和作业如下:

                   参数名   in   数据类型 default

                   参数名   out  数据类型

                   参数名  inout   数据类型  default

六、删除存储过程

         一个存储过程在不需要时可以删除。删除存储过程的人是过程的创建者或者拥有drop any procedure系统权限的人。

         删除存储过程的语法如下:

                   Drop procedure  存储过程名;

Spring第一个案例(10级学员 庞丽课堂总结)

Spring第一个案例(10级学员 庞丽课堂总结) 刚刚接触Spring,我们完成了第一个Spring的案例。下面我就要对Spring第一个案例源代码进行分析。 一、首先我们在Eclipse下新建...
  • redarmy_chen
  • redarmy_chen
  • 2012年04月17日 21:14
  • 1937

oracle 闪回的介绍(10级学员 庞丽课堂总结)

闪回(Flashback) 一、闪回的基本概念 (1)在Oracle的操作工程中,会不可避免地出现造作失误或者用户失误,例如不小心删除了一个表等,这些失误和错误可能会造成重要数据的丢失,最终导致O...
  • redarmy_chen
  • redarmy_chen
  • 2012年03月25日 20:28
  • 1710

学期末总结——我体会的翻转课堂

翻转课堂,我在大二上学期第一节《数据结构》上才对它有所了解。大一结束前从没听说过“翻转课堂”这个词汇。其实大一结束的暑假里贺老师就通过很多途径向我们介绍了翻转课堂,但因一些乱七八糟的因素我并没有去了解...
  • lcx16
  • lcx16
  • 2015年12月18日 08:33
  • 848

QST青软实训学员学习总结

这次社会实践,首先带队老师带我们参观了国家级软件园、城市规划馆。让我更深入地了解到IT行业的飞速发展,以及庞大的市场前景和大公司对人才的迫切需求,这让我感觉自己选的专业没让我失望。同时,我也看到了如皋...
  • qq_34859668
  • qq_34859668
  • 2016年10月01日 16:26
  • 973

我们的翻转课堂-学期总结

关于这学期的翻转课堂,真的是感受良多。         其实呢,我在很早以前报过网校这样类似的东西,但是花了几千块钱,我却是一点也没看。暑假的时候,贺老向我们提出翻转课堂这个概念,让我不禁想起了这块...
  • qq_30951371
  • qq_30951371
  • 2015年12月18日 11:43
  • 626

我的翻转课堂教学实践

前几天在家教课,将所学的翻转课堂教学法的一部分应用在了我的教学中,现在和大家分享一下,敬请大家指正。      翻转课堂(又称作Flipped Classroom) ,是近一段时间比较火的一种教学模...
  • lubianbianjibu
  • lubianbianjibu
  • 2014年08月23日 22:45
  • 792

JSP入门课堂总结 20111028

多行代码%>JSP片断 注意:JSP脚本片断中只能出现java代码,不能出现其它模板元素, JSP引擎在翻译JSP页面中,会将JSP脚本片断中的Java代码将被原封不动地放到Servlet的_jsp...
  • LLLAZY520
  • LLLAZY520
  • 2011年10月30日 18:06
  • 319

软件测试技术学习总结

一个开发人员不能自己测试一下自己开发的程序是件很尴尬的事,秉着对这句话的理解,最近学习了一下软件测试技术的基础知识,现在总结一下学习过程,供想学习了解一下软件测试的同学参考参考。...
  • hzy38324
  • hzy38324
  • 2015年03月20日 23:03
  • 975

黑马程序员——基础学习感悟总结...

昨天终于看完了所有基础班的视频,总体感觉就是看视频的日子过得好快。我自认为我在程序的理解方面还是有天赋的,所以当传智的老师和我在传智播客学习过的学长告诉我说有黑马这个“传智播客加强班”之后我就下定决心...
  • qw405883746
  • qw405883746
  • 2015年07月18日 07:28
  • 148

翻转课堂教学感受调查

数据结构课程结束,进行了教学感受调查,记录并公布如下。开始时间:2015-12-22 结束时间:2016-1-17 样本总数:78 份 原始数据来源:http://www.sojump.co...
  • sxhelijian
  • sxhelijian
  • 2016年01月26日 22:04
  • 2482
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle存储过程(10 级学员 庞丽课堂总结)
举报原因:
原因补充:

(最多只允许输入30个字)