首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在oracle中,如果另一个存储过程(在第一个过程中被调用)失败,那么该存储过程是否无法进一步执行?

在Oracle中,如果一个存储过程在另一个存储过程中被调用,并且调用的存储过程失败了,那么该存储过程是否无法进一步执行取决于具体的情况和处理方式。

一种常见的处理方式是使用异常处理机制。在调用存储过程的代码中,可以使用异常处理块来捕获存储过程调用时可能抛出的异常。如果被调用的存储过程发生了错误,可以在异常处理块中进行相应的处理,例如记录日志、回滚事务等。然后,可以选择继续执行后续的逻辑或者中止当前的存储过程。

另一种处理方式是使用事务控制。在调用存储过程的代码中,可以将存储过程的执行放在一个事务中。如果被调用的存储过程发生了错误,可以回滚整个事务,使得所有的修改都被撤销。然后,可以选择继续执行后续的逻辑或者中止当前的存储过程。

总之,是否继续执行取决于具体的处理方式和业务逻辑的要求。在Oracle中,可以通过异常处理机制或者事务控制来处理存储过程调用失败的情况,以实现灵活的处理策略。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Oracle 在线重定义(上)

REDEF_TABLE 当您想要更改以下属性时, 过程使您能够一个步骤执行在线重新定义表的存储属性: 表空间更改,包括表、分区、索引或 LOB 列的表空间更改 压缩类型更改,包括表、分区、索引键或...通过调用过程验证是否可以在线重新定义表CAN_REDEF_TABLE。如果表不是在线重新定义的候选对象,则此过程会引发错误,指示无法在线重新定义表的原因。 3)....例如,如果 SYNC_INTERIM_TABLE 由于“无法扩展表空间中的表”错误而导致过程调用失败,则可以通过增加空间不足的表空间大小并重新运行 SYNC_INTERIM_TABLE 过程调用来纠正问题...如果您决定回滚在线表重定义,那么将同步临时表,Oracle 数据库将切换回临时表,以便表具有原始定义。...如果必须重新启动在线重新定义过程如果您不先调用ABORT_REDEF_TABLE,则后续重新定义表的尝试将失败

16421

DBus数据库表结构变更处理方案

于是我们开始尝试DDL trigger调用存储过程存储过程执行Event表的insert操作,但由于存储过程和DDL trigger仍然属于同一个事务,因此Event表的数据依然不能被OGG捕获...实际上oracle数据库里可以使用多种语言来编写存储过程Oracle 8i开始支持java编写存储过程,于是我们立即开始实现java存储过程,通过JDBC连接数据库实现Event表的写入并提交事务,最终通过实践验证了这种办法的可行性...当我们在生产环境部署DDL trigger的时候,发现数据库服务器并没有安装执行java所需要的组件,每次部署都需要DBA同学安装执行java存储过程所需要的组件,我们试图找到一个不使用java存储过程的方案...根据表名、schema以及版本号调用元数据抓取模块获取表的元数据(包括表的字段类型、长度以及注释等)信息,实际上DDL trigger和alter语句一个事务执行,这样trigger执行过程无法从...(命名为Event 2),这种情况下我们通过SQL 2 查询到的结果实际上是再次变更后的结果,使用这个结果产生的元数据去解析Event 1和Event 2之间的数据,如果两次表结构变更是不兼容的,那么必然会导致解析失败

1.6K40

静默错误:Oracle 数据库是如何应对和处理的 ?

这一方面说明了自动化运维的重要性,另一方面仍然要警惕自动化的故障传播。 既然有这样一个机会让我们了解了『静默错误』,那么我们可以进一步来看一看,Oracle数据库的静默错误是如何处理的。...上文提到的“撕裂写入”,如果Oracle 数据库中发生,那么就是分裂块,当然 Oracle 数据库会自动检测这种情况。 那么“静默损坏”发生的概率有多少呢?...某些磁盘阵列运行后台进程,以验证数据和RAID奇偶校验是否匹配,并且可以捕获这些类型的错误。 然而,研究还发现,后台验证过程错过了13%的错误。 那些未被发现的错误,就会成为企业的灾难。...进一步的展开一下,看看Oracle的增强一致性检查实现。复杂的数据流转过程,每一个步骤都可能产生数据分歧: ?...典型的 I/O 处理栈,最后存储和驱动器层, 8 Byte 的 PI 校验位才被增加进去,而存储出现静默错误问题时,顶层是无法感知的。 ?

