分类:
2008-10-15 16:27:55
begin
if v_ch is null or v_from is null then
return 'error';
end if;
if instr(v_ch,':') = 0 or instr(v_from,':')= 0 then
return 'error';
end if;
temp_v := v_ch;
loop
fenhao_address := instr(temp_v,';');
if fenhao_address=0 then
--没有找到分号,则为最后一组属性名:属性值
v_pv := temp_v;
--检查属性是否是要替换的属性
if v_pv != v_from then
result_v := result_v||';'||v_pv ;
else
if v_to is not null then
result_v := result_v||';'||v_to;
end if;
end if;
--跳出循环
exit;
else
--取出属性对
v_pv := substr(temp_v,1,instr(temp_v,';')-1);
--检查属性是否是要替换的属性
if v_pv != v_from then
result_v := result_v||';'||v_pv ;
else
if v_to is not null then
result_v := result_v||';'||v_to;
end if;
end if;
--得到剩余的属性对
temp_v := substr(temp_v,instr(temp_v,';')+1);
end if;
end loop;
--对结果进行处理,去掉最左侧的分号
if substr(result_v,1,1)=';' then
result_v := substr(result_v,2);
end if;
--返回结果
return result_v;
end sp_replace_property_value;