一、数据库
1.建表
1) 在开发库crmdb用户tbcs上新建表"st_src_自己名字缩写",要求包含字段如下:
id 10位number类型 非空,、name 256位varchar2类型 可空,、status 1位number类型 非空,、statusdate date类型 非空 默认为系统时间。并在id列上建立唯一索引。
建表语句:
CREATE table ST_SRC_CHEYANG
(
ID NUMBER(10) not null,
NAME VARCHAR2(256),
STATUS NUMBER(1) not null,
STATUSDATE DATE
)
2)在开发库crmdb用户tbcs上新建表"st_mid_自己名字缩写",要求包含字段如下:
id 10位number类型 非空,name 256位varchar2类型 可空,intime date类型 非空 默认为系统时间。并在id,intime列上建立联合唯一索引。
建表语句:
CREATE table ST_MID_CHEYANG
(
ID NUMBER(10) not null,
NAME VARCHAR2(256),
INTIME DATE DEFAULT SYSDATE not null
)
3)在开发库crmdb用户tbcs上新建表"st_dst_自己名字缩写",要求包含字段如下:
id 10位number类型 非空,name 256位varchar2类型 可空,value 256位varchar2类型 非空。
建表语句:
CREATE table ST_DST_CHEYANG
(
ID NUMBER(10) not null,
NAME VARCHAR2(256),
VALUE VARCHAR2(256) not null
)
2.新建触发器
1)在开发库crmdb用户tbcs上新建"st_src_自己名字缩写"表的触发器"trg_st_src_自己名字缩写",
要求在插入新纪录,或者修改status字段时,status字段值为1,则将记录同步到"st_mid_自己名字缩写"表,intime填写系统时间。
创建语句:
CREATE OR REPLACE TRIGGER TRG_ST_SRC_CHEYANG
AFTER INSERT OR UPDATE OF status ON ST_SRC_CHEYANG FOR EACH ROW
BEGIN
IF :new.status=1 THEN
INSERT INTO ST_MID_CHEYANG VALUES (:new.id,:new.status,:SYSDATE);
END IF;
END;
3.新建存储过程
1) 在开发库crmdb用户tbcs上新建存储过程"prc_st_dst_自己名字缩写",要求执行时,处理"st_mid_自己名字缩写"表中的所有数据,
当记录的name字段长度和自己名字汉语拼音长度一致,则入"st_dst_自己名字缩写"表,value值填写yyyymmddhh24miss格式当前时间+'和我名字等长'字符串,例如"*****和我名字等长";
当长度不一致时,判断长度大小,比自己名字长的,入"st_dst_自己名字缩写"表,value值填写yyyymmddhh24miss格式当前时间+'比我名字长'字符串,例如"******长";
比自己名字短的,入"st_dst_自己名字缩写"表,value值填写yyyymmddhh24miss格式当前时间+'比我名字短'字符串,例如"20150727165103比我名字短";
插入后,将"st_mid_自己名字缩写"表对应记录删除;
需要做提交次数控制,每3条提交一次。
to_char(sysdate,'yyyymmddhhmiss')
CREATE OR REPLACE PROCEDURE PRC_ST_DST_CHEYANG
(
i_VarParam IN VARCHAR2,
)
AS
v_Name VARCHAR2(256);
v_Id NUMBER(10);
v_Value VARCHAR2(256);
cursor c_queryName is select name,id from ST_MID_CHEYANG ;
BEGIN
OPEN c_queryName;
loop
fetch c_queryName into v_Name,v_Id ;
exit when c_postype%notfound;
if i_VarParam = v_Name then
v_Value :=to_char(sysdate,'yyyymmddhhmiss')||'和我名字等长';
else if i_VarParam = v_Name then
v_Value :=to_char(sysdate,'yyyymmddhhmiss')||'比我名字长';
else
v_Value :=to_char(sysdate,'yyyymmddhhmiss')||'比我名字短';
end if;
insert into ST_DST_CHEYANG (ID,NAME,VALUE) VALUES (:=v_Id,:=v_Name,)
end loog;
CLOSE c_queryName;
END