问题描述
大家好,
我有一个场景,我想创建一个触发器,它将生成一个平面文件,每当一组数据,如部门编号 (10,20,30,40,50...) 在特定日期 (sysdate) 更改 (插入/更新)。
我有一个场景,我想创建一个触发器,它将生成一个平面文件,每当一组数据,如部门编号 (10,20,30,40,50...) 在特定日期 (sysdate) 更改 (插入/更新)。
专家解答
您不想直接从触发器执行此操作,因为有人可能会回滚事务-但您不能回滚平面文件写入。
所以你会这样做:
a) 触发器通过dbms_job提交作业
b) 提交将激活作业
c) 作业将执行所需的步骤,例如utl_file。
所以你会这样做:
a) 触发器通过dbms_job提交作业
b) 提交将激活作业
c) 作业将执行所需的步骤,例如utl_file。
SQL> create table t ( deptno int ); Table created. SQL> SQL> create or replace 2 procedure unload_Data is 3 l_file utl_file.file_type; 4 l_dir varchar2(100) := 'TEMP'; 5 l_filename varchar2(100) := 'myfile.dat'; 6 begin 7 l_file := utl_file.fopen(l_dir, l_filename, 'w'); 8 utl_file.put_line(l_file, 'Here is some data'); 9 utl_file.fclose(l_file); 10 end; 11 / Procedure created. SQL> SQL> create or replace 2 trigger t_trg 3 after insert on t 4 for each row 5 declare 6 j int; 7 begin 8 dbms_job.submit(j, 'unload_data;'); 9 end; 10 / Trigger created. SQL> SQL> insert into t values (10); 1 row created. SQL> commit; Commit complete. SQL> host dir c:\temp\myfile.dat Volume in drive C is System Volume Serial Number is 7AD7-C05A Directory of c:\temp 20/02/2017 09:31 PM 19 myfile.dat 1 File(s) 19 bytes 0 Dir(s) 45,458,391,040 bytes free SQL>复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle DataGuard高可用性解决方案详解
孙莹
426次阅读
2025-03-26 23:27:33
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
385次阅读
2025-04-15 17:24:06
墨天轮个人数说知识点合集
JiekeXu
364次阅读
2025-04-01 15:56:03
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
357次阅读
2025-04-08 09:12:48
Oracle SQL 执行计划分析与优化指南
Digital Observer
329次阅读
2025-04-01 11:08:44
Oracle 19c RAC更换IP实战,运维必看!
szrsu
296次阅读
2025-04-08 23:57:08
风口浪尖!诚通证券扩容采购Oracle 793万...
Roger的数据库专栏
293次阅读
2025-03-24 09:42:53
切换Oracle归档路径后,不能正常删除原归档路径上的归档文件
dbaking
288次阅读
2025-03-19 14:41:51
oracle定时任务常用攻略
virvle
286次阅读
2025-03-25 16:05:19
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
281次阅读
2025-04-15 14:48:05