oracle存储过程将clob大字段分开存入到新表中

create or replace PROCEDURE AUTHORIZESAVE AS
                                       
   v_ID varchar2(1000);
   v_MANDATESCOPE clob;
   av_split varchar2(2) := ';';
   v_length number;
   v_start NUMBER;
   v_index NUMBER;
   v_str varchar2(1000);
   
BEGIN
  DECLARE CURSOR myCusor IS 
  SELECT ID ,ITEM_MANDATESCOPE FROM tlk_P_Announcements WHERE  ITEM_MANDATESCOPE IS NOT NULL;
  BEGIN
            OPEN myCusor;
 
            LOOP
                FETCH myCusor INTO v_ID,v_MANDATESCOPE;
                --游标取不到数据则退出
                EXIT WHEN myCusor%NOTFOUND;
                v_MANDATESCOPE := replace(v_MANDATESCOPE,',',';');
                v_length := LENGTH(v_MANDATESCOPE);
                         --v_length number:=LENGTH(v_MANDATESCOPE);
                         v_start :=1;
                       v_index :=0;
                       v_str :='';
                       IF INSTR(v_MANDATESCOPE ,av_split) >0 THEN
                        WHILE(v_start <= v_length)
                          LOOP
                              v_index := INSTR(v_MANDATESCOPE, av_split, v_start);
                      
                              IF v_index = 0
                              THEN
                                  v_str :=SUBSTR(v_MANDATESCOPE, v_start);
                                  v_start := v_length + 1;
                              ELSE
                                  v_str :=SUBSTR(v_MANDATESCOPE, v_start, v_index - v_start);
                                  v_start := v_index + 1;
                              END IF;
                              INSERT INTO TLK_MANDATESCOPE(ID,DATAID,AUTHORITYID) VALUES(sys_guid(),v_ID,v_str);
                          END LOOP;
                        ELSE
                          INSERT INTO TLK_MANDATESCOPE(ID,DATAID,AUTHORITYID) VALUES(sys_guid(),v_ID,v_MANDATESCOPE);
                        END IF;
 
            END LOOP;
            CLOSE myCusor;
  END;
  --提交
       COMMIT;
END AUTHORIZESAVE;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值