表描述 客戶性別代碼表 表名 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
1:::::::::::::::::::