问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

oracle存储过程查数据并生成文件怎么实现?

发布网友 发布时间:2022-04-22 12:54

我来回答

2个回答

热心网友 时间:2023-06-28 16:25

分几个步骤

1,创建输出路径,比如你要在c盘test目录下输出,你就先要建立好这个test路径

 

2,sqlplus下以sysdba登录,执行以下语句

 

3,create or replace directory TMP as 'c:\test';

 

4,grant read,write on directory TMP to 你要生成文件的用户;

 

5,alter system set utl_file_dir='c:\test' scope=spfile;

以上步骤执行完,需要重启数据库

 

6,最重要的一步开始了,创建存储过程

create or replace PROCEDURE SP_OUTPUT
is
file_handle utl_file.file_type;
Write_content VARCHAR2(1024);
Write_file_name VARCHAR2(50);
v_id int;
v_form varchar2(10);
cursor cur_sp_out
is
select id,form from a;
begin
open cur_sp_out;
loop
    fetch cur_sp_out into v_id,v_form;
    exit when cur_sp_out%notfound;
    write_file_name := to_char(SYSDATE,'YYYYMMDD')||'.txt';
    file_handle := utl_file.fopen('TMP',write_file_name,'a');
    write_content := v_id||' '||v_form;
    --write file
    IF utl_file.is_open(file_handle) THEN
     utl_file.put_line(file_handle,write_content);
    END IF;
    --close file
    utl_file.fclose(file_handle);
    end loop;
    close cur_sp_out;
end;

 

我建立了一个跟你一样的测试表,数据如下

create table a(id int,
form varchar2(10));

insert into a values (1,'你好');
insert into a values (2,'你很好');

然后执行存储过程

begin
 SP_OUTPUT;
end;

执行完毕后,你在c盘test路径下会发现已经有新文件生成

 

文件内容

 

存储过程的话,如果表名和字段名跟你一致的话,你无须修改

追问我在哪儿控制导出为前一天当天的数据,比如2013-11-12?我的字段里面有date这个字段

追答

哦,那稍微改动一下就行,我那个是生成当天的了,你用下边这个

create or replace PROCEDURE SP_OUTPUT
is
file_handle utl_file.file_type;
Write_content VARCHAR2(1024);
Write_file_name VARCHAR2(50);
v_id int;
v_form varchar2(10);
cursor cur_sp_out
is
select id,form from a where to_char(日期,'yyyymmdd')=to_char(sysdate-1,'yyyymmdd'); --如果表里有日期字段的话这么用就行
begin
open cur_sp_out;
loop
    fetch cur_sp_out into v_id,v_form;
    exit when cur_sp_out%notfound;
    write_file_name := to_char(SYSDATE-1,'YYYYMMDD')||'.txt';--如果这个地方要修改文件名的话,在sysdate处减1就好,其他不用改
    file_handle := utl_file.fopen('TMP',write_file_name,'a');
    write_content := v_id||' '||v_form;
    --write file
    IF utl_file.is_open(file_handle) THEN
     utl_file.put_line(file_handle,write_content);
    END IF;
    --close file
    utl_file.fclose(file_handle);
    end loop;
    close cur_sp_out;
end;

热心网友 时间:2023-06-28 16:25

--以下从系统获得日期和时间,用于文件命名。
select trim (to_char (operating_unit)) c_org_id,
trim (to_char (sysdate +12/24, 'YYYY-MM-DD_HH24.MI.SS')) c_datetimestamp
from apps.org_organization_definitions
where organization_code = 'JiangsuChangzhou'

--以下创建文件(既然你要tab隔开,那就直接以tsv作为后缀)
spool .\Delivery\CZ_Booking_Report_&&datetimestamp..TSV

--query start @这里加入文件头描述,可有可无
select 'The report was launched @ '||to_char (sysdate + 12/24, 'YYYY-MM-DD_Day_HH:MM:SS') from al -- approximate timezone translation
/

--以下是输出表格的表头标题(3列为例)
select 'Operating_id' ||chr(9)||
'order_number' ||chr(9)||
'XXEGE_OM_DEFAULT_CODE'
from al
/

--以下查询数据行
select hou.name ||chr(9)||
ooh.order_number ||chr(9)||
ooh.CUST_PO_NUMBER
from OM.tableX
--这句是你要的“前一天”条件。
where ooh.date like to_date('&&2', 'yyyy-mm-dd')+13/24
/

select 'The report was Finished @ '||to_char (sysdate + 13/24, 'YYYY-MM-DD_Day_HH:MM:SS') from al

/
spool off
oracle 怎么在存储过程中查询数据

oracle数据库中,已建立好的存储过程信息存储在系统表ALL_SOURCE 中,需要用sysdba身份登录数据库,进行查询操作,SQL命令如下:1 2 3 4 5 SELECT line,text FROM ALL_SOURCE WHERE TYPE='PROCEDURE'AND NAME='过程名称'AND OWNER='用户名'ORDER BY line;存储过程分成多行,每一行会存储为一条数据...

oracle将表A里的数据导出为txt文件,用存储过程怎么写?

