[code="java"]
--两张Oracle数据库表:
--票品目录表
CREATE TABLE "YZPP"."T_PUB_PPML"
( "N_PPDH" NUMBER(8,0) NOT NULL ENABLE, --票品代号
"N_PPZL" NUMBER(1,0), --票品种类
"N_MZ" NUMBER(10,4), --面值
CONSTRAINT "PK_SC" PRIMARY KEY ("N_PPDH")
)
--基础内件表
CREATE TABLE "YZPP"."T_JYP_JCNJ"
( "N_PPDH" NUMBER(8,0) NOT NULL ENABLE, --票品代号
"N_NJDH" NUMBER(8,0) NOT NULL ENABLE, --内件代号
"N_PPSL" NUMBER(4,0) DEFAULT 1, --票品数量
CONSTRAINT "PK_SC" PRIMARY KEY ("N_PPDH,N_NJDH"),
CONSTRAINT "FK_SC_S" FOREIGN KEY ("N_NJDH")
REFERENCES "YZPP"."t_pub_ppml" ("N_PPDH") ENABLE
)
select N_PPDH,N_NJDH,N_PPSL from T_JYP_JCNJ
89410400 138800 1
89410400 4282100 1
89420400 48722400 4
89420400 48732100 1
89420400 62285100 10
89420400 62285200 10
[/code]
票品种类(N_PPZL)取值为:
0:集邮票 1:零枚票 2:集邮品 3集邮用品 4:拓展产品 5:通信票
其中:
2:集邮品 3集邮用品 4:拓展产品 ->属于上层的东西没有面值,有内件
0:集邮票 1:零枚票 5:通信票 ->属于底层的东西,有面值,没有内件
请写出一迭代函数,求票品种类 n_ppzl in (2,3,4) 的品的内件面值:
(2:集邮品 3集邮用品 4:拓展产品--统称为品)
(0:集邮票 1:零枚票 5:通信票 --统称为票)
[code="java"]
--求票或品的内件面值
function f_njmz(number(8) n_ppdh){
number(4) ppzl;
number(15,4) mz;
select n_ppzh into n_ppzl from t_pub_ppml where where n_ppdh=:n_ppdh
if n_ppzl in (0,1,5)
select n_mz into mz from t_pub_ppml where where n_ppdh=:n_ppdh
open cursor
select N_NJDH from T_JYP_JCNJ where n_ppdh=:n_ppdh)
n_njdh
........
--注:一个品可能有多个内件;
如果内件是品,内件还有内件;
如果内件是票,内件
..........
....
return mz;
}
[/code]