当前位置:首页 > 程序猿 > 数据库 > 正文

oracle中函数和存储过程的区别和联系

在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点。刚学完函数和存储过程,下面来和大家分享一下自己总结的关于函数和存储过程的区别。

一、存储过程

1.定义

存储过程是存储在数据库中提供所有用户程序调用的子程序,定义存储过程的关键字为procedure。

2.创建存储过程

示例一:无参无返

示例二:有参有返

示例三:参数列表中有in out参数

示例四:存储过程中定义参数

总结:

  1. 创建存储过程的关键字为procedure。
  2. 传参列表中的参数可以用in,out,in out修饰,参数类型一定不能写大小。列表中可以有多个输入输出参数。
  3. 存储过程中定义的参数列表不需要用declare声明,声明参数类型时需要写大小的一定要带上大小。
  4. as可以用is替换。
  5. 调用带输出参数的过程必须要声明变量来接收输出参数值。
  6. 执行存储过程有两种方式,一种是使用execute,另一种是用begin和end包住。

存储过程虽然有很多优点,但是它却不能使用return返回值。当需要使用return返回值时,我们可以使用函数。

二、存储函数

1.函数与存储过程的结构类似,但是函数必须有一个return子句,用于返回函数值。

三、存储过程与存储函数的区别和联系

相同点:

  1. 创建语法结构相似,都可以携带多个传入参数和传出参数。
  2. 都是一次编译,多次执行。

不同点:

  1. 存储过程定义关键字用procedure,函数定义用function。
  2. 存储过程中不能用return返回值,但函数中可以,而且函数中必须有return子句。
  3. 执行方式略有不同,存储过程的执行方式有两种(1.使用execute2.使用begin和end),函数除了存储过程的两种方式外,还可以当做表达式使用,例如放在select中(select f1() form dual;)。

总结:

如果只有一个返回值,用存储函数,否则,一般用存储过程。

标签:
上一篇: 下一篇:

1 条评论

评论加载中...
  1. 沙发
    来自天朝的朋友 谷歌浏览器 Windows 8.1 江苏省苏州市 电信
    搬瓦工   

    好教程 赞

    2017年4月11日 下午1:24 评论

发表评论

不理你。 不要啊! 吃饭。 吃惊。 吃西瓜。 飞吻! 恭喜! Hi 纠结! 膜拜! OK 抛媚眼。 泡泡糖。 抛钱。 忍! 生闷气! 调皮。 偷看。 委屈。 献花。 疑问? 抓狂!