Oracle - 在一个事务中执行多个sql文件

标签 oracle

我有几个sql文件。我需要在事务中执行它们。当发生错误时,所有更改都将回滚。

这可以使用 sqlplus 或其他工具吗?

编辑这些文件中没有任何显式提交,只有 DDL sql。

最佳答案

通常:这是否可能在很大程度上取决于 SQL 文件的内容 - 例如:

  • 是否有明确的COMMIT
  • 是否涉及任何存储过程?
  • 有 DDL 命令吗?
  • 是否涉及任何数据库链接?

等等。

如果您不知道/无法控制 SQL 文件的内容,我会说不..

如果您可以确保文件不包含任何 COMMIT、任何 DDL、任何存储过程调用等。那么您可以将它们连接起来并在一个事务中执行它们...如何做到这一点完全取决于您的工具...

更新 - OP 添加 SQL 文件包含 DDL 命令后:

答案是否定的,因为 DDL 命令使用隐式 COMMIT - 尽管某些数据库可能允许一些“解决方法”(例如 Oracle 有一个可配置的“闪回区域”,可以“滥用”实现你想要的)但大多数人没有。

解决这个问题(DDL 脚本/事务)的通常方法是编写 2 个脚本 - 一个用于进行所有更改...第二个脚本仅在执行第一个脚本时发生错误时运行...具体如何编写此类脚本取决于您的具体情况。

关于Oracle - 在一个事务中执行多个sql文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8374606/

相关文章:

sql - 空值会改变平均值吗?

asp.net - ORA-01036 : illegal variable name/number C# (SqlDataSource) Oracle 11g

java - 使用 LogicalConnection 传递数组/表 Oracle 类型

oracle - 如何使用 Oracle SQL Developer 生成 Oracle 数据库导出脚本?

sql - 授予 Oracle 包的权限?

java - 使用PrepareCall方法将参数传递给函数并返回计数值

sql - 在Oracle SQL中:如何将当前日期和时间插入表中?

sql - 如何使用简单的更新语句更新表中的 varray 类型?

java - 插入失败后我可以继续数据库事务吗?

oracle - 如何在oracle中创建一个接受参数数组的存储过程