首页 >

oracle中存储过程与函数的区别是什么

数据库|Oracleoracle中存储过程与函数的区别是什么
oracle,存储过程,函数
数据库-Oracle
.net 微信公众平台 源码下载,vscode没有导航条,Ubuntu内核串口,tomcat清除缓存指令,爬虫入门讲解,php实现301重定向,平潭提供seo费用是多少,单品页网站,html用户管理系统模板lzw
oracle中存储过程与函数的区别是什么
谷姐源码,vscode工具安装插件,平板能用Ubuntu,tomcat如何看错误,单线程爬虫与多线程爬虫,php gd 加水印,贵州seo推广多少钱,视频外链网站源码,thinkphp模板时间lzw
存储过程
php 万能表单 源码,boot如何安装ubuntu,tomcat是做啥的,网络爬虫课件,php语言属于哪种语音,seo 121lzw
存储过程(Stored Procedure )是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。 存储过程是由流控制和SQL 语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。在ORACLE 中,若干个有联系的过程可以组合在一起构成程序包。

优 点:

1、存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。

2、当对数据库进行复杂操作时(如对多个表进行Update、Insert、Query、Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。

3、存储过程可以重复使用,可减少数据库开发人员的工作量。

4、安全性高,可设定只有某用户才具有对指定存储过程的使用权。

存储过程与函数的区别

二者最大的区别是:

1).函数(function)总是向调用者返回数据,并且一般只返回一个值;2).存储过程(procedure)不直接返回数据,但可以改变输出参数的值,这可以近似看作能返回值,且存储过程输出参数的值个数没有限制。

从一般应用上来看,如果不需要返回值或者需要多个返回值,使用存储过程,如果只用一个返回值,就使用函数。

2、function定义中只能有DDL(如select等)语句;procedure中主要是DML语句(对数据库进行复杂操作时,如对多个表进行Update、Insert、Query、Delete时)。

存储过程与函数的区别

存储过程

函数

用于在数据库中完成特定的操作或任务(如插入、删除等)

用于特定数据(如查询返回值)

程序头部声明用PROCEDURE

程序头部声明用FUNCTION

程序头部声明时不需要返回类型

程序头部声明时要描述返回类型,而且PL/SQL块至少要包括一个有效的RETURN语句

可以使用IN/OUT/IN OUT3种参数模式

可以使用IN/OUT/IN OUT3种参数模式

可以作为独立的PL/SQL语句执行

不能独立执行,必须作为表达式的一部分调用

可以通过OUT/IN OUT返回零个或多个值

对过RETURN语句返回一个值,且该值与声明部分一致,也可以通过OUT类型的参数带出变量

SQL语句(DML或SELECT)中不可以调用存储过程

SQL语句(DML或SELECT)中可以调用函数

oracle中存储过程与函数的区别是什么

实际举例

1、函数

(1)创建函数

create or replace function get_salary(    dept_no number,    emp_count **out** number)    return number IS    v_sum number;begin    ...exception    ...end get_salary

(2)调用函数

declare     v_num number;    v_sum number;begin    ...(这里应该出现函数名表示调用)end

2、存储过程

(1)创建存储过程

create or replace procedure pro_demo(    dept_no number default 10,    sal_sum out number,    emp_count out number)ISbegin    ...exception    ...end proc_demo;

(2)调用存储过程

调用语法:

1)、exec ;

2)、execute ;

3)、在PL/SQL语句块中直接调用。

例如:

declare    v_num number;    v_sum number(8,2);begin    procedure pro_demo(dept_no=>1,sal_num=>900,emp_count=>10)(这里出现存储过程名表示调用,传递参数值用=>)end;

3、本地存储过程

在PL/SQL中还可以在declare块中建立本地存储过程,而不使用关键字create,其目的是:不用将存储过程存储在数据库中,避免更改数据库时带来的麻烦,其主要的使用场景是,临时使用某个存储过程,而不是在以后要重复多次使用。

例子:

declare    v_num number;    v_sum number(8,2);procedure proc_demo(    dept_no number default 10,    sal_sum out number,    emp_count out number)ISbegin    ...(这里不用出现存储过程名)exception    ...end proc_demo;

推荐教学:《Oracle教学》


oracle中存储过程与函数的区别是什么
  • 如何快速有效地掌握数据库语言MySql? |mysql更新余额
  • 如何快速有效地掌握数据库语言MySql? |mysql更新余额 | 如何快速有效地掌握数据库语言MySql? |mysql更新余额 ...

    oracle中存储过程与函数的区别是什么
  • 游标的作用及属性介绍
  • 游标的作用及属性介绍 | 游标的作用及属性介绍 ...

    oracle中存储过程与函数的区别是什么
  • mysql存储过程太慢怎么办
  • mysql存储过程太慢怎么办 | mysql存储过程太慢怎么办 ...