Oracle数据库入门教程.doc_第1页
Oracle数据库入门教程.doc_第2页
Oracle数据库入门教程.doc_第3页
Oracle数据库入门教程.doc_第4页
Oracle数据库入门教程.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Oracle数据库入门教程子程序是已经命名的PLSQL块,他们存储在数据库中,可以为他们指定参数,可以在客户端和应用程序中调用它们。子程序包括 存储过程 和 函数,程序包 是存储过程和 函数的集合。存储过程-语法:CREATE OR REPLACE PROCEDURE procedure_name(parameter_list)IS|ASlocal_declarationsBEGINexecutable_statementsEXCEPTIONexception_handlersEND procedure_name;语法说明:procedure_name 是过程名字parameter_list 是参数列表local_declarations 是局部声明executable_statements 是可执行语句,execption_handlers是 异常处理程序-create or replace procedure wyd_print(times number)is i number :=0;beginloopi :=i+1;DBMS_OUTPUT.PUT_LINE(第|i|次 循环!);exit when i= times;end loop;end;/直接调用存储过程:exec wyd_print(20)execute wyd_print(30);过程参数模式调用程序是通过参数向被调用的过程传递值的。参数传递的模式有3种:IN ,OUT ,IN OUT 。也就是输入,输出,输入 输出定义过程参数的语法:parameter_name IN |OUT |IN OUT datatype :=| DEFAULT expression参数IN模式 是默认模式如果要指定OUT | IN OUT 模式参数 要 明确指定-实例:CREATE OR REPLACE PROCEDURE mypar(a IN number,b OUT number,c IN OUT number)ISBEGINDBMS_OUTPUT.PUT_LINE(a -|a);DBMS_OUTPUT.PUT_LINE(b -|b);DBMS_OUTPUT.PUT_LINE(c -|c);-a:=111;b:=222;c:=333;DBMS_OUTPUT.PUT_LINE(a -|a);DBMS_OUTPUT.PUT_LINE(b -|b);DBMS_OUTPUT.PUT_LINE(c -|c);END mypar;/-declareaa number:=11;bb number:=22;cc number:=33;beginDBMS_OUTPUT.PUT_LINE(before aa -|aa);DBMS_OUTPUT.PUT_LINE(before bb -|bb);DBMS_OUTPUT.PUT_LINE(before cc -|cc);mypar(aa,88,cc);DBMS_OUTPUT.PUT_LINE(after aa -|aa);DBMS_OUTPUT.PUT_LINE(after bb -|bb);DBMS_OUTPUT.PUT_LINE(after cc -|cc);end;/注意几点:(1)IN类型参数 在 过程中不能 再给赋值(2)OUT INOUT 类型 可以进入后赋值。(3)OUT 类型参数在调用过程传入参数时无效,(4)OUT ,IN OUT 类型参数 在调用过程时传入的必须是变量-一个过程创建了,将执行权限授予其他用户语法:GRANT EXECUTE ON procedure_name TO USER_Name; /授权给特定用户执行过程的权限GRANT EXECUTE ON procedure_name TO public ; /授权给所有数据库用户执行过程的权限查看数据库里面的存储过程:select object_name from user_objects where object_type=PROCEDURE;select substr(object_name,1,20) object_name,object_type from user_objects where object_type=PROCEDURE;select substr(object_name,1,10) object_name,object_type from user_objects;删除一个过程:DROP procedure procedure_name;_ 函数的 定义 和 使用 _函数与过程相似,也是数据库中存储的已经命名的PL/SQL块。函数的主要特性:(1)必须有一个返回值(2)函数不能单独执行,只能通过SQL语句 或者PL/SQL程序块来调用。函数定义 - 语法:CREATE OR REPLACE FUNCTION function_name(parameter1,parameter2.)RETURN datatypeIS|ASlocal_declarationsBEGINExexutable_Statements;EXCEPTIONException_handlers;END;/注意:(1)函数只能带有 IN 参数,而不能带有 IN OUT 或 OUT 参数。(2)形式参数必须只能使用数据库类型,不能使用PL/SQL类型。(3)函数返回类型也必须是数据库类型。-创建一个函数:create or replace function fun_sum(a number,b number)return numberISBEGINreturn a+b;END;-通过SQL来执行函数:SELECT function_name(parameter1,parameter2.) FROM DUAL;select fun_sum(5,6) from dual;-查看数据库里面的用户创建的函数:select object_name from user_objects where object_type=FUNCTION;select substr(object_name,1,20) object_name,object_type from user_objects where object_type=FUNCTION;-函数的授权:GRANT EXECUTE ON function_name TO USER_Name; /函数的使用权授予特定的用户GRANT EXECUTE ON function_name TO public; /函数的使用权授予数据库中所有用户example:GRANT EXECUTE ON fun_sum to public;-* 自主事务处理自主事务处理 是有另一个事务处理(主事务处理) 启动的独立事务处理。举例:/P1就是 自主事务处理CREATE OR REPLACE PROCEDURE p1 ASPRAGMA AUTONOMOUS_TRANSACTION; -就这句话,让事务处理独立开来了BEGINEND p1;/CREATE OR REPLACE PROCEDURE p2ASBEGIN.p1;.END p2;/p2 过程 调用 了P1 过程,但是 p1过程声明了事务独立,使得p1的运行对p2没有直接影响。删除一个函数:语法:DROP FUNCTION Function_name;Example:drop FUNCTION fun_sum;-* 程序包 的创建 和使用 *-程序包是一种数据库对象,它是对相关PL/SQL类型,子程序,游标,异常,变量和常量的封装。创建一个程序包 有两个步骤:(1) 创建 程序包规范。(也可以说成是 声明程序包)基本语法:CREATE OR PEPLACE PACKAGE package_nameIS|ASpublic type and item declarationssubprogram specificationsEND package_name; /-(2) 创建 程序包主体。(也可以说成是实现程序包)基本语法:CREATE OR REPLACE PACKAGE BODY package_nameIS|ASPublic type and item declarationsSubprogram bodiesBEGIN Initialization_statementsEND package_name;package_namePublic type and item declarations 声明变量,常量,游标,异常 或者 类型。Subprogram bodies 定义公共和私有PL/SQL子程序-实际例子:(1)创建程序包规范:CREATE OR REPLACE PACKAGE wyd_packageISPROCEDURE wyd_print(name varchar2);FUNCTION wyd_sum(a number,b number) return number;END wyd_package;(2)创建程序包主体:CREATE OR REPLACE PACKAGE BODY wyd_packageAS-实现wyd_print 存储过程PROCEDURE wyd_print(name varchar2) ISBEGINDBMS_OUTPUT.PUT_LINE(Hello,|name);END wyd_print;-实现wyd_sum 函数FUNCTION wyd_sum(a number,b number) RETURN NUMBERISBEGINreturn a+b;END wyd_sum;END wyd_package;-调用创建的包中的存储过程 和 函数set serveroutput onexec wyd_package.wyd_print(WangYuDong);select wyd_package.wyd_sum(12,55) from dual;-查看数据库里面的用户创建的程序包:select object_name from user_objects where object_type=PACKAGE;select substr(object

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论