























包的定义形式如下:
PACKAGE BODY 包名 IS
变量名说明
游标说明
游标申明
例外说明
记录说明
plsql说明
过程体
函数体
BEGIN
语句序列
END[包名];
CREATE OR REPLACE PACKAGE BODY pack_me AS
PROCEDURE order_proc (orno VARCHAR2) IS
stat CHAR(1);
BEGIN
SELECT ostatus INTO stat FROM order_master
WHERE orderno = orno;
……
END order_proc;
FUNCTION order_fun(ornos VARCHAR2)
RETURN VARCHAR2
IS
icode VARCHAR2(5);
ocode VARCHAR2(5);
BEGIN
......
END order_fun;
END pack_me;
/* 示例 */
/* 包定义 */
create or replace package toyspack
is
procedure updatetoyprice;
function augtoyprice return number;
end;
---------------------------------------
/* 包体 */
create or replace package body toyspack
is
/* 存储过程 */
procedure updatetoyprice
as
augprice number;
begin
augprice:=augtoyprice;
while(augprice<=400)
loop
update my_toys
set price=case
when pricex1.1<50 then pricex1.1
else
price;
end ;
augprice:=augtoyprice;
end loop;
commit;
end;
/* 函数 */
function augtoyprice
return number
as
augprice number;
begin
select avg(price) into augprice from my_toys;
return augprice;
end;
end;
/* 包调用 */
execute toyspack.updatetoyprice;
游标的定义分为游标规范和游标主体两部分
在包规范中声明游标规范时必须使用 RETURN 子句指定游标的返回类型
RETURN子句指定的数据类型可以是:
SQL> CREATE OR REPLACE PACKAGE BODY cur_pack AS
CURSOR ord_cur(vcode VARCHAR2)
RETURN order_master%ROWTYPE IS
SELECT * FROM order_master WHERE VENCODE=vcode;
PROCEDURE ord_pro(vcode VARCHAR2) IS
or_rec order_master%ROWTYPE;
BEGIN
OPEN ord_cur(vcode);
LOOP
FETCH ord_cur INTO or_rec;
EXIT WHEN ord_cur%NOTFOUND;
DBMS_OUTPUT.PUT_LIne(’返回的值为' || or_rec.orderno);
END LOOP;
END ord_pro;
END cur_pack;
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。