是否可以在PL / SQL函数中加入查询?使用连接时,我的函数无法正确编译。有没有其他方法可以解决这个问题?
为三个规则中的每个规则创建一个PL / SQL函数。该函数接受一个参数AppID,并返回0 - Not Acceptable或1 - Acceptable
申请人(SSN,FirstName,LastName,DOB)
学院(AcadID,AcadName)
申请(AppID,SSN,AcadID,年)
MEDICAL_RECORDS(SSN,Pulse,收缩压,舒张压,DateUpdated)
EVAL_RULES(RuleID,FunctionName)
评估(EvalID,EvalDate,AppID)
结果(EvalID,RuleID,结果)
年龄:
脉冲:
血压:
答案 0 :(得分:0)
以下是针对AGE的第一组规则的实现。这是未经测试的。
create or replace function validate_age
( p_app_id in applications.appid%type)
return varchar2
is
cursor appcur (p_id applications.appid%type) is
select apt.dob
, aca.acadname
from applications app
join applicants apt on app.ssn = apt.ssn
join academies aca on app.acadid = aca.acadid;
apprec appcur%rowtype;
return_value varchar2(20);
age number;
begin
open appcur(p_app_id);
fetch appcur into apprec;
-- basic error handling
if appcur%notfound then
raise_application_error(-20000, 'Invalid Application number ['|| p_app_id ||']');
end if;
-- age = whole number of years between now and date of birth
age := trunc(months_between(sysdate, apprec.dob)/12);
if (age between 16 and 22 and apprec.acadname in ('USAFA', 'USMA'))
then
return_value:= 'Acceptable';
elsif (age between 16 and 40 and apprec.acadname in ('USUHS'))
then
return_value:= 'Acceptable';
else
return_value:= 'Not Acceptable”';
end if;
close appcur;
return return_value;
end validate_age;
/
扩展此模板以处理其他规则应该是小菜一碟。
记得在交作业时承认StackOverflow!