。。。
grubbyt吧
全部回复
仅看楼主
level 9
GrubbyT 楼主
create or replace procedure p_c_layout_auto
is
TYPE cur is REF CURSOR;
myCur cur;
TYPE tab_esult IS RECORD (
id varchar2(100),
name1 varchar2(100),
name2 varchar2(100),
name3 varchar2(100),
name4 varchar2(100),
name5 varchar2(100),
name6 varchar2(100),
name7 varchar2(100),
name12 varchar2(100),
name13 varchar2(100),
name14 varchar2(100),
name15 varchar2(100),
name16 varchar2(100),
name17 varchar2(100),
name18 varchar2(100)
);
myResult tab_esult;
tempId varchar2(100) := null;
tempName1 varchar2(100) := null;
tempName2 varchar2(100) := null;
tempName3 varchar2(100) := null;
tempName4 varchar2(100) := null;
tempName5 varchar2(100) := null;
tempName6 varchar2(100) := null;
tempName7 varchar2(100) := null;
tempName12 varchar2(100) := null;
tempName13 varchar2(100) := null;
tempName14 varchar2(100) := null;
tempName15 varchar2(100) := null;
tempName16 varchar2(100) := null;
tempName17 varchar2(100) := null;
tempName18 varchar2(100) := null;
BEGIN
OPEN myCur FOR select name11 as id,name1,name2,name3,name4,name5,name6,name7,name12,name13,name14,name15,name16,name17,name18
from t_temp_origservicerequest_tlb
order by to_number(name11);
LOOP
FETCH myCur INTO myResult;
exit when myCur%NOTFOUND;
tempId := myResult.id;
IF tempId != '1' THEN
IF myResult.name1 is null THEN
IF myResult.name2 is null THEN
IF myResult.name3 is null THEN
IF myResult.name4 is null THEN
IF myResult.name5 is null THEN
IF myResult.name6 is null THEN
IF myResult.name7 is null THEN
Dbms_Output.put_line('这种情况是name1,name2,name3,name4,name5,name6,name7都为空的情况,不可能出现');
ELSE -- name7不是空的情况下,取出上一行数据的name1,name2,name3,name4,name5,name6赋值给当前行数据
update t_temp_origservicerequest_tlb set name1=tempName1,name2=tempName2,name3=tempName3,name4=tempName4,name5=tempName5,name6=tempName6 where name11=tempId;
update t_temp_origservicerequest_tlb set name12=tempName12,name13=tempName13,name14=tempName14,name15=tempName15,name16=tempName16,name17=tempName17 where name11=tempId;
END IF;
ELSE -- name6不是空的情况下,取出上一行数据的name1,name2,name3,name4,name5赋值给当前行数据
update t_temp_origservicerequest_tlb set name1=tempName1,name2=tempName2,name3=tempName3,name4=tempName4,name5=tempName5 where name11=tempId;
update t_temp_origservicerequest_tlb set name12=tempName12,name13=tempName13,name14=tempName14,name15=tempName15,name16=tempName16 where name11=tempId;

2011年12月13日 02点12分 1
level 9
GrubbyT 楼主
END IF;
ELSE -- name5不是空的情况下,取出上一行数据的name1,name2,name3,name4赋值给当前行数据
update t_temp_origservicerequest_tlb set name1=tempName1,name2=tempName2,name3=tempName3,name4=tempName4 where name11=tempId;
update t_temp_origservicerequest_tlb set name12=tempName12,name13=tempName13,name14=tempName14,name15=tempName15 where name11=tempId;
END IF;
ELSE -- name4不是空的情况下,取出上一行数据的name1,name2,name3赋值给当前行数据
update t_temp_origservicerequest_tlb set name1=tempName1,name2=tempName2,name3=tempName3 where name11=tempId;
update t_temp_origservicerequest_tlb set name12=tempName12,name13=tempName13,name14=tempName14 where name11=tempId;
END IF;
ELSE -- name3不是空的情况下,取出上一行数据的name1,name2赋值给当前行数据
update t_temp_origservicerequest_tlb set name1=tempName1,name2=tempName2 where name11=tempId;
update t_temp_origservicerequest_tlb set name12=tempName12,name13=tempName13 where name11=tempId;
END IF;
ELSE -- name2不是空的情况下,取出上一行数据的name1赋值给当前行数据
update t_temp_origservicerequest_tlb set name1=tempName1 where name11=tempId;
update t_temp_origservicerequest_tlb set name12=tempName12 where name11=tempId;
END IF;
END IF;
END IF;
IF myResult.name1 is not null THEN
tempName1 := myResult.name1;
END IF;
IF myResult.name2 is not null THEN
tempName2 := myResult.name2;
END IF;
IF myResult.name3 is not null THEN
tempName3 := myResult.name3;
END IF;
IF myResult.name4 is not null THEN
tempName4 := myResult.name4;
END IF;
IF myResult.name5 is not null THEN
tempName5 := myResult.name5;
END IF;
IF myResult.name6 is not null THEN
tempName6 := myResult.name6;
END IF;
IF myResult.name7 is not null THEN
tempName7 := myResult.name7;
END IF;
IF myResult.name12 is not null THEN
tempName12 := myResult.name12;
END IF;
IF myResult.name13 is not null THEN
tempName13 := myResult.name13;
END IF;
IF myResult.name14 is not null THEN
tempName14 := myResult.name14;
END IF;
IF myResult.name15 is not null THEN
tempName15 := myResult.name15;
END IF;
IF myResult.name16 is not null THEN
tempName16 := myResult.name16;
END IF;
IF myResult.name17 is not null THEN
tempName17 := myResult.name17;
END IF;
IF myResult.name18 is not null THEN
tempName18 := myResult.name18;
END IF;
END LOOP;
CLOSE myCur;
END p_c_layout_auto;

2011年12月13日 02点12分 2
1