可以在触发器内动态创建 JOB 吗?

2023-12-05

该触发器的执行失败(它编译但一旦我执行指定的插入 - >错误)

create or replace
TRIGGER AFT_INSERT_TMP_TBL
AFTER INSERT ON TMP_TBL
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
DECLARE 

    V_SQL VARCHAR2(1000);
    A_NAME VARCHAR2(100);

BEGIN
    A_NAME:='ANY_NAME';

    V_SQL:='BEGIN 
              DBMS_SCHEDULER.CREATE_JOB (
                  job_name => '''||A_NAME||''',
                  job_type => ''PLSQL_BLOCK'',
                  job_action => ''BEGIN DBMS_OUTPUT.PUT_LINE('||A_NAME||'); END;'',
                  start_date => TIMESTAMP''2011-12-4 10:30:00'',
                  repeat_interval => ''FREQ=MINUTELY;INTERVAL=2'',
                  auto_drop => FALSE,
                  comments => '''||A_NAME||''');
            END;';
     DBMS_OUTPUT.PUT_LINE('SCHEDULER :'||V_SQL);
     EXECUTE IMMEDIATE V_SQL;

END AFT_INSERT_TMP_TBL;
-----------------------

打印的 SCHEDULER 创建代码完全有效。

我收到 ORA-04092 '无法在触发器中...触发器尝试提交或回滚。重写触发器,使其不会提交或回滚”。

这是“承诺”吗?那么不能在触发器内创建 JOB 吗?

我知道我已经使用触发器插入到不同的表中,这也是一个“提交” 甲骨文并没有抱怨。


Calling DBMS_SCHEDULER.CREATE_JOB隐式提交,因此您无法创建DBMS_SCHEDULER触发器中的工作。这是仍然需要使用旧版本的情况之一DBMS_JOB包自DBMS_JOB.SUBMIT不隐式提交。

该触发器应该使用以下命令创建您想要的作业DBMS_JOB包而不是DBMS_SCHEDULER.

create or replace
TRIGGER AFT_INSERT_TMP_TBL
AFTER INSERT ON TMP_TBL
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
DECLARE 

    V_SQL VARCHAR2(1000);
    A_NAME VARCHAR2(100);
    l_jobno NUMBER;
