1.创建过程

   与其它的数据库系统一样,Oracle的存储过程是用PL/SQL语言编写的能完成一定处理功能的存储在数据库字典中的程序。

  语法:

  create [or replace] procedure procedure_name

  [ (argment [ { in| in out }] type,

  argment [ { in | out | in out } ] type

  { is | as }

  <类型.变量的说明>

   ( 注: 不用 declare 语句 )

  Begin

  <执行部分>

  exception

  <可选的异常处理说明>

  end;

  l 这里的IN表示向存储过程传递参数,OUT表示从存储过程返回参数。而IN OUT 表示传递参数和返回参数;

  l 在存储过程内的变量类型只能指定变量类型;不能指定长度;

  l 在AS或IS 后声明要用到的变量名称和变量类型及长度;

  l 在AS或IS 后声明变量不要加declare 语句。

2.使用过程

   存储过程建立完成后,只要通过授权,用户就可以在SQLPLUS 、Oracle开发工具或第三方开发工具来调用运行。Oracle 使用EXECUTE 语句来实现对存储过程的调用。

  语法:

  EXEC[UTE] procedure_name( parameter1, parameter2…);

3.开发过程

   目前的几大数据库厂商提供的编写存储过程的工具都没有统一,虽然它们的编写风格有些相似,但由于没有标准,所以各家的开发调试过程也不一样。下面编写PL/SQL存储过程、函数、包及触发器的步骤如下:

  3.1 编辑存储过程源码使用文字编辑处理软件编辑存储过程源码,要用类似WORD 文字处理软件进行编辑时,要将源码存为文本格式。

  3.2 对存储过程程序进行解释在SQLPLUS或用调试工具将 存储过程程序进行解释;

  在SQL>下调试,可用start 或get 等Oracle命令来启动解释。如:

  SQL>start c:/stat1.sql

  如果使用调试工具,可直接编辑和点击相应的按钮即可生成存储过程。[1]

  3.3 调试源码直到正确我们不能保证所写的存储过程达到一次就正确。所以这里的调试是每个程序员必须进行的工作之一。在SQLPLUS下来调试主要用的方法是:

  1.使用 SHOW ERROR命令来提示源码的错误位置;

  2.使用 USER_ERRORS 数据字典来查看各存储过程的错误位置。

  3.4 授权执行权给相关的用户或角色如果调试正确的存储过程没有进行授权,那就只有建立者本人才可以运行。所以作为应用系统的一部分的存储过程也必须进行授权才能达到要求。 在SQLPLUS下可以用GRANT命令来进行存储过程的运行授权。

  语法:

  GRANT system_privilege | role TO user | role | PUBLIC

  [WITH ADMIN OPTION]

  

  GRANT object_privilege | ALL column ON schema.object

  TO user | role | PUBLIC WITH GRANT OPTION

  其中:

  system_privilege: 系统权限

  role: 角色名

  user: 被授权的用户名

  object_privilege: 所授予的权限名字,可以是

  ALTER

  DELETE

  EXECUTE

  INDEX

  INSERT

  REFERENCES

  SELECT

  UPDATE

  Column: 列名

  schema: 模式名

  object: 对象名

4.数据字典

   USER_SOURCE 用户的存储过程、函数的源代码字典

  DBA_SOURCE 整个系统所有用户的存储过程、函数的源代码字典

  ALL_SOURCE 当前用户能使用的存储过程(包括其她用户授权)、函数的源代码字典

  USER_ERRORS 用户的存储过程、函数的源代码存在错误的信息字典

oracle 存储过程相关推荐

  1. Oracle 存储过程 无法编译 解决方法(转载)

    声明:本文为转载,如果有侵犯知识版本,请通知本人,本人将即刻停止侵权行为: http://blog.csdn.net/tianlesoftware/article/details/7412555 Or ...

  2. oracle字段大段字符串,ORACLE存储过程,参数目字符串太长

    ORACLE存储过程,参数字符串太长 在做存储过程开发的时候,需要拼SQL语句,比如 DECLARE V_SQL VARCHAR2(32000); BEGIN V_SQL := 'INSERT INT ...

  3. 存储过程while_超详细的Oracle存储过程基础入门介绍

    概述 前面已经对存储过程.函数.包做了个介绍,但是毕竟是写成了一篇,所以没那么细,今天单独介绍一下存储过程基础方面,后面再说遍历什么游标啊,数组啊~ 1.语法 CREATE [OR REPLACE] ...

  4. [转]oracle 存储过程的基本语法 及注意事项

    oracle 存储过程的基本语法 1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 (     参数1 IN NUMBER,     参数2 IN NUMBER ) ...

  5. oracle存储过程、声明变量、for循环|转|

    oracle存储过程.声明变量.for循环 1.创建存储过程 create or replace procedure test(var_name_1 in type,var_name_2 out ty ...

  6. mybatis调用oracle存储过程

    有输入与输出参数的存储过程 oracle存储过程部分代码: create or replace procedure PT_copy_Shipment_One_Data( oldShipmentId i ...

  7. Oracle --存储过程,输入不定个数参数

    2019独角兽企业重金招聘Python工程师标准>>> 一般来说,写存储过程时,输入的参数个数是固定的,但最近业务需求,输入的参数不固定. 思路:oracle存储过程的输入参数个数. ...

  8. Oracle存储过程中异常Exception的捕捉和处理

    Oracle存储过程中异常的捕捉和处理 CREATE OR REPLACE Procedure Proc_error_process ( v_IN in Varchar2, v_OUT Out Var ...

  9. [oracle] Oracle存储过程里操作BLOB的字节数据的办法,例如写入32位整数

    作者: zyl910 一.缘由 BLOB是指二进制大对象,也就是英文Binary Large Object的缩写. 在很多时候,我们是通过其他编程语言(如Java)访问BLOB的字节数据,进行字节级的 ...

  10. oracle存储过程参考资料(网上转载)

    网址一:http://www.cnblogs.com/hero4china/articles/base_rule_oracle_procedure.html 给朋友讲解oracle proc的记录: ...

最新文章

  1. Ardino基础教程 4_交通灯
  2. 我用 Python 帮朋友做了张图,结果
  3. mysql 进阶方向_mysql数据库入门、进阶和提升(续二)
  4. anaconda3卸载python_python从安装到到数据分析应用高手 Python语言基础知识
  5. Java开发必会MVC三层架构
  6. avast从隔离区恢复后,仍无法打开被误杀文件的解决方案
  7. python设计模式11-享元模式
  8. 解决局域网共享问题,提示:无法访问,你可能没有权限使用网络资源
  9. 一张纸厚度是多少毫米_一张纸对折后的厚度,有多可怕!——北京市第二十中学教科室“科技云课堂”(4)...
  10. iText 中写Word RTF 文档 中文字体设置
  11. ad19pcb所有元件都在报错_AD09如何放置过孔阵列?Allegro PCB,元器件高度限制区域设置?...
  12. Red5流媒体服务器的搭建与使用
  13. MCSA / Windows Server 2016 DISM和Powershell管理和维护镜像
  14. 利用扭力仪来检测特小公斤数电批输出扭矩
  15. win10系统QQ音乐安装包无法打开解决方法!
  16. oracle经纬度精确查询位置,基于经纬度定位车辆所在交通小区位置的方法与流程...
  17. 关于vmware无法访问互联网
  18. lcd改led背光有光斑_LCD改LED背光,详细干活教程!
  19. 布丰投针问题和蒙特卡洛方法
  20. Exiting intel PXE ROM.Operating system not found

热门文章

  1. 分类器是如何做检测的?(2)——【续】检测中的LBP和HAAR特征计算过程
  2. 让开发自动化持续重构 --使用静态分析工具识别代码味道
  3. Java对象排序、中文排序、SortedSet排序使用和源码讲解
  4. Java/C语言/C++/Python/PHP运算符优先级
  5. Latex论文排版技巧再总结
  6. 《C++ Primer plus》学习笔记之”RTTI”
  7. 局部特征(3)——SURF特征总结
  8. 大话设计模式(八 用“策略模式”是一种好策略)
  9. 【OpenCV3】cv::Mat中的数据按行列写入txt文件中
  10. OpenResty简介