如何在 Oracle PLSQL 中提交单个事务

2024-06-19

我需要编写一个 PL/SQL 过程,在这个过程中,我需要在其自己的事务范围内调用另一个过程,并提交它,无论主事务是否失败或提交。换句话说,我需要类似的东西REQUIRES NEW交易传播。

就像是:

procedure mainProcedure(arugements) is 
begin
    // some statements
    nestedProcedure(someArguments);
    // some other statements
end;

procedure nestedProcedure(arguments) is
begin
  // start a new transaction
  // some statements, lock some objects!
  // commit the new transaction and release locked objects
end;

我怎样才能实现这个目标?


看一下自主交易 https://docs.oracle.com/cd/B28359_01/appdev.111/b28370/autotransaction_pragma.htm#LNPLS01302。另请参阅演示

CREATE TABLE t (
 test_value VARCHAR2(25));

CREATE OR REPLACE PROCEDURE child_block IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
   INSERT INTO t
   (test_value)
   VALUES
   ('Child block insert');
  COMMIT; 
END child_block;
 /

CREATE OR REPLACE PROCEDURE parent_block IS

BEGIN
   INSERT INTO t
   (test_value)
   VALUES
   ('Parent block insert');

    child_block;

    ROLLBACK; 
END parent_block;
 /

执行:

 -- empty the test table
    TRUNCATE TABLE t;

   -- run the parent procedure
     exec parent_block;

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

