想靠Oracle拿高薪,存储过程的优点你是否搞清楚了?

783 阅读4分钟
  • 除了日常的mysql,相信大家都知道Oracle由于其存在的时间之长,也是许多大厂的选择。并且在日常的面试中,熟知Oracle与原本在面试中也是拥有极大的优势。而今天咱们就来说说Oracle中的存储过程。

存储过程是Oracle开发者在数据转换或查询报表时经常使用的方式之一。

  • 我们都知道,它就是想编程语言一样一旦运行成功,在日常的使用中就可以被用户随时调用,这种方式极大的节省了用户的时间,也提高了程序的执行效率。存储过程在数据库开发中使用比较频繁,它有着普通SQL语句不可替代的作用。
  • 所谓存储过程,就是一段存储在数据库中执行某种功能的程序。其中包含一条或多条SQL语句,但是它的定义方式和PL/SQL中的块、包等有所区别。存储过程可以通俗地理解为是存储在数据库服务器中的封装了一段或多段SQL语句的PL/SQL代码块。
  • 在数据库中有一些是系统默认的存储过程,那么可以直接通过存储过程的名称进行调用。另外,存储过程还可以在编程语言中调用,如Java、C#等。

存储过程的优点:

  • 增加数据独立性。与视图的效果相似,利用存储过程可以把数据库基础数据和程序(或用户)隔离开来,当基础数据的结构发生变化时,可以修改存储过程,这样对程序来说基础数据的变化是不可见的,也就不需要修改程序代码了。

  • 简化复杂的操作。存储过程可以把需要执行的多条SQL语句封装到一个独立单元中,用户只需调用这个单元就能达到目的。这样就实现了一人编写多人调用。

  • 提高性能。完成一项复杂的功能可能需要多条SQL语句,同时SQL每次执行都需要编译,而存储过程可以包含多条SQL语句,而且创建后只需要编译一次,以后就可以直接调用。

存储过程的语法:

  • 创建语句:create or replace procedure 存储过程名。如果没有or replace语句,则仅仅是新建一个存储过程。如果系统存在该存储过程,则会报错。Create or replace procedure 如果系统中没有此存储过程就新建一个,如果系统中有此存储过程则把原来删除掉,重新创建一个存储过程。
  • 存储过程名定义:包括存储过程名和参数列表。参数名和参数类型。参数名不能重复。参数的数据类型只需要指明类型名即可,不需要指定宽度。 参数的宽度由外部调用者决定。 存储过程可以有参数,也可以没有参数。
  • 变量声明块:紧跟着的as (is )关键字,可以理解为pl/sql的declare关键字,用于声明变量。 变量声明块用于声明该存储过程需要用到的变量,它的作用域为该存储过程。另外这里声明的变量必须指定宽度。

  • 过程语句块:从begin 关键字开始为过程的语句块。存储过程的具体逻辑在这里来实现。

  • 异常处理块:关键字为exception ,为处理语句产生的异常。该部分为可选 。

  • 结束块:由end关键字结束。

  • 存储过程的参数传递方式 : - 存储过程的参数传递有三种方式:IN,OUT,IN OUT . - IN 按值传递,并且它不允许在存储过程中被重新赋值。如果存储过程的参数没有指定存参数传递类型,默认为IN 

      	 create or replace procedure proc1(   
      	   p_para1 varchar2,   
      	   p_para2 out varchar2,   
      	   p_para3 in out varchar2   
      	 )as    
      	  v_name varchar2(20);   
      	 begin   
      	   p_para1 :='aaa';   
      	   p_para2 :='bbb';   
      	  v_name := '张三丰';   
      	   p_para3 := v_name;   
      	   dbms_output.put_line('p_para3:'||p_para3);   
      	   null;   
      	 end; 
    
  • OUT 参数:作为输出参数,需要注意,当一个参数被指定为OUT类型时,就算在调用存储过程之前对该参数进行了赋值,在存储过程中该参数的值仍然是NULL.

  • IN OUT 是真正的按引用传递参数。即可作为传入参数也可以作为传出参数。

总结:

作为一个新生程序猿,Damon希望能够与大家一同进步。文章或者描述有所不足的地方,希望大家多多提出来,一同进步。

Damon会继续发掘一些有用的咨询,知识以及新工具,与大家一同分享,谢谢!