表描述 客户性别代码表 表名 T_GENDER
字段描述 字段名 字段类型 其他说明
性别 GENDER CHAR(1) RK
性别描述 GENDER_NAME VARCHAR2(100) Nor Null
表描述 证件类型代码表 表名 T_CERTI_TYPE
字段描述 字段名 字段类型 其他说明
证件类型 CERTI_TYPE CHAR(1) PK
类型描述 TYPE_DESC VARCHAR2(100) Not Null
表描述 客户状态代码表 表名 T_CUSTOMER_STATUS
字段描述 字段名 字段类型 其他说明
证件类型 STATUS_ID NUMBER(1) PK
类型描述 STATUS_NAME VARCHAR2(100) Nor Null
表描述 客户表 表名 T_CUSTOMER
字段描述 字段名 字段类型 其他说明
客户ID CUSTOMER_ID NUMBER(10) PK( Sequence:S_CUSTOMER_ID)
客户姓名 CUSTOMER_NAME CHAR(200) Not Null
性别 GENDER CHAR(1) Not Null FK(T_ GENDER)
生日 BIRTHDAY DATE Not Null
证件类型 CERTI_TYPE CHAR(5) Not Null FK(T_ CERTI_TYPE)
证件号码 CERTI_CODE VARCHAR2(50) Not Null
入时间 INSERT_TIME DATE 默认值:sysdate
客户状态 STATUS CHAR(1)
客户电话 MOBILE NUMBER(11)
客户地址 DI_ZHI VARCHAR2(200)
表描述 投保人信息表 表名 T_POLICY_HOLDER
字段描述 字段名 字段类型 其他说明
流水ID LIST_ID Number(10) PK(Sequence:S_POI_HOLDER_ID)
客户ID CUSTOMER_ID Number(10) Not Null FK(T_CUSTOMER)
保单ID POLICY_ID Number(10) Not Null FK(T_POLICY)
客户电话 MOBILE NUMBER(11) Not Null
。。。 备注:其他字段略
表描述 保单信息表 表名 T_POLICY
字段描述 字段名 字段类型 其他说明
保单ID POLICY_ID Number(10) PK(Sequence:S_POICY_ID)
保单状态 POLICY_STATUS Number(1) Not Null
。。。 备注:其他字段略
.结合上面表结构,指出下面 PLSQL 代码存在哪些问题?
包体代码
eate or replace package PKG_LS_PM_NB fs
procedure F_CREATE_CUSTOMER(I_CUSTQMER_NAME invarchar2,
I_GENDER in char
I_BTRTHDAY in date
I_CERTI_TYPE in t_customer.certi_type%type
I_CERTI_CODE in varchar2,
I_MOBILE in t_customer.mobile%type,
I_CUSTOMER_ID out number
Procedure p_UPO_CUS_MOBILE(I_CUSTONER_ID IN NUMBER,
I_MOBILE IN t_customer.mobile%type);
end PKG_LS_PM_NB;
包体代码
Create or replace package body PKG_LS_PM_NB is
Procedure F_CREATE_CUSTOMER(I_CUSTOMER_NAME in varchar2,
I_GENDER in char
I_BIRTHDAY in date
I_CERTI_TYPE in t_customer.certi_type%type,
I_CERTI_CODE in varchuar2,
I_mobile in t_customer.mobile%type,
I_CUSTOMER_ID out number)as
m_customer_id number;
begin
Select customer_id into I_CUSTOMER_ID from t_customer
Where customer_name = I_CUSTOMER_NAME
and gender = I_GENDER and birthday = I_BIRTHDAY
and certi_type = I_CERTI_TYPE and certi_code = I_ CERTI_CODE;
if m_customer_id is null then
--更新客户电话
Update t_customer set customer_id = I_CUSTOMER_ID,mobile = I_MOBILE
Where customer_id = I_customer_ID;
else
select S_CUATOMER_ID.nextval into I_CUSTOMER_ID from dual;
insert into t_customer values (I_CUSTOMER_ID ,I_CUSTOMER_NAME,I_GENDER,I_BIRTHDAY,I_CERTI_TUYPE,I_CERTI_CODE,sysdate, θ,I_MOBILE,null);
end if;
end;
procedure P_UPD_CUS_MOBILE(I_CUSTOMER_ID IN NUMBER,
I_MOBILE IN t_customer.mobile%type) AS
M_LIST_ID number;
M_POLICY_ID number;
M_OK number;
Cursor c1 is
Select t1.list_id,t1.policy_id from t_policy_holder t1, t_policy t2
Where t1.policy_id = t2.policy_id and t2.policy_status =1
and t1.customer_id = I_CUSTOMER_ID;
BEGIN
OPEN c1;
Loop
Fetch c1 into M_POLICY_ID,M_LIST_ID;
Exit when c1%notfound;
R_POLICY_HOLDER.mobile :=I_MOBILE;
Update t_policy_holder set mobile=I_MOBILE where list_id = M_LIST_ID;
--生成批单信息,p_generate_notice方法略
M_OK := p_generate_notice(M_POLICY_ID);
If M_OK = 1 then
--处理失败,抛错
raise_application_error(-2θθθθ1,’保单处理失败’);
end if;
END LOOP;
END;
End PKG_LS_PM_NB