oracle存储过程

Posted Tony_copper

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle存储过程相关的知识,希望对你有一定的参考价值。

  存储过程

  1.存储过程简介

    下面先来简单介绍一下oracle的存储过程的语法,如下:

    

1 create or replace procedure Tony_Process
2 (
3     num in number,
4     sum out number
5 )
6 as
7 begin
8     null;
9 end;
存储过程简单语法

 

 

     下面简单介绍一下使用存储过程的优点:

    (1)使用方便。创建存储是将命名对象直接放入到数据库中,因为代码不保存在本地,用户可以在任何一个客户机上使用或调用存储过程。

    (2)安全性。存储过程是由数据库提供的安全保证,用户要想使用存储过程必须先经过存储过程的所有者授权用户才能调用或者修改存储过程。

    (3)传递性。可以给存储过程设置带参或者多参,亦或者没有返回值类型。存储过程的返回值必须通过参数带回(out输出类型)。

     存储过程与存储函数的区别:

    存储函数可以使用 Return返回一个函数,存储过程不可以。

 

  2.定义并使用变量
     PL/SQL有四种类型:标量类型,复合类型,引用类型 (reference),LOB(Large Obejct)类型

    一、标量类型
  最常用的就是标量类型,是指只能存放单个数值的变量,包括数字类型、字符类型、日期类型和布尔类型,每种类型又包含相应的子类型。如“:=”把“=”取代,使用方法如下:v_rate integer :1;

      二、复合变量:
  用于存放多个值的变量称为复合变量,包括PL/SQL记录,PL/SQL表,嵌套表和VARRAY四种类型 

      三、引用变量(reference)
  类似于C++中的指针或者JAVA中引用的概念,用于存放数值指针的变量,使用此变量,可以使得应用程序共享相同对象,降低占用空间。此类有两种类型:游标(REF CURSOR)和对象类型(REF OBJECT)

     四、LOB类型
  LOB类型是指用于存储大批量数据的变量,包括内部的3种(CLOB,BLOB,NCLOB)和外部LOB(BFILE)。
  CLOB,NCLOB用于存储大量的字符数据。
  BLOB用于存储大批量二进制数据(如图象)。

  

  3.给用户设置权限

    1.1 用户只能修改的权限,语法如下:

      grant execute on 存储过程名称 to 用户名;

    1.2用户只能查询的权限:

      grant select on 存储过程名称 to 用户名;

   4.引用存储过程的方式

      (1)execute方法后跟存储过程名,execute也可以简写为exec。

      (2)begin  end;块中写存储过程名称进行调用。

  存储函数

  1.简单介绍存储函数

  存储函数,也是一种命名的存储程序,可传入参数,并进行一系列的操作。存储函数与存储过程结构类似,与存储过程不同的是,函数必须要跟一个return语句,用于返回函数值。

  2.语法

   

 1 create or replace function Tony_Function
 2 (
 3     num in number ,
 4     sum out number
 5 )
 6 return number
 7 as 
 8 begin
 9     null;
10     return 0;
11 end;
存储函数基本语法

  存储过程与存储函数的int(输入参数)和out(输出参数)有什么区别?

  (1)存储过程和存储函数都可以有out参数;

  (2)存储过程和存储函数都可以有多个out参数;

  (3)存储过程可以使用out参数来实现返回值;

  (4)存储函数使用return来实现返回值;

  ps:如果只有一个返回值使用存储函数,有多个返回值则使用存储函数。

 

  在应用程序下调用存储过程或函数。下面是具体步骤。

  1.1首先,在项目中引用

  

 

以上是关于oracle存储过程的主要内容,如果未能解决你的问题,请参考以下文章

oracle中的存储过程,有啥作用,以及怎么在代码中使用?

oracle创建存储过程时,提示错误是:错误(5,18): PL/SQL: ORA-00947: 没有足够的值?代码如下:

oracle form怎么调用oracle存储过程

oracle数据库可否批量导出存储过程

oracle创建存储过程时,提示错误是:错误(5,18): PL/SQL: ORA-00947: 没有足够的值?代码如下:

oracle的存储过程