最好支持多表 如:
产品名称 工序 计划数 完成数 人员 设备
中滑门 落料 3000 2500 张三 DJQRE-01 (表1数据)
中滑门上 落料 3000 2500 李四 DJQRE-01 (表2数据)
PS:实在不行就单表数据导出就行,SQL可以固定写死,但是要加上上面字段标题
求一个ORACLE将表数据导出为TXT的存储过程
答案:2 悬赏:50 手机版
解决时间 2021-02-12 07:41
- 提问者网友:蓝琪梦莎
- 2021-02-11 09:45
最佳答案
- 五星知识达人网友:由着我着迷
- 2021-02-11 10:24
#首先声明存储生成txt文件的目录,注意oracle要有写权限,其权限不能由自己赋给自己,必须由sysdba赋给
create directory DIR_DUMP as '/home/oracle/';
conn / as sysdba
grant read,write on directory dir_dump to psbc; (或者是public;)
#创建存储过程
CREATE OR REPLACe PROCEDURE tabtotxt IS
testjiao_handle UTL_FILE.file_type;
BEGIN
testjiao_handle := UTL_FILE.FOPEN('DIR_DUMP','testjiao.txt','w');
FOR x IN (SELECT * FROM tab) LOOP
UTL_FILE.PUT_LINE(testjiao_handle,x.工序 || ',' || x.计划数 ||','|| x.完成数 ||','|| x.人员 ||','|| x.设备 ||',');
END LOOP;
UTL_FILE.FCLOSE(testjiao_handle);
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SUBSTr(SQLERRM,1,2000));
END;
#执行存储过程
exec tabtotxt
create directory DIR_DUMP as '/home/oracle/';
conn / as sysdba
grant read,write on directory dir_dump to psbc; (或者是public;)
#创建存储过程
CREATE OR REPLACe PROCEDURE tabtotxt IS
testjiao_handle UTL_FILE.file_type;
BEGIN
testjiao_handle := UTL_FILE.FOPEN('DIR_DUMP','testjiao.txt','w');
FOR x IN (SELECT * FROM tab) LOOP
UTL_FILE.PUT_LINE(testjiao_handle,x.工序 || ',' || x.计划数 ||','|| x.完成数 ||','|| x.人员 ||','|| x.设备 ||',');
END LOOP;
UTL_FILE.FCLOSE(testjiao_handle);
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SUBSTr(SQLERRM,1,2000));
END;
#执行存储过程
exec tabtotxt
全部回答
- 1楼网友:十鸦
- 2021-02-11 11:07
如果数据量比较大的话,还是用d.c.b.a的ociuldr吧,也省得sqlplus spool还要麻烦地格式化输出
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