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

来源:互联网 发布:人工智能创新创业大赛 编辑:程序博客网 时间:2024/05/03 13:38
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 0
原创粉丝点击