除了日常的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会继续发掘一些有用的咨询,知识以及新工具,与大家一同分享,谢谢!

oracle 存储过程好学吗,想靠Oracle拿高薪,存储过程的优点你是否搞清楚了?相关推荐

  1. 想与 Oracle 说“再见”,太难了!

    导读 " 去IOE,最近这几年比较火的话题,市场上也有不少成功的案例.也有不少企业也想去Oracle,今天就聊一聊去Oracle 有哪些难题? Top1 Oracle 太强 Oracle 和 ...

  2. oracle开发项目流程,如何开发ORACLE存储过程

    我的上一个银行项目中,我接到编写ORACLE存储过程的任务,我是程序员,脑袋里只有一些如何使用CALLABLE接口调用存储过程的经验,一时不知如何下手,我查阅了一些资料,通过实践发现编写ORACLE存 ...

  3. oracle 中的日志在处理,ORACLE在存储过程中记录日志的处理包

    Java开发过程中一般使用LOG4J来将程序的运行日志记录到文件中,在ORACLE存储过程中也需要记录日志,我将工作中自己整理的一个记录日志的包分享出来,其实很简单,希望大家多提意见. 一.表结构 为 ...

  4. oracle存储过程报错 跳过,oracle调试存储过程的过程详解

    oracle调试存储过程的过程详解 oracle如果存储过程比较复杂,我们要定位到错误就比较困难,那么可以存储过程的调试功能 先按简单的存储过程做个例子,就是上次做的存储过程(proc_test) 1 ...

  5. oracle 定时清理表数据,关于Oracle存储过程和调度器实现自动对数据库过期数据清除的问题...

    简介 数据库中的某些数据不一定要长期保存,例如:日志等数据.当保存一定时间后,系统允许删除所以系统需要定期删除那些已经过期的数据. 实现原理 1张表(SYS_DBA_CONFIG).1个Job定时器( ...

  6. vb.net调用oracle存储过程,vbnet2008连接oracle增删改查学习笔记(经典crud_含存储过程).doc...

    vbnet2008连接oracle增删改查学习笔记(经典crud_含存储过程).doc 我的VBNETORACLE增删改查学习笔记(本源码在VBNET2008下测试通过)学习VBNET有一段时间了,之 ...

  7. Oracle(四):PL/SQL、存储函数、存储过程、触发器

    一.PL/SQL (一)什么是 PL/SQL PL/SQL(Procedure Language/SQL)是 Oracle 对 sql 语言的过程化扩展,指 在 SQL 命令语言中增加了过程处理语句( ...

  8. 查询oracle数据库的表格数据类型,excel表格中如何查询数据库数据类型-我想把excel表格中的数据导入oracle数据库中,想在......

    在excel表里,什么是:字段.记录.数据类型.多工... declare @t table(id numeric(18,2)) insert into @t SELECT   col1 FROM   ...

  9. oracle存储过程和视图不存在,Oracle 创建存储过程 提示权限不足或者提示表和视图不存在问题...

    grant create view to hospital; --授予查询权限 grant select any table to hospital; --授予权限 grant select any ...

最新文章

  1. C# 的关键字系列 (3 of n)
  2. arduino与java,Arduino具有与Java和C语言类似的IDE集成开发环境和图形化编程环境
  3. Quantile Regression,python
  4. 40千克的镜子被量子力学“踢了一脚”,科学家首次发现宏观物体量子波动 | Nature...
  5. linux 和 windows 上printf 的不同
  6. 神策数据杨宁:券商财富管理数字化转型客户全生命周期解读
  7. 物联网应用:蓝牙模块在智能门锁中的应用
  8. PHP涟漪云-蓝奏云挂载直连下载程序源码
  9. centos-安装ifconfig
  10. php set medias,manage-medias.php
  11. 怎样教育孩子,能让孩子有更好的学习?
  12. Nitro-LM保护Flex/AIR应用的安全
  13. extend Thread 和 implements Runnable
  14. 容器技术Docker K8s 20 容器服务ACK基础与进阶-存储管理
  15. 企业微信工具栏获取外部联系人unionid
  16. 2016年不可错过的21个深度学习视频、教程和课程
  17. 北疆游记 - 照片在左边相册
  18. css3探测光圈_纯CSS3实现的镜头光晕(光圈)
  19. 《1024伐木累》-小白篇之开发网站,三天!(结束篇)-总章节十三
  20. 四年Android面试遇到的问题整理,值得收藏!

热门文章

  1. 登录超时提示+踢人下线实现(spring security)
  2. 建设工程项目质量成本优化与控制
  3. sql存储过程完全教程
  4. *2-2 OJ 1163 导弹拦截之测试版
  5. bazel 的安装与卸载
  6. (window10)使用karas生成网络模型,安装组件及无法成功加载plot_model的解决
  7. html中嵌套谷歌定位地图
  8. docker框架及模块介绍
  9. 根目录磁盘空间不足,使用fdisk添加新磁盘问题
  10. 网站服务器部署apk软件,供外网下载