1,创建输出路径,比如你要在c盘test目录下输出,你就先要建立好这个test路径 2,sqlplus下以sysdba登录,执行以下语句 3,create or replace directory TMP as 'c:\test';4,grant read,write on directory TMP to 你要生成文件的用户;5,alter system set utl_file_dir='c:\test' scope=spfile...

怎样把oracle数据表结构和存储过程导出为word文档

因为软件完全利用OFFICE宏来控制报表输出,所以用户在使用软件时请开启Word中的宏功能。 软件导出的文档格式如下图所示,有目录索引列表,及每个表的描述及字段说明。

如何把oracle 存储过程 输出到文本

分几个步骤 1,创建输出路径,比如你要在c盘test目录下输出,你就先要建立好这个test路径 2,sqlplus下以sysdba登录,执行以下语句 3,create or replace directory TMP as 'c:\test'; 4,grant read,write on directory TMP to 你要生成文件的用户; 5,alter system set utl_file_di...

[转]Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙...

1、 准备数据库创建脚本?create tablespace whc_tbs datafile ‘E:\oracle\oradata\whcdb\whc.dbf‘ size 100M;--DROP TABLESPACE whc_tbs INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;create user whc identified by whc default tablespace whc_tbs;grant connect,resource to whc; grant ...

ORACLE 的存储过程中如何输出日志文件

直接利用UTL_FILE包来生成文件 UTL_FILE.fopen 创建文件 UTL_FILE.put 写入数据 UTL_FILE.new_line 换行 UTL_FILE.fclose 关闭文件

Oracle怎么导出存储过程

1、首先登录到数据库中,点击右上角有个工具栏,点击工具栏上的tools。2、选择导出用户对象,点击tools工具之后,向下查找Export User Objects功能,通过这个功能导出数据。3、选择需要导出的表或者序列或者存储过程等。在Type列中展示的是对象属性,表、序列和存储过程等。这里要选择存储过程或者序列。4、...

Oracle中如何写带条件的查询存储过程并返回查询结果集

create or replace procedure p_cnt(p_time in varchar2,---查询的条件 p_cur out SYS_REFCURSOR)---游标返回 IS v_sql varchar2(1000) :='';v_date varchar2(20);BEGIN v_date := replace(p_time, '-', '');---时间的格式转换 v_sql := 'select * from dapartment d ...

存储过程 查询一个表的记录,没有就从另外一个表查询,并添加到这个表

create proc insertrecord count int,name varchar(20),as select @count=count(*) from dbo_A if (@count>0)begin select* from dbo_A where column like '%'+@name+'%'end else begin insert into dbo_B (column name) select column name from dbo_A where dbo_A.column like '%'...

如何将oracle中的数据导出成txt,现在要求导出所有表成txt,spool很难实...

其实很简单,使用pl/sql developer 进入oracle,导出查询结果为cvs 文件,然后用记事本打开,然后另存为TXT文件就行了

oracle数据库查看存储过程 oracle怎样查看存储过程 oracle数据库存储过程 oracle数据库存储过程调用 oracle存储过程写出文件 oracle存储过程实例 oracle查看所有存储过程 存储过程导出数据到文件 存储过程里调用存储过程
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
excel中怎么设置页眉? 揭秘一个**直播平台---映秀直播,你上当了么? 大连市内转户口需要什么? 落户到大连需要什么手续 华硕电脑怎么看型号? 京东的销量在哪里看的? 怎么知道微信群里有没有人接龙? 微信群违规有几种情况? 有没有陪玩的微信群啊,求推荐。 冰箱老是嗡嗡响还烫,是怎么回事啊? oracle数据库的存储过程如何加密 具体的实现... oracle 数据库中存储过程输出情况 oracle存储过程是什么 oracle数据库调用存储过程 oracle中的存储过程有什么作用 关于Oracle数据库存储过程的问题 oracle数据库的游标和存储过程怎么写? vivox30视频聊天怎么调能好点? 为什么做过甲状腺手术脖子长的有点向男人猴结呢? vivox30 支持微信视频美颜吗? vivox30内置视频电话功能吗? 为什么vivox30pro锁屏后继续播放视频? vivo手机看视频没有声音怎么办? vivox30手机视频通话有回音是怎么回事? 维沃x30手机看视频,刷抖音卡是怎么回事? vivo手机刷抖音声音大怎么调节 为什么vivox30刷视频会卡? vivox30pro看电影怎么一卡一卡的? VIVOx30可以连续看视频多久 vivox30别人发视频锁频接不到怎么办 oracle 怎么调用存储过程 如何在oracle 10g r2中实现透明数据加密 oracle 怎么在存储过程中查询数据 i5 8265U,这种低压CPU做3D建模等设计软件够用吗? 送外卖兼职怎么做美团 我想做美团骑士,怎么申请? 怎么做美团骑手,怎么送外卖 新浪微博为什么在某些人的主页看不到他,赞过的微博? 微博账号异常的时候是不是点赞别人看不到 初一写人作文550字 新浪微博为什么看不到别人的赞 初一写人的作文600字左右 初一写人记事作文 为什么我的微博看不到别人赞我了啊? 初一写人作文700字左右 如何在微博看到其他人给自己的评论或点赞? 初一写人作文,600字 微博怎么看不了别人点赞过哪些微博了? 初一写人或写事作文 微博上有的点赞为什么看不到呢?