我想用oracle中的function调用下面的package 用
function输入3个值 调用package 后返回给function
请问怎么写
CREATE OR REPLACE PACKAGE BODY LESSON.PK_SHUILV
IS
PROCEDURE PK_SHUILV
/* Com=commodity Pri=price Pre=precision */
( InputDate in CHAR,
InpuComCode in number,
InputComNum in number,
Tax out number,
Pri out number,
TaxAndPri out number,
OutputTax out number,
OutputPri out number,
OutputTaxAndPri out number,
TaxRate out number,
TaxType out number,
Pre out number,
UnitPri out char,
CodeErr out char,
DateErr out date,
MyReturn out NUMBER
) is
CodeNum NUMBER;
BEGIN
DateErr:=to_date(InputDate,'YYYY-MM-DD');
/***************************** tax ******************************/
select Code
into CodeErr
from T3
where CODE = InpuComCode; select TAX
into TaxRate
from LESSON.T1
where DATENOW = InputDate; select TAXTYPE
into TaxType
from LESSON.T3
where CODE = InpuComCode; select TAXDEF
into Pre
from LESSON.T3
where CODE = InpuComCode; select PRICE
into UnitPri
from LESSON.T2
where CODE = InpuComCode;IF TaxType = 0 THEN
Tax:= (UnitPri-(UnitPri/TaxRate));
Pri:= UnitPri*InputComNum - Tax*InputComNum;
END IF;IF TaxType = 1 THEN
Tax:= UnitPri * (TaxRate - 1);
Pri:= UnitPri*InputComNum;
END IF;TaxAndPri:= Tax*InputComNum + Pri;
/***************************** precision ******************************/
IF Pre = 0 THEN
OutputTax:=round(Tax,1)*InputComNum;
OutputPri:=round(Pri,1);
END IF;IF Pre = 1 THEN
OutputTax:=ceil(Tax)*InputComNum;
OutputPri:=ceil(Pri);
END IF;IF Pre = 2 THEN
OutputTax:=floor(Tax)*InputComNum;
OutputPri:=floor(Pri);
END IF;OutputTaxAndPri:= OutputTax+OutputPri;END;END;
/
function输入3个值 调用package 后返回给function
请问怎么写
CREATE OR REPLACE PACKAGE BODY LESSON.PK_SHUILV
IS
PROCEDURE PK_SHUILV
/* Com=commodity Pri=price Pre=precision */
( InputDate in CHAR,
InpuComCode in number,
InputComNum in number,
Tax out number,
Pri out number,
TaxAndPri out number,
OutputTax out number,
OutputPri out number,
OutputTaxAndPri out number,
TaxRate out number,
TaxType out number,
Pre out number,
UnitPri out char,
CodeErr out char,
DateErr out date,
MyReturn out NUMBER
) is
CodeNum NUMBER;
BEGIN
DateErr:=to_date(InputDate,'YYYY-MM-DD');
/***************************** tax ******************************/
select Code
into CodeErr
from T3
where CODE = InpuComCode; select TAX
into TaxRate
from LESSON.T1
where DATENOW = InputDate; select TAXTYPE
into TaxType
from LESSON.T3
where CODE = InpuComCode; select TAXDEF
into Pre
from LESSON.T3
where CODE = InpuComCode; select PRICE
into UnitPri
from LESSON.T2
where CODE = InpuComCode;IF TaxType = 0 THEN
Tax:= (UnitPri-(UnitPri/TaxRate));
Pri:= UnitPri*InputComNum - Tax*InputComNum;
END IF;IF TaxType = 1 THEN
Tax:= UnitPri * (TaxRate - 1);
Pri:= UnitPri*InputComNum;
END IF;TaxAndPri:= Tax*InputComNum + Pri;
/***************************** precision ******************************/
IF Pre = 0 THEN
OutputTax:=round(Tax,1)*InputComNum;
OutputPri:=round(Pri,1);
END IF;IF Pre = 1 THEN
OutputTax:=ceil(Tax)*InputComNum;
OutputPri:=ceil(Pri);
END IF;IF Pre = 2 THEN
OutputTax:=floor(Tax)*InputComNum;
OutputPri:=floor(Pri);
END IF;OutputTaxAndPri:= OutputTax+OutputPri;END;END;
/
解决方案 »
- 求一条UPDATE 语句!
- 关于交叉表与FULL JOIN-达人进
- 关于oracle查询日期横向显示的问题
- 请教高手,oracle8i 中临时表的用法!
- 下载了Oracle 9i后不知怎样安装?
- 本机装oracle和虚拟装oracle有什么差别。。。
- 新手提问:“decode(acd.fact_cate,'H','891200','891210') as code01”中的列别名和数据库中的字段名的关系是什么?
- 一个加了判断的复杂存储过程,各位帮我看看啊~~~
- 如何在删除主键纪录的时候删除其他表中对应的外键??
- Oracle10g数据恢复问题
- 请问个sql语句 用partition by 能解决否?
- 遇到ORA-25153: Temporary Tablespace is Empty這樣的問題怎么解決?
( InputDate in CHAR,
InpuComCode in number,
InputComNum in number,
OutputTax out number,
OutputPri out number,
OutputTaxAndPri out number,
MyReturn out number
)
RETURN number
IS
a char;
BEGIN
a.PK_SHUILV('InputDate',InpuComCode,InputComNum);END;
/说a无效 请问?