Oracle中使用游标转换数据表中指定字段内容格式(2)

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; 

附:运行截图

Oracle中使用游标转换数据表中指定字段内容格式

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/d9d6cc0c41391f08a3d5cbe90462aa05.html