下面列出的代码会创建一个只包含规范并保持税率的软件包。我需要能够在匿名块中显示这些速率以显示每个打包变量的值。这可能是某种方式,还是我需要在我的规范中加入更多逻辑?任何帮助将不胜感激。
CREATE OR REPLACE PACKAGE
TAXRATE_PKG IS
PROCEDURE state_tax_pf(
p_state IN VARCHAR2,
pv_tax_nc IN NUMBER := 0.35,
pv_tax_tx IN NUMBER := 0.05,
pv_tax_tn IN NUMBER := 0.02) ;
END TAXRATE_PKG;
答案 0 :(得分:2)
也许你想要一个只有一些常量而不是程序的包?
CREATE OR REPLACE PACKAGE
TAXRATE_PKG
IS
g_tax_rate_nc constant NUMBER := 0.35;
g_tax_rate_tx constant number := 0.05;
g_tax_rate_tn constant number := 0.02;
END TAXRATE_PKG;
然而,想要为不同的州税率设定常数似乎有点奇怪。您似乎更有可能希望将其存储在表中并创建一个接受状态并返回存储在该表中的速率的函数。
CREATE TABLE state_tax_rate (
state_code varchar2(2) primary key,
tax_rate number(3,2)
);
insert into state_tax_rate( state_code, tax_rate )
values( 'NC', 0.35 );
insert into state_tax_rate( state_code, tax_rate )
values( 'TX', 0.05 );
insert into state_tax_rate( state_code, tax_rate )
values( 'TN', 0.02 );
CREATE OR REPLACE PACKAGE taxrate_pkg
IS
FUNCTION get_rate( p_state IN state_tax_rate.state_code%type )
RETURN state_tax_rate.tax_rate%type;
END taxrate_pkg;
CREATE OR REPLACE PACKAGE BODY taxrate_pkg
AS
FUNCTION get_rate( p_state IN state_tax_rate.state_code%type )
RETURN state_tax_rate.tax_rate%type
IS
l_tax_rate state_tax_rate.tax_rate%type;
BEGIN
SELECT tax_rate
INTO l_tax_rate
FROM state_tax_rate
WHERE state_code = p_state;
RETURN l_tax_rate;
END get_rate;
END taxrate_pkg;