共有三个表表 dw 单位表
dwid NUMBER(10,0) //单位id
dwname VARCHAR2(10) // 单位名称
表 person 个人表
CREATE TABLE "QHF"."PERSON"
( "PERSONID" NUMBER(10,0) NOT NULL ENABLE, // 个人id
"NAME" VARCHAR2(10) NOT NULL ENABLE, // 个人名称
"DWID" NUMBER(10,0) NOT NULL ENABLE // 现在个人所有单位
)
表 DWCHANGE //记录一个人的单位变动表
CREATE TABLE "DWCHANGE"
( "PERSONID" NUMBER(10,0) NOT NULL ENABLE, //个人id
"BEFOREDWID" NUMBER(10,0) NOT NULL ENABLE, //变动前单位id
"AFTERDWID" NUMBER(10,0) NOT NULL ENABLE, //变动后单位id
"CHANGEDATE" DATE NOT NULL ENABLE //变动日期
)
我要建一个函数
create or replace function getdwid(grid in number,rq in date) return number is
Result number;
begin
通过传入参数 grid 为personid
rq 为日期
这里编程 返回 这人在这个时间 他所在的单位 id return(Result);
end getdwid;
dwid NUMBER(10,0) //单位id
dwname VARCHAR2(10) // 单位名称
表 person 个人表
CREATE TABLE "QHF"."PERSON"
( "PERSONID" NUMBER(10,0) NOT NULL ENABLE, // 个人id
"NAME" VARCHAR2(10) NOT NULL ENABLE, // 个人名称
"DWID" NUMBER(10,0) NOT NULL ENABLE // 现在个人所有单位
)
表 DWCHANGE //记录一个人的单位变动表
CREATE TABLE "DWCHANGE"
( "PERSONID" NUMBER(10,0) NOT NULL ENABLE, //个人id
"BEFOREDWID" NUMBER(10,0) NOT NULL ENABLE, //变动前单位id
"AFTERDWID" NUMBER(10,0) NOT NULL ENABLE, //变动后单位id
"CHANGEDATE" DATE NOT NULL ENABLE //变动日期
)
我要建一个函数
create or replace function getdwid(grid in number,rq in date) return number is
Result number;
begin
通过传入参数 grid 为personid
rq 为日期
这里编程 返回 这人在这个时间 他所在的单位 id return(Result);
end getdwid;
create or replace function getdwid(grid in number,rq in date) return number is
Result number;
begin
result := 0; select nvl(afterdwid,-1) into Result
from dwchange
where changedate <= rq
and rownum = 1
order by changedate desc; --(-1代表无效返回)
return(Result);
end getdwid;
from dwchange
where to_date(changedate) <= rq
and rownum = 1
order by changedate desc;