目录
------------创建子程序>>调用子程序>>创建带参数的子程序>>对子程序授权>>删除子程序------------
一、子程序
子程序是已命名的PL/SQL块,它们存储在数据库中,可以为它们指定参数,可以从任何数据库客户端和应用程序中调用它们。子程序包括存储过程和函数。使用存储过程执行操作,使用函数执行操作并返回值,就像应用程序中的方法。
与匿名的PL/SQL块一样,子程序具有声明部分、可执行部分、异常处理部分(可选)。
1、声明部分
声明部分包括类型、游标、常量、异常和嵌套子程序的声明。这些项是局部的,在退出子程序时将不复存在。
2、可执行部分
可执行部分包括赋值、控制执行过程以及操纵Oracle的语句。
3、异常处理部分
异常处理部分包括异常处理程序,负责处理执行存储过程中出现的异常。
***子程序的优点
二、存储过程
存储过程是执行某些操作的子程序,是执行特定任务的模块。从根本上讲,存储过程就是命名的PL/SQL块,它可以被赋予参数,存储在数据库中,然后由一个应用程序或其他PL/SQL程序调用。
1、存储过程的用法
①创建存储过程
②调用存储过程
为了能够顺利地调用所创建的存储过程,对权限要求如下:
调用存储过程的用户和创建存储过程的用户相同,以保证调用存储过程的用户有使用存储过程的权限。
1)用命令调用
用命令在SQL提示符下调用,使用EXECUTE语句来执行过程。
2)在PL/SQL块中调用
提示:在PL/SQL块中调用存储过程时不需要写exec,直接写存储过程名称调用,exec是命令行中调用存储过程的命令。
③存储过程的参数模式
④存储过程的访问权限
存储过程创建之后,只有创建该存储过程的用户和管理员才能调用它。其他用户如果要调用该存储过程,需要得到存储过程的execute权限。
GRANT EXECUTE ON 存储过程名 TO 用户名;--授予权限
GRANT EXECUTE ON 存储过程名 TO 用户名 WITH GRANT OPTION;--授予权限的同时授予其赋予其他用户权限的权限
REVOKE EXECUTE ON 存储过程名 FROM 用户名;--撤销权限
⑤删除存储过程
DROP PROCEDURE 存储过程名;
2、存储过程的跟踪和调试
①在SQL*Pus调试
3、存储过程和游标的用法
存储过程返回多行数据——把存储过程和游标结合起来。
实现步骤:
①将存储过程的参数定义为游标类型,且该游标为输出类型参数。
②把查询到的结果赋值给参数游标。
③调用这个存储过程时就可以得到这个结果集。
DECLARE
TYPE empInfo IS REF CURSOR;
v_empInfo empInfo;
empInfomation emp%ROWTYPE;
BEGIN
getAll(v_empInfo);
LOOP
FETCH v_empInfo INTO empInfomation;
EXIT WHEN v_empInfo%NOTFOUND;
dbms_output.put_line('姓名:'||empInfomation.ename||' 工资:'||empInfomation.sal);
END LOOP;
END;
4、存储过程和事务的用法
---------------------------------------------------
三、函数
函数与存储过程相似,也是数据库中存储的已命名的PL/SQL程序块。函数的主要特性是它必须返回一个值。创建函数时通过RETURN子句指定函数返回值的数据类型。在函数体的任何地方,用户都可以通过RETURN expression语句从函数返回,这里的表达式的数据类型要与RETURN子句指定的类型相同。与存储过程类似,函数将代码分割成模块,有助于组织代码。
1、函数的语法
提示:
2、函数和存储过程的优点和区别
①存储过程与函数的优点
②存储过程与函数的区别
③使用存储过程与函数的原则