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
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;