存储过程、函数、触发器与包课件.ppt

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
存储过程、函数、触发器与包课件

Oracle;主要内容;存储过程和函数;创建存储过程;可选关键字OR REPLACE 表示如果存储过程已经存在,则用新的存储过程覆盖,通常用于存储过程的重建。 参数部分用于定义多个参数(如果没有参数,就可以省略)。参数有三种形式:IN、OUT和IN OUT。如果没有指明参数的形式,则默认为IN。 关键字AS也可以写成IS,后跟过程的说明部分,可以在此定义过程的局部变量。 编写存储过程可以使用任何文本编辑器或直接在SQL*Plus环境下进行,编写好的存储过程必须要在SQL*Plus环境下进行编译,生成编译代码,原代码和编译代码在编译过程中都会被存入数据库。编译成功的存储过程就可以在Oracle环境下进行调用了。 ;删除、修改和执行;传递的参数必须与定义的参数类型、个数和顺序一致(如果参数定义了默认值,则调用时可以省略参数)。参数可以是变量、常量或表达式,用法参见下一节。 如果是调用本账户下的存储过程,则模式名可以省略。要调用其他账户编写的存储过程,则模式名必须要添加。 存储过程没有参数,在调用时,直接写过程名即可。 见例子--输出hello,world!;create or replace procedure parapro(id in varchar2 default 001 , name in varchar2 default mly) is begin Dbms_Output.put_line(id); Dbms_Output.put_line(name); end parapro; /* declare v_id varchar2(100) ; v_name varchar2(100); begin parapro(); parapro(002); parapro(name=mao); parapro(id=v_id,name=v_name); end; */;参数的作用是向存储过程传递数据,或从存储过程获得返回结果。正确的使用参数可以大大增加存储过程的灵活性和通用性。 参数定义语法: 参数名 参数类型 数据类型 DEFAULT 值; 参数的类型有三种 IN 定义输出变量,传入参数给存储过程。可以是变量或者值 OUT 定义输出变量,从存储过程中拿到数据。只能是变量 IN OUT 既是输出也是输入参数。只能是变量。 例子:分别带上不同类型的参数;主要内容;需要有CREATE FUNCTION或CREATE ANY FUNCTION的系统权限。 创建存储函数的语法和创建存储过程的类似,即 CREATE [OR REPLACE] FUNCTION 函数名[(参数[IN] 数据类型...)] --参数是可选的,但只能是IN类型(可以省略) RETURN 数据类型--return 返回值类型,不可省略 {AS|IS} [说明部分] BEGIN 可执行部分 RETURN (表达式) [EXCEPTION 错误处理部分] END [函数名]; ; 删除 一个存储函数在不需要时可以删除,但删除的人应是函数的创建者或者是拥有DROP ANY function系统权限的人。其语法如下: DROP FUNCTION 函数名; 重新编译 重新编译一个存储函数时,编译的人应是函数的创建者或者拥有ALTER ANY function系统权限的人。 语法如下:ALTER function 函数名 COMPILE; 调用 函数的调用者应是函数的创建者或拥有EXECUTE ANY function系统权限的人 函数的引用和存储过程不同,函数要出现在程序体中,可以参加表达式的运算或单独出现在表达式中,其形式如下:变量名:=函数名(...) 函数的例子;create or replace function getnamebyidfun(id in varchar2 ) return varchar2 is Result varchar2(100); begin select name into result from student where studentid =id; return(Result); exception when no_data_found then return no data found! ; end getnamebyidfun; /* declare v_id varchar2(100) :=001; v_name varchar2(100); begin v_name := getnamebyidfun(v_id); Dbms_Output.put_line(v_name); end; */ ;例子可以通过对数据字典的访问来查询存储过程或函数的有关信息,如果要查询当前用

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档