子程序的介绍:
过程:用于执行某项操作
函数:用于执行某项操作并返回值
声明部分
可执行部分
异常部分(可选)
优点:
将程序分解为多个逻辑模块
子程序在被执行之后,被存储在数据库中,可以在任意数目的
应用程序中使用
子程序简化了维护
用户直接使用共享池中解析后的程序
存储过程:
形式参数:在子程序说明的参数列表中声明的变量
CREATEPROCEDURE raise_sal(
p_idNUMBER, p_amount NUMBER)
...
ENDraise_sal;
•实际参数:在子程序被调用的参数列表中引用的变量或表达式
raise_sal(v_id,2000)
创建带参数的过程
参数模式IN 是默认的参数模式。换句话说,如果未指定一个参数的模式,该参数就被认为是一个 IN 参数。参数模式 OUT和 IN OUT 必须在参数的前面被明确指定。
一个IN 模式的形式参数不能被指定一个值,就是说,一个在过程体中的 IN 参数不能被修改。
一个OUT 或 IN OUT 参数在返回主叫环境之前必须被指定一个值。
IN参数可以在参数列表中被指定一个默认值。OUT 和 INOUT 参数不能被指定默认值。
默认情况下IN 参数是引用传递,而 OUT 和 IN OUT 参数是值传递。
声明主机变量,执行raise_sal过程
用 VARIABLE命令创建主机变量。
调用 raise_sal过程,提供这些主机变量作为 OUT 参数。
在 EXECUTE命令中引用主机变量时,注意冒号 (:) 的使用。
异常处理:
当一个异常发生时,控制立即转向块的异常部分。如果异常被处理,块终止运行,并且控制转向主叫程序。
删除存储在数据库中的过程
DROP PROCEDURE procedure_name
权限授予:
访问引用对象的权限,不能通过角色授权。
PLSQL对象信息存储:
通过以下方法查看PL/SQL对象的存储信息:
通过user_objects视图查看PL/SQL对象的信息;
通过user_source视图查看PL/SQL对象的程序文本;
desc查看对象的结构;
showerr查看对象在编译过程中出现的错误;
通过dbms_output包查看PL/SQL对象的调试信息;
USER_OBJECTS:
USER_SOURCE:
USER_ERROR: