第七章
子程序和程序包
Evaluation only.
Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.
Copyright 2004-2011 Aspose Pty Ltd.
回顾
游标用于处理查询结果集中的数据
游标类型有:隐式游标、显式游标和 REF 游标
隐式游标由 PL/SQL 自动定义、打开和关闭
显式游标用于处理返回多行的查询
显式游标可以删除和更新活动集中的行
要处理结果集中所有记录时,可使用循环游标
在声明 REF 游标时,不需要将 SELECT 语句与 其关联
Evaluation only.
Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.
Copyright 2004-2011 Aspose Pty Ltd.
目标
了解和使用子程序
了解和使用程序包
Evaluation only.
Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.
Copyright 2004-2011 Aspose Pty Ltd.
子程序 2-1
命名的 PL/SQL 块,编译并存储在数据库中。
子程序的各个部分:
声明部分
可执行部分
异常处理部分(可选)
子程序的分类:
过程 - 执行某些操作
函数 - 执行操作并返回值
Evaluation only.
Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.
Copyright 2004-2011 Aspose Pty Ltd.
子程序 2-2
子程序的优点:
模块化
将程序分解为逻辑模块
可重用性
可以被任意数目的程序调用
可维护性
简化维护操作
安全性
通过设置权限,使数据更安全
Evaluation only.
Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.
Copyright 2004-2011 Aspose Pty Ltd.
过程 8-1
过程是用于完成特定任务的子程序
例如:
前往售票厅
询问关于车票的信息
排队等候
在柜台购买车票
Evaluation only.
Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.
Copyright 2004-2011 Aspose Pty Ltd.
过程 8-2
创建过程的语法:
CREATE [OR REPLACE] PROCEDURE
[()]
IS|AS
BEGIN
[EXCEPTION
]
END;
创建过程,可指定运行过程需传递的参数
处理异常
包括在过程中要执行的语句
Evaluation only.
Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.
Copyright 2004-2011 Aspose Pty Ltd.
过程 8-3
create or replace procedure test4(v_id varchar2)
is
v_ename emp.ename%type;
v_sal emp.sal%type;
begin
select ename, sal into v_ename,v_sal from emp where empno=v_id;
dbms_output.put_line(v_ename||' '||v_sal);
end;
Evaluation only.
Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.
Copyright 2004-2011 Aspose Pty Ltd.
过程 8-4
执行过程的语法:
EXECUTE procedure_name(parameters_list);
SQL> SET SERVEROUTPUT ON
SQL> EXEC proc_stu(‘007');
Evaluation only.
Created with Aspose.Slides for