如何在 Oracle PLSQL 中提交单个事务 的相关文章

  • Oracle Data Provider for .NET 不支持 Oracle 19.0.48.0.0

    我们刚刚升级到 Oracle 19c 19 3 0 所有应用程序都停止工作并出现以下错误消息 Oracle Data Provider for NET 不支持 Oracle 19 0 48 0 0 我将 Oracle ManagedData
  • MySQL 的 TEXT 类型的 Oracle 等效项

    Oracle 是否有与 MySQL 等效的列类型TEXT type 如果不是 那么通常如何存储较大的文本块 BLOB varchar 32767 如果重要的话 它是通过 PHP 访问 Oracle 10 历史背景是非常受欢迎的 Oracle
  • Oracle 和 EDB (Postgres) 中的日期差异

    如果是甲骨文 查询 select SYSDATE TO DATE 23 03 1022 dd mm yyyy from dual 正在给出输出 SYSDATE TO DATE 23 03 1022 DD MM YYYY 21715 2233
  • SqlDeveloper:清除网络别名列表

    我使用 sql developer 连接到具有多个不同用户的多个不同的 Oracle 数据库 连接信息保存在tnsnames ora文件 以便当数据库更改服务器时 我不必手动更新与它的所有连接 我最近更新了 tnsnames 文件 现在网络
  • 关闭连接时 JDBC 事务回滚失败

    如果在提交期间与数据库资源的连接丢失 这可能会导致提交失败 然后回滚失败 是否有可能事务已部分提交 这似乎发生在我的案例中 但希望社区能更清楚地说明这一点 HibernateTransactionManager 和 Oracle 与 JDB
  • SQL在单个命令中在表中添加列和注释

    我的 Web 应用程序使用 Oracle 11g 我想向现有表添加列和注释 我可以使用以下命令轻松做到这一点 ALTER TABLE product ADD product description VARCHAR2 20 and COMME
  • ojdbc6.jar 文件是什么?

    对于学校项目 我必须使用数据库编写 Java 程序 为此我必须导入该项目文件 ojdbc6 jar 我知道没有它我就无法使用数据库 但我真的不知道这个文件是什么 有人可以解释一下吗 这样的文件是如何被调用的 它的用途到底是什么 简单地说 J
  • 如何从 pl sql 过程运行 sql 脚本

    我有一个类似的程序 CREATE OR REPLACE PROCEDURE test is BEGIN DBMS OUTPUT PUT LINE This is a Test END 我想运行一些存储在当前目录中的sql脚本 我可以使用 s
  • 未对@Transactional Annotation执行回滚[重复]

    这个问题在这里已经有答案了 我正在尝试创建一个用于转账的 API 即取款和存款 我使用 Transactional Annotation 执行事务 但有一些标准 即如果银行帐号不存在 则应通过运行时异常 我将附上其中的代码 现在 当调用 T
  • 如何将oracle中的number(7,2)更改为varchar?

    I m using Oracle 10g I want to append to all values in sal column To acomplish this first I m trying to change data type
  • java应用程序中与oracle的连接

    我已经下载了 oracle express 11g 版本并安装了它 现在我想从 java 应用程序连接它 这是我的连接代码 Class forName oracle jdbc driver OracleDriver newInstance
  • 如果运行战争,oracle 和 sybase 数据库连接会出现 ClassNotFoundError,但在 eclipse 中工作正常

    我在应用程序中构建了一个功能来测试数据库连接 在本地 我能够测试所有三个数据库 sqlserver sybase 和 oracle 但如果创建 war 文件并在 Windows Linux 服务器中运行 war 则 Oracle 和 syb
  • 删除带有全局索引的分区表?

    PROCEDURE purge partitions p owner IN VARCHAR2 p name IN VARCHAR2 p retention period IN NUMBER IS BEGIN FOR partition re
  • UNION 与 WHERE 子句

    我正在做一个UNIONOracle 数据库上的两个查询 他们俩都有一个WHERE条款 如果我这样做的话 性能会有什么不同吗 WHERE after UNION与执行查询相比UNION after WHERE clause 例如 SELECT
  • 如何以合理的方式使用 Oracle 驱动程序的日志记录来记录 UPDATE 语句?

    我想记录我的应用程序发出的所有 SQL 所以我确切地知道它在做什么 我已经根据以下内容为 Oracle 设置了 Java Util Logging这个答案 https stackoverflow com a 40491028 216353
  • java为oracle VARCHAR2返回空字符串值

    我有以下代码 它似乎工作正常 但它不显示 personCode 字符串的任何值 PERSON CODE 是 Oracle 9i 数据库中的 VARCHAR2 我在我的项目中使用 Java SE 1 7 和 ojdbc7 jar 我是 Jav
  • oracle中有没有相当于sp_getapplock、sp_releaseapplock的

    我需要能够在 Oracle 中的会话级别 事务范围之外 使用自定义锁 在 MSSQL 中 我使用 sp getapplock sp releaseapplock 如何在 Oracle 中实现相同的功能 DBMS LOCK 包 这将做你想做的
  • 函数参数的自定义惰性求值/短路的语法

    Oracle 定义了几种结构 这些结构利用了看似惰性求值但实际上是短路的功能 例如 x case when 1 2 then count all prime numbers below 100000000 else 2 2 end 函数 c
  • 使用绑定变量动态传递表名和列名

    有没有办法使用绑定变量将列名和表名动态传递给查询 这可以通过使用简单的串联运算符来完成 但我想要一种不同的方法来实现这一目标 EDIT OPEN abc cur FOR Select column name from table name
  • 创建触发器

    如何启动触发器 以便在未付余额超过 50 美元的情况下无人能够租借电影 这里有一个跨行表约束 即你不能只放置一个 OracleCONSTRAINT在列上 因为它们一次只能查看一行中的数据 Oracle 仅支持两种跨 行约束类型 唯一性 例如

