PL/SQL怎样把用chr(10)隔开的超长字符串转换成几千行记录

[复制链接]
查看11 | 回复1 | 2008-9-15 01:28:12 | 显示全部楼层 |阅读模式
本帖最后由 〇〇 于 2012-5-14 16:58 编辑
PL/SQL怎样把用chr(10)隔开的超长字符串转换成几千行记录?可以在Oracle Developer Form调用
比如,粘贴以下字符串:
sdfsdfsdfsdf98000
sdfsdfsdfsdf98001
sdfsdfsdfsdf98002
sdfsdfsdfsdf98036
sdfsdfsdfsdf98037
sdfsdfsdfsdf98038
..
sdfsdfsdfsdf98946
sdfsdfsdfsdf98998
sdfsdfsdfsdf98999


回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
WITH TEST_DATA AS (
SELECT 'sdfsdfsdfsdf98000'
||CHR(10)||'sdfsdfsdfsdf98001'
||CHR(10)||'sdfsdfsdfsdf98002'
||CHR(10)||'sdfsdfsdfsdf98036'
||CHR(10)||'sdfsdfsdfsdf98037'
||CHR(10)||'sdfsdfsdfsdf98038' str
FROM DUAL
)
SELECT * FROM (
SELECT REGEXP_SUBSTR(str,'[^\r]+',1,LEVEL) AS line_data
FROM TEST_DATA
CONNECT BY LEVEL 0 THEN
INSERT INTO ttt (t) VALUES (SUBSTR(v_list, 1, l_idx - 1));
v_list := substr(v_list, l_idx + LENGTH(p_sep));-- 超过32767时如何办
else
INSERT INTO ttt (t) VALUES (substr(v_list,1,30));
EXIT;
end if;
END LOOP;
commit;
END SP_split;
/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行