cursor mycursor is select * from TB_USER where NNDP<>' '; --从数据表查询对应要更新的记录:
myrecord mycursor%rowtype; --定义游标记录类型
Counter int :=0;
begin
open mycursor; --打开游标
if mycursor%isopen then --判断打开成功
loop --循环获取记录集
fetch mycursor into myrecord; --获取游标中的记录
if mycursor%found then --游标的found属性判断是否有记录
begin
--获取到字段内容并进行处理
columnstring:=myrecord.NNDP;
--dbms_output.put_line('当前字段对应的所有字符串'||columnstring); --显示结果
resultstring:='';
declare cursor mycursor1 is select * from table(fn_splitString(columnstring,'nan'));
myrecord1 mycursor1%rowtype; --定义游标记录类型
Counter1 int :=0;
begin
open mycursor1; --打开游标
if mycursor1%isopen then --游标打开成功
loop --循环获取记录集
fetch mycursor1 into myrecord1; --获取游标中的记录
if mycursor1%found then --判断是否有记录
begin
--判断是否取到男性数量开始
if length(resultstring)>0 then
begin
--获取女性数量字符串
SELECT REPLACE(myrecord1.column_value,'nv','') into femalestring from dual;
dbms_output.put_line('女性数字拼音'||femalestring);
--转换数字拼音为数字字符
select fn_getNumber(femalestring) into femalenumber from dual;
resultstring:=resultstring||femalenumber||'女';
--dbms_output.put_line('女性字符串'||femalestring); --显示结果
end;
else
begin
--获取男性数量字符串
malestring:=myrecord1.column_value;
dbms_output.put_line('男性数字拼音'||malestring);
--转换数字拼音为数字字符
select fn_getNumber(malestring) into malenumber from dual;
resultstring:=malenumber||'男';
--dbms_output.put_line('男性字符串'||resultstring); --显示结果
end;
end if;
--判断是否取到男性数量结束
end;
else
exit;
end if;--结束判断是否有记录
end loop;
else
dbms_output.put_line('游标1没有打开');
end if; --结束打开游标成功
close mycursor1;
end;
dbms_output.put_line(resultstring); --显示结果
--更新数据库数据
update TB_USER set NNDP=resultstring where ID= myrecord.ID;
--select NNDP from TB_USER where NNDP <> ' ';
end;
else
exit;
end if;
end loop;
else
dbms_output.put_line('游标0没有打开');
end if;
close mycursor;
end;
附:运行截图