使用包組織和編寫oralce存儲過程

包用于邏輯組合相關的過程和函數,它有包規范和包體兩部分組成。包規范用于定義公用的常量、變量、過程和函數,建立包規范可以使用CREATE PACKAGE命令

在SQL*PLUS或者PL/SQL工具的命令行下創建包規范示例如下:

CREATE PACKAGE emp_pkg IS
PROCEDURE update_sal(name VARCHAR2,newsal NUMBER);
FUNCTION annual_income(name VARCHAR2) RETURN NUMBER;
END;
/

包規范只包含了過程和函數的說明,而沒有過程和函數的實現代碼。包體用于實現包規范中的過程和函數,在SQL*PLUS中建立包體可以使用CREATE PACKAGE BODY命令。示例如下:

CREATE PACKAGE BODY emp_pkg IS
PROCEDURE update_sal(name VARCHAR2,newsal NUMBER)
IS
BEGIN
UPDATE emp SET sal=newsal
WHERE lower(ename)=lower(name);
END;
FUNCTION annual_income(name VARCHAR2) RETURN NUMBER
IS
annual_salary NUMBER(7,2);
BEGIN
SELECT sal*12+nvl(comm,0) INTO annual_salary
FROM emp WHERE lower(ename)=lower(name);
RETURN annual_salary;
END;
END;
/

當調用包的過程和函數時,在過程和函數名之前必須要帶有包名作為前綴(包名.子程序名),而如果要訪問其他方案的包,還必須加方案名作為前綴(方案名.包名.子程序)。示例如下:

SQL> call emp_pkg.update_sal('scott',1500);
 
Method called
 
SQL> VAR income NUMBER
SQL> CALL emp_pkg.annual_income('scott') INTO:income;
 
Method called
income
---------
18000


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值