BEGIN
    A_NAME:='ANY_NAME';

    dbms_job.submit( l_jobno,
                     'BEGIN dbms_output.put_line( ''' || a_name || ''' ); END;',
                     sysdate + interval '2' minute,
                     'sysdate + interval ''2'' minute' );
     DBMS_OUTPUT.PUT_LINE('Job Number:'||l_jobno);

END AFT_INSERT_TMP_TBL;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可以在触发器内动态创建 JOB 吗? 的相关文章

  • 带触发器的物化视图?

    我可以在物化视图上创建触发器吗 我用的是甲骨文10g 是的你可以 请小心 这是什么Oracle 文档 http download oracle com docs cd B19306 01 server 102 b14200 statemen
  • 通过 OCI 调用 Oracle 存储过程并使用 C++ 中的 out ref 游标返回结果

    我想使用 OCI 接口从 C 调用 Oracle 存储过程 并使用 out SYS REF CURSOR 作为过程的参数来迭代结果 我是 OCI 新手 所以可能会遗漏一些简单的东西 大部分代码取自这里 我的存储过程是 CREATE OR R
  • 如何使用 SQLPLUS 假脱机到 CSV 格式的文件?

    我想将一些查询提取为 CSV 输出格式 不幸的是 我无法使用任何奇特的 SQL 客户端或任何语言来做到这一点 我必须使用SQLPLUS 我该怎么做 您还可以使用以下内容 尽管它确实在字段之间引入了空格 set colsep separate
  • 物化视图中完全刷新和快速刷新有什么区别?

    我在自己的模式中有物化视图 物化视图源是另一个模式表 但是 这个主表有 900 行 我在这个主表上做了一些 dml 操作 之后我将刷新这个物化视图 正如你所知 我做了一些研究 我如何刷新我自己的物化视图 它说 你可以进行完全刷新或快速刷新
  • 插入期间违反唯一约束:为什么? (甲骨文)

    我正在尝试在表中创建一个新行 表上有两个约束 一个是关键字段 DB ID 另一个是将值限制为字段 ENV 中的几个之一 当我进行插入时 我没有将关键字段作为我尝试插入的字段之一 但我收到此错误 unique constraint N390
  • 从 PHP PDO 执行时 MySQL 提交是否同步?

    使用 MySQL 的 PHP PDO 接口 假设我有以下代码来结束事务 假设它已正确开始 pdo gt query commit 当函数返回时 对日志的写入是否已刷新 也就是说 事务是否已提交 或者我只是提出了提交请求 假设我没有设置任何延
  • 如何从 Oracle 中获取格式化的 XML

    我对 Oracle 缺乏经验 并且在将数据导出为 XML 时遇到问题 我已经设法让这个查询正常工作 但 XML 的格式似乎是固定的 对我来说不起作用 这是查询 SELECT value em getClobVal AS output FRO
  • Oracle DataAccess 相关:“动态程序集中不支持调用的成员。”

    据我了解 此类错误已在 SO 上讨论过多次 有些人认为这是 DLL 文件中的错误 有些人通过更改 DLL 版本来解决 其他人似乎没有任何线索 无论如何 我只是发帖试试运气 在 C GUI 上的网格中选择一行时 我的应用程序崩溃了 stack
  • 将JAVA程序作为计划任务运行

    我试图在 Windows 7 机器上每天运行一次简单的 JAVA 程序 我的代码在 NetBeans 中运行良好 如果我进行清理并构建 它会表明 C Program Files Java jdk1 7 0 bin java jar C Us
  • 尝试在 Oracle 11.2.0.2.0(64 位)中获取连接时出现 java.lang.ArithmeticException

    我目前正在 Oracle 中使用 Java 存储过程 并且在尝试在 Java 代码中获取连接时看到一些奇怪的行为 我的Java被打包成jar文件 然后使用以下命令部署到Oracle中loadjava命令行实用程序 Apackage然后在数据
  • Oracle 11g OFFSET FETCH 给出错误

    我正在进行查询并尝试从数据库中获取随机数量的行 但 Oracle 一直告诉我我的命令尚未正确结束 select from random table order by random column name offset 0 rows fetc
  • 将 OraclePreparedStatement 与 DBCP 连接结合使用

    我正在尝试使用 dbcp 框架为我的 oracle 服务器创建一个连接池 我用过这个tutorial http web archive org web 20120615100115 http www freshblurbs com 80 j
  • 使用 SQL 序数位置表示法的好处?

    背景资料 序数位置表示法 又称序数 是基于列列表中的列顺序的列简写 SELECT子句 而不是列名或列别名 通常支持在ORDER BY子句 某些数据库 MySQL 3 23 PostgreSQL 8 0 支持语法GROUP BY条款也是如此
  • 如何从 TOAD for Oracle 执行函数并将结果绑定到数据网格

    我有一个函数 它将 pl sql 对象的 VARRAY 作为其参数之一 如何执行此存储过程并将其返回的结果集绑定到 TOAD for Oracle 中的数据网格 经过一番搜索后 我找到了自己问题的答案 假设您的 varray 类型称为 va
  • 授予用户在查询时使用表索引的什么?

    我想知道当用户从表中查询数据并且该用户已被授予以下权限时 oracle 是否使用索引 grant select on table to user 我想知道是否需要其他拨款才能使用索引 不 没有要求 或能力 授予对索引的访问权限 如果用户可以
  • Oracle 9i:同义词表不存在?

    我创建了一个包 其中包含一个存储过程 我计划从单独的应用程序调用该存储过程 存储过程将返回架构中所有视图和表的排序列表 为此 它对 DBA TABLES 和 DBA VIEWS 同义词执行简单的选择 如下所示 CREATE OR REPLA
  • FROM 子句中的嵌套括号是否有效的 Oracle SQL 语法?

    此查询使用正确的 Oracle 语法吗 select from dual a where a dummy X 它可以在 11g 和 12c 中运行 但它是真正有效的语法吗 或者这只是一个编译器 错误 将来可能会修复 导致代码失败 我怀疑这是
  • 分层查询

    我希望我能够解释困扰我的问题 我有以下分层数据集 这只是 34K 记录的子集 PARENT ID CHILD ID EXAM TUDA12802 TUDA12982 N TUDA12982 TUDA12984 J TUDA12984 TUD
  • Oracle TDE 能否保护数据免受 DBA 的侵害?

    甲骨文专家 我的客户想要部署一个必须在数据库中保存信用卡号的应用程序 客户显然很关心安全性 我们特别关注一个令人痛苦的问题 我们如何确保只有具有 业务需要知道 的授权用户才可以访问数据 我们如何保护数据免受 DBA 的侵害 一个明显的解决方
  • 对 PLSQL 中的每个表执行

    我想要所有表中匹配特定名称条件的记录数 这是我构建的 SQL Declare SQLStatement VARCHAR 8000 BEGIN SELECT SELECT COUNT FROM Table Name INTO SQLState

随机推荐

  • 跨域 POST 请求的 CSRF 验证在生产中失败

    HTTP X CSRFTOKEN 标头与 csrftoken cookie 内的内容不匹配 我怎样才能检查cookie Set Cookie 不会显示在跨域请求的响应标头中 我已经按照以下位置中的说明进行操作 使用 Django 进行 CS
  • 在一台计算机上打开工作簿错误代码 32809,但在另一台计算机上打不开

    我有一个 Excel 2013 宏工作簿 本工作簿在过去 6 个月中一直运行良好 今年的第一天 我遇到了下面的问题 代码如下 这行代码所做的就是在打开工作簿时将 activex 复选框控件设置为 true Sheets WSCHARTS c
  • 将字符串分成两部分,长度几乎相同

    我有字符串 这是一个示例字符串 我需要将其拆分为 2 个字符串 而不破坏单词 并且这两个字符串将具有最接近的长度 因此结果将是 This is a sample string 另一个例子 Gorge is nice gt Gorge is
  • Rails /lib 模块和

    我正在编写一个自定义包装器open flash chart插入 它被放置在 lib并将其作为模块加载ApplicationController 但是 我有类层次结构的问题或其他问题 从我可以访问的任何控制器open flash chart功
  • 如何使用 VBA 验证 SAP GUI 中的活动窗口

    我目前正在尝试使用 VBA 修复 SAP 过程中的一些问题 现在我有一段代码可以正确处理有时出现的错误弹出窗口 If session findById wnd 2 usr txtMESSTXT1 Text Material j atuali
  • 有什么充分的理由使用 FormCollection 而不是 ViewModel 吗?

    我继承了用 ASP Net MVC 4 编写的代码库 每个 post 方法都需要一个FormCollection 除了必须通过带引号的字符串访问值的烦恼之外 它还会导致一些缺点 例如无法使用诸如ModelState IsValid or A
  • 如何在c中确定linux中的目录或文件

    我只想打印文件名而不打印目录名称 所以我实现了这个功能 void list file char directory DIR d struct dirent dir d opendir directory if d while dir rea
  • clientHeight/clientWidth 在不同浏览器上返回不同的值

    特性document body clientHeight and document body clientWidth在 IE7 IE8 和 Firefox 上返回不同的值 IE 8 document body clientHeight 70
  • Elasticsearch 结合多个存储桶和聚合

    假设我们正在查看相当简单的数据 索引中的每个文档都具有以下结构 Time 2018 01 01T19 35 00 0000000Z Country Germany Addr security web com FailureCount 5 S
  • 在 R 中生成一个具有 m 列和 n 行的随机矩阵,其中行总和为 1

    我想生成一个 nxm 矩阵 假设它是 100x3 我希望每一行的总和为 1 因此两个 0 和一个 1 sample c 0 0 1 3 会给我 1 行 但是有没有一种非常快速的方法可以在没有 rbind 的情况下生成整个矩阵 谢谢你 没有循
  • 如果值不存在,则将数组对象推入另一个数组对象

    如果值不存在 需要将数组对象 arr1 的值推送到另一个数组对象 arr2 中 现有值不会推入另一个数组 var arr1 name fred name bill name ted name james var arr2 name spil
  • Android,当我在设备上安装应用程序时图标重复

    我尝试在我的设备上安装我开发的应用程序 Htcdesire 我发现该应用程序的图标是重复的 我需要改变什么才不会迟到发生这种情况 我怎样才能删除其中一个图标 感谢您的帮助 我今天遇到这个问题 我正在使用 Gradle 我发现有一个文件夹 b
  • Android,在 onClickListener 中使用 Toast

    我试图让 toast 在 onClickListener 内给定某些条件时显示一些文本 该应用程序无法在模拟器中运行 并且出现以下错误 void 无法转换为 Toast 我四处搜索 在这个论坛上找到了几个类似的问题和解决方案 但没有一个完全
  • Python 的 Requests 库中的 Session 对象线程安全吗?

    Python 的流行Requests该库在其主页上据说是线程安全的 但没有给出更多细节 如果我打电话requests session 然后我可以安全地将这个对象传递给多个线程 如下所示 session requests session fo
  • Java中模块的动态加载

    在 Java 中 我可以动态地将内容添加到类路径并加载类 动态 意味着无需重新启动我的应用程序 是否有一个已知的框架 库可以处理模块的动态加载 卸载而无需重新启动 通常的设置 尤其是 Web 应用程序 是负载均衡器 多个应用程序实例以及逐步
  • 填充控制台中的最后一行

    我想填充 更新控制台的整个底线 例子 static void Main string args Console BufferWidth Console WindowWidth Console BufferHeight Console Win
  • 恒定 FPS Android OpenGLES

    你好安卓开发者 我正在 Eclipse 中使用 OpenGLES 1 0 为 Android 开发一个简单的游戏 我使用 Samsung Galaxy S2 Android 2 3 作为开发设备 我有一个关于双核和使帧速率恒定的问题 因此
  • 在javascript中重置文本区域高度

    我有一个文本区域 自动调整大小 我想清除其所有内容 包括其高度 到目前为止我已经尝试过 document getElementById textarea value And document getElementById textarea
  • 如何在pandas中将一列分成三列

    我有一个数据框 如下所示 ID Name Address 1 Kohli Country India State Delhi Sector SE25 2 Sachin Country India State Mumbai Sector SE
  • 可以在触发器内动态创建 JOB 吗?

    该触发器的执行失败 它编译但一旦我执行指定的插入 gt 错误 create or replace TRIGGER AFT INSERT TMP TBL AFTER INSERT ON TMP TBL REFERENCING OLD AS O