oracle存储过程将clob大字段分开存入到新表中
2016-06-29 15:53
309 查看
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;
相关文章推荐
- Oracle 左连接、右连接、全外连接、(+)号作用
- Oracle创建序列
- Oracle修改字段类型方法总结
- 160628、利用Oracle rownum让表排序字段值连续
- oracle存储过程实现根据已有数据批量更新另一批数据
- oracle调度程序作业dbms_scheduler
- oracle 死锁
- Oracle自增ID实现
- python3.4 访问 oracle11g
- xmanager配置xstart调出oracle图形化界面安装
- ORACLE常见的六种RMAN恢复测试
- Oracle体系结构2
- oracle 求男女比例 sql 函数ratio_to_report
- ORACLE体系结构,很详细
- oracle 查询当前记录的上一条记录或下一条记录
- Oracle超出1000列的错误的解决方法
- Oracle 体系结构
- 关于AndroidStudio的Oracle VM VirtualBox和Genymotion配置问题(Win10系统)
- oracle11g 修改密码后登录的TNS-12535: TNS:operation timed out问题
- Oracle使用Java发送短信