2K20

Java面试之数据库面试题

如,某表上的触发器上包含对另一个表的数据操作,而操作又会导致表触发器被触发。 2、什么是存储过程?用什么来调用?...存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。...调用: 1)可以用一个命令对象来调用存储过程。 2)可以供外部程序调用,比如:java程序。 3、存储过程的优缺点? 优点: 1)存储过程是预编译过的,执行效率高。...2)存储过程的代码直接存放于数据库,通过存储过程名直接调用,减少网络通讯。 3)安全性高,执行存储过程需要有一定权限的用户。 4)存储过程可以重复使用,可减少数据库开发人员的工作量。...事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。

1.5K20

数据库常见的面试题大全

如,某表上的触发器上包含对另一个表的数据操作,而操作又会导致表触发器被触发。 2、什么是存储过程?用什么来调用?...存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。...调用: 1)可以用一个命令对象来调用存储过程。 2)可以供外部程序调用,比如:java程序。 3、存储过程的优缺点? 优点: 1)存储过程是预编译过的,执行效率高。...2)存储过程的代码直接存放于数据库,通过存储过程名直接调用,减少网络通讯。 3)安全性高,执行存储过程需要有一定权限的用户。 4)存储过程可以重复使用,可减少数据库开发人员的工作量。...事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。

1.4K40

数据库经典面试题,都给你收集好了!!!

如,某表上的触发器上包含对另一个表的数据操作,而操作又会导致表触发器被触发。 2、什么是存储过程?用什么来调用?...存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。...调用: 1)可以用一个命令对象来调用存储过程。 2)可以供外部程序调用,比如:java程序。 3、存储过程的优缺点? 优点: 1)存储过程是预编译过的,执行效率高。...2)存储过程的代码直接存放于数据库,通过存储过程名直接调用,减少网络通讯。 3)安全性高,执行存储过程需要有一定权限的用户。 4)存储过程可以重复使用,可减少数据库开发人员的工作量。...事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。

1.5K30

Java面试之数据库面试题

如,某表上的触发器上包含对另一个表的数据操作,而操作又会导致表触发器被触发。 2、什么是存储过程?用什么来调用?...存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。...调用: 1)可以用一个命令对象来调用存储过程。 2)可以供外部程序调用,比如:java程序。 3、存储过程的优缺点? 优点: 1)存储过程是预编译过的,执行效率高。...2)存储过程的代码直接存放于数据库,通过存储过程名直接调用,减少网络通讯。 3)安全性高,执行存储过程需要有一定权限的用户。 4)存储过程可以重复使用,可减少数据库开发人员的工作量。...事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。

1.5K41

Oracle数据库12cR2版本的SQL计划管理

方案选择:确保只接受SQL计划基线中被记录的新计划,这些新计划是SQL计划基线没有被接受的那些计划。...如果SQL语句再次执行那么语句的日子中就会标记它为一条重复执行的语句,然后SQL基线就会被创建,基线信息包括能够使优化器为当前语句生成基于cost的执行计划所需的的所有信息,如:SQL文本、outline...存储Oracle数据库11g过时了,Oracle强烈建议任何现有的存储的outline都要迁移到SPM。 可以使用dbms_spm.migrate_stored_outline过程。...当启用时,SQL解析期间优化器会检查SQl是否有SQL计划基线。如果找到了SQL计划基线,而基于成本的计划在基线是一个被接受的计划,那么优化器将继续使用计划。...Oracle数据库11g,执行这个函数会引发编译使用存储SQL管理基线库的信息。这种情况12C数据库也可能发生,当这个计划是11g数据库中被创建的。

1.3K100

Oracle数据库备份和恢复配置详解