随机推荐

  • 何时使用 NodeIterator

    基准 http jsperf com qsa vs node iterator比较 QSA 和 forEach vs a NodeIterator toArray document querySelectorAll div gt a kla
  • Microsoft Edge 清理会话

    Microsoft Edge 驱动程序在运行 selenium 测试时不确保干净会话 是否有一个选项可以指定所需的功能来解决此问题 今天我自己就遇到了这个问题 所以最终我让它工作的唯一方法非常简单 您必须在 Edge 设置中选中 关闭浏览器
  • 检查两个“select”是否相等

    有没有办法检查两个 非平凡的 选择是否等效 最初我希望两个选择之间有形式上的等价 但是答案在证明 sql 查询等价性 https stackoverflow com questions 56895 proving sql query equ
  • 如何部分或仅按百分比沿路径过渡

    我是 d3 的初学者 目前无法使用最新版本 但我使用的是 3 x 版本 我想要实现的应该很简单 但遗憾的是我没有找到有关如何做到这一点的资源 目标是在我的 svg 中显示一条路径 然后我想显示例如一个圆并沿着路径过渡 移动 追踪圆 如果我想
  • Capistrano:deploy.rb 文件重构

    我的deploy rb中有以下代码 namespace app do desc copies the configuration frile from shared config yml to config task copy config
  • 生成尽可能最快的可执行文件

    我有一个非常大的程序 我一直在 Visual Studio 下编译 v6 然后迁移到 2008 我需要可执行文件尽可能快地运行 该程序大部分时间都花在处理各种大小的整数上 并且执行很少的 IO 显然 我会选择最大优化 但似乎可以做很多不属于
  • 如何在我的应用程序中添加应用内购买

    我想在我的应用程序中使用应用程序购买应用程序 但我不知道如何执行此操作 任何人都可以帮助我如何做以及源代码在哪里 给我链接或代码 这里有一堆链接 应用内购买编程指南 http developer apple com iphone libra
  • 在Java中清空数组/处理

    除了循环遍历数组中的每个元素并将每个元素设置为 null 之外 Java 处理中是否有一个本机函数可以简单地清空数组 或销毁它 以便能够将其重新声明为新数组 There s Arrays fill myArray null 并不是说它执行的
  • 如何在SSIS中将数据库名称设置为变量?

    在我当前的项目中 数据库名称不断变化 我不想每次都修改我的 OLE DB 源 因此我想将其设置为变量 也就是说 在每个 OLE DB Source 中 我可以将它用作参数 但是 SSIS 似乎不允许将数据库名称作为参数传输 那么我应该怎样做
  • 在 bash 脚本中检测鼠标点击

    我想知道如何在后台运行 bash 脚本 每当用户单击鼠标时该脚本都会执行某些操作 即运行脚本或命令或其他任何内容 即使终端关闭 我也希望它继续运行 有任何想法吗 谢谢 如果您使用的是X11 您可以尝试xdotool捕获鼠标事件 它会是这样的
  • 在 PHP 中重新定义常量

    是否可以在 php 中重新定义由define功能 我有一个包含多个常量的类 其中包含用户数据 我正在尝试为多个用户使用该类 define ALLEGRO ID id define ALLEGRO LOGIN login define ALL
  • ASP.NET WebApi - 一个控制器中的多个 GET 操作

    I have Users控制器和基本 REST 模式工作得很好 不过我需要一种额外的模式users id usergroups这将返回该用户的所有用户组 实现这一点的最佳方法是什么 因为我想我将需要在更多控制器上使用类似的路由 仅使用默认值
  • aio.h aio_read() 和写入内存泄漏

    我正在尝试使用 C 异步读取和写入磁盘 使用 Ubuntu 10 04 中的 posix aio 库 遵循此处概述的说明 一体机教程 http www ibm com developerworks linux library l async
  • 在函数内的 for 循环上使用 tqdm 来检查进度

    我正在使用 for 循环迭代目录树内的一大组文件 这样做时 我想通过控制台中的进度条来监视进度 因此 我决定使用 tqdm 来实现此目的 目前 我的代码如下所示 for dirPath subdirList fileList in tqdm
  • 从 torch.autograd.gradcheck 导入 zero_gradients

    我想复制代码here https github com LTS4 DeepFool blob master Python deepfool py 并且我在 Google Colab 中运行时收到以下错误 ImportError 无法导入名称
  • 使用纬度/经度对的自定义距离度量进行聚类

    我试图为 scikit learn DBSCAN 实现指定一个自定义聚类函数 def geodistance latLngA latLngB print latLngA latLngB return vincenty latLngA lat
  • 如何更新条件公式?

    让我直接进入示例 考虑以下等式 frml lt formula y a b x z 使用这样的公式规范 例如和AER ivreg 我想更新这个公式 使其显示为 frml2 lt y a b c x z w 但是 我不确定如何更新条件标志之前
  • 将 HttpClient 设置为太短的超时会导致进程崩溃

    我注意到当我使用时System Net HttpClient如果超时时间很短 有时可能会导致进程崩溃 即使它被包装在 try catch 块中 这是一个重现这一点的简短程序 public static void Main string ar
  • 使用 C 测试 X509 证书到期日期

    如何以编程方式测试 X509 证书是否过期 他们是直接的加密 API 吗 或者我必须获取 not after 时间并在我的代码中手动检查它 你没有说是哪种语言 所以我还是总结一下 php data openssl x509 parse fi
  • 如何在 Oracle PLSQL 中提交单个事务

    我需要编写一个 PL SQL 过程 在这个过程中 我需要在其自己的事务范围内调用另一个过程 并提交它 无论主事务是否失败或提交 换句话说 我需要类似的东西REQUIRES NEW交易传播 就像是 procedure mainProcedur