本文Oracle讲述了数据库备份和恢复配置的详解过程,可能的失败及其解决方法。 失败类型 ---- 遇到的失败或错误分为两大类:物理和逻辑。...如果执行了STARTUP命令,那么绝对不会丢失任何数据。发生任何崩溃之后,都应当执行STARTUP命令并查看崩溃的程度。这个命令可以解决所有问题。...如果当前联机日志文件组不可同,可能是由于未被多路复用,一个成员因介质受损而被破坏,那么SMON进程无法进行前滚恢复。如果SMON进程无法通过前滚修正数据库的损坏,那么不能打开数据库。...如果一个数据文件某个时刻被破坏,那么可以还原数据文件的一个备份,并应用归档日志重做流的变更,从而使这个数据文件是最新的。...默认情况下,数据库时非归档日志模式创建的,这意味着日志切换没有先进行复制的情况下会重写联机重做日志文件。此时数据库仍然不会受损,但是如果数据文件因为介质失败被损坏,那么会丢失数据。

1.2K21

Java面试手册:数据库 ③

事务结束有两种,事务的步骤全部成功执行时,提交事务,如果其中一个失败那么将发生回滚操作,并且撤销之前的所有操作。...存储在数据库中一组完成特定功能的SQL代码组合(SQL代码块),经过一次编译后再次调用不需要编译,用户通过指定存储过程的名称并给出参数(如果存储过程带有参数)来执行它, 是一种数据库存储复杂程序,以便外部程序调用的一种数据库对象...远程存储过程: SQL Server2005,远程存储过程(Remote Stored Procedures)是位于远程服务器上的存储过程,通常可以使用分布式查询和EXECUTE命令执行一个远程存储过程...临时存储过程:又分为两种: 一是本地临时存储过程,以井字号(#),作为其名称的第一个字符,则存储过程将成为一个存放在tempdb数据库的本地临时存储过程,且只有创建它的用户才能执行它; 二是全局临时存储过程...,以两个井字号(##)号开始,则存储过程将成为一个存储tempdb数据库的全局临时存储过程,全局临时存储过程一旦创建,以后连接到服务器的任意用户都可以执行它,而且不需要特定的权限。

64630

Oracle数据库备份和恢复配置详解

如果执行了STARTUP命令,那么绝对不会丢失任何数据。发生任何崩溃之后,都应当执行STARTUP命令并查看崩溃的程度。这个命令可以解决所有问题。...然而,如果DBWn进程实例崩溃前将某些数据块写入磁盘,那么又将出现怎样的情况呢?John(或者另一个用户)可能频繁地重新查询与其相关的数据,而Joo对数据进行了未提交的更改,并且不再查看这些数据。...如果当前联机日志文件组不可同,可能是由于未被多路复用,一个成员因介质受损而被破坏,那么SMON进程无法进行前滚恢复。如果SMON进程无法通过前滚修正数据库的损坏,那么不能打开数据库。...如果一个数据文件某个时刻被破坏,那么可以还原数据文件的一个备份,并应用归档日志重做流的变更,从而使这个数据文件是最新的。...默认情况下,数据库时非归档日志模式创建的,这意味着日志切换没有先进行复制的情况下会重写联机重做日志文件。此时数据库仍然不会受损,但是如果数据文件因为介质失败被损坏,那么会丢失数据。

3.3K10

聊聊对JVM内存结构的理解吧

动态链接:如果调用的方法无法在编译期被确定下来,只能在运行期将调用的方法的符号引用转为直接引用,这种引用转换过程具备动态性,因此被称为动态链接。...方法绑定 早期绑定:被调用的目标方法如果在编译期可知,且运行期保持不变。晚期绑定:被调用的方法在编译期无法被确定,只能够程序运行期根据实际的类型绑定相关的方法。...而在 JAVA 对象就是可以被进一步分解的聚合量替换过程,通过逃逸分析确定对象不会被外部访问,并且对象可以被进一步分解时,JVM 不会创建对象,而会将该对象成员变量分解若干个被这个方法使用的成员变量所代替...将堆分配转化为栈分配:如果一个对象子程序中被分配,要使指向对象的指针永远不会逃逸,对象可能是栈分配的候选,而不是堆分配。...它可以通过调用本地方法直接分配 Java 虚拟机之外的内存,然后通过一个存储的DirectByteBuffer对象直接操作内存,而无须先将外部内存的数据复制到堆再进行操作,从而提高了数据操作的效率

30030

JVM 内存结构

动态链接:如果调用的方法无法在编译期被确定下来,只能在运行期将调用的方法的符号引用转为直接引用,这种引用转换过程具备动态性,因此被称为动态链接。...方法绑定 早期绑定:被调用的目标方法如果在编译期可知,且运行期保持不变。晚期绑定:被调用的方法在编译期无法被确定,只能够程序运行期根据实际的类型绑定相关的方法。...而在 JAVA 对象就是可以被进一步分解的聚合量替换过程,通过逃逸分析确定对象不会被外部访问,并且对象可以被进一步分解时,JVM 不会创建对象,而会将该对象成员变量分解若干个被这个方法使用的成员变量所代替...将堆分配转化为栈分配:如果一个对象子程序中被分配,要使指向对象的指针永远不会逃逸,对象可能是栈分配的候选,而不是堆分配。...它可以通过调用本地方法直接分配 Java 虚拟机之外的内存,然后通过一个存储的DirectByteBuffer对象直接操作内存,而无须先将外部内存的数据复制到堆再进行操作,从而提高了数据操作的效率

14930

一文详解JVM内存结构

动态链接:如果调用的方法无法在编译期被确定下来,只能在运行期将调用的方法的符号引用转为直接引用,这种引用转换过程具备动态性,因此被称为动态链接。...方法绑定 早期绑定:被调用的目标方法如果在编译期可知,且运行期保持不变。 晚期绑定:被调用的方法在编译期无法被确定,只能够程序运行期根据实际的类型绑定相关的方法。...而在 JAVA 对象就是可以被进一步分解的聚合量 替换过程,通过逃逸分析确定对象不会被外部访问,并且对象可以被进一步分解时,JVM 不会创建对象,而会将该对象成员变量分解若干个被这个方法使用的成员变量所代替...将堆分配转化为栈分配:如果一个对象子程序中被分配,要使指向对象的指针永远不会逃逸,对象可能是栈分配的候选,而不是堆分配。...它可以通过调用本地方法直接分配 Java 虚拟机之外的内存,然后通过一个存储的DirectByteBuffer对象直接操作内存,而无须先将外部内存的数据复制到堆再进行操作,从而提高了数据操作的效率

17520

java并发编程实战(2) 线程同步synchronized

被synchronized修饰的类或对象的所有操作都是原子的,因为执行操作之前必须先获得类或对象的锁,直到执行完才能释放,这中间的过程无法被中断。...当线程获取轻量级锁的过程执行CAS操作失败时,进入与monitor相关联的操作系统重量级锁(mutex semaphore)前会进入忙等待(Spinning)然后再次尝试,当尝试一定的次数后如果仍然没有成功则调用...当对象调用了notify方法或者notifyAll方法后,_WaitSet的线程就会被唤醒,然后_WaitSet队列中被唤醒的线程和_EntryList队列的线程一起通过CPU调度来竞争对象的Monitor...需要将当前线程挂起并从用户态切换到内核态来执行,这种切换的代价是非常昂贵的;然而在现实的大部分情况下,同步方法是运行在单线程环境(无锁竞争环境)如果每次都调用Mutex Lock那么将严重的影响程序的性能...解锁过程 当有其他线程尝试获得锁时,是根据遍历偏向线程的lock record来确定该线程是否还在执行同步块的代码。

36420

MySQL十种常见错误,你可犯过?

错误8:各种不同步的命令 如果以错误的顺序去调用客户端的函数,那么您可能会接收到同步错误之类的命令。这就意味着命令不能够客户端的代码中被执行。...例如,您要执行函数--mysql_use_result()。与此同时,您又尝试去执行另一个查询--mysql_free_result(),那么系统就有可能发生此类错误。...说白了,如果您要执行的两个查询,它们所返回结果集分别是各自调用函数的对方输出结果(并非MySQL的存储结果)的话,那么就会出现不同步的命令现象。...错误9:忽略用户 如果MySQL服务器启动、或重新加载某些授权表时,发现有个用户表的帐户带有非法密码,那么就会出现如下的错误: Found the wrong password for user '...错误10:无法创建/写入文件 如下的错误表明:如果执行请求的过程,MySQL不能在临时目录,为某个结果集生成一个临时文件: Can't create/write to file 'sqla3fe_

81420

Oracle PLSQL基础语法学习15:静态表达式

例如,如果您只更改debug的值为FALSE,然后重新编译这两个过程那么my_proc1的编译代码会改变,但my_proc2的编译代码不会改变。...存储过程的主体,使用 EXECUTE IMMEDIATE 语句来执行了一个 SQL 查询,查询的是名为 table1 的表的所有数据。...由于存储过程是以当前用户的权限来运行的,因此只有当前用户具有足够的权限才能执行查询。如果当前用户没有对表 table1 的访问权限,则查询将失败并抛出异常。...存储过程的主体,使用 EXECUTE IMMEDIATE 语句来执行了一个 SQL 查询,查询的是名为 table1 的表的所有数据。...因此,只要定义者具有访问表 table1 的权限,无论调用存储过程的用户具有何种权限,查询都会成功执行。 但是,如果定义者创建存储过程时已经不存在或者权限被撤销,则存储过程无法成功执行

14350

ORA-1555经典的错误

UNDO_RETENTION参数设置的时间,且这是高并发的一个系统,很快可能就会被应用session覆盖UNDO的记录,导致无法找到UNDO的记录产生一致性读,因此报错ORA-1555,此次执行失败...一个语句在读取数据快时,如果发现这个数据块是它读取的过程中被修改的(即开始执行读操作时并没有被修改),就不直接从数据块上读取数据,而是从相应的回滚段条目中读取数据。...,则其他语句就无法提交,也只能等待,虽然这是由业务决定的,但这种情况还是应该避免,当然这是另一个话题了。...上述语句执行过程,创建查询语句,这里使用DBMS_LOCK.SLEEP(0.01)来模拟查询单次时间是0.01秒,由于是随机插入到表的,因此此处相当于随机地查询表的块。...这个查询语句执行几秒就可能失败

84520

JVM深入理解-内存物理结构&类加载

加载 加载时类加载过程第一个阶段,加载阶段,虚拟机需要完成以下三件事情: 1、通过一个类的全限定名来获取其定义的二进制字节流。 2、将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。...文件格式的验证:验证字节流是否符合Class文件格式的规范,并且能被当前版本的虚拟机处理,验证的主要目的是保证输入的字节流能正确地解析并存储于方法区之内。...准备阶段,类变量已经被赋过一次系统要求的初始值,而在初始化阶段,则是根据程序员通过程序指定的主观计划去初始化类变量和其他资源,或者可以从另一个角度来表达:初始化阶段是执行类构造器()方法的过程...因此,虚拟机第一个执行的()方法的类肯定是java.lang.Object。...5、虚拟机会保证一个类的()方法多线程环境中被正确地加锁和同步,如果多个线程同时去初始化一个类,那么只会有一个线程去执行这个类的()方法,其他线程都需要阻塞等待,直到活动线程执行

34320

Swift基础 初始化

过程涉及为实例上的每个存储属性设置初始值,并在新实例准备使用之前执行所需的任何其他设置或初始化。 您通过定义初始化器来实现此初始化过程,初始化器就像可以调用以创建特定类型的新实例的特殊方法。...可选属性类型 如果您的自定义类型有一个逻辑上允许“无值”的存储属性——可能是因为初始化期间无法设置其值,或者因为它允许稍后某个时候具有“无值”——请使用可选类型声明属性。...为了确保数字类型之间的转换准确保持值,请使用init(exactly:)初始化器。如果类型转换无法维护值,初始化器将失败。...无论哪种情况,如果您委托给另一个导致初始化失败的初始化器,整个初始化过程都会立即失败,并且不会执行进一步的初始化代码。 注意 故障初始化器也可以委托给不可失败的初始化器。...如果quantity无效,整个初始化过程将立即失败,并且不会执行进一步的初始化代码。同样,Product故障初始化器会检查name值,如果name是空字符串,初始化过程将立即失败

13300
领券