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

如果on proc中有错误,则执行plsql块.Even中的所有过程

在Oracle数据库中,"on proc"是指在PL/SQL块中执行的过程。如果在执行过程中发生错误,可以使用异常处理机制来处理错误并执行相应的操作。

异常处理是一种在程序执行过程中捕获和处理异常的机制。在PL/SQL中,可以使用BEGIN...EXCEPTION...END语句块来定义异常处理逻辑。当在"on proc"过程中发生错误时,可以使用EXCEPTION关键字来捕获异常,并在EXCEPTION块中执行相应的操作。

以下是一个示例代码:

代码语言:txt
复制
BEGIN
  on proc; -- 执行"on proc"过程
  
EXCEPTION
  WHEN OTHERS THEN
    -- 执行异常处理逻辑
    DBMS_OUTPUT.PUT_LINE('An error occurred: ' || SQLERRM);
    -- 执行PL/SQL块中的其他操作
    plsql块.Even;
END;

在上述代码中,如果在执行"on proc"过程时发生错误,程序将捕获异常并执行异常处理逻辑。异常处理逻辑可以根据具体需求进行定义,例如输出错误信息、记录错误日志、回滚事务等。

关于PL/SQL块中的其他过程"Even",可以根据具体需求来执行相应的操作。这里无法提供具体的推荐产品和链接地址,但可以根据需要选择适合的腾讯云产品来支持相关的开发需求,例如云数据库、云函数、云存储等。

需要注意的是,本回答中没有提及具体的云计算品牌商,因此无法给出与腾讯云相关的产品和链接地址。如需了解腾讯云的相关产品和服务,请访问腾讯云官方网站。

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

相关·内容

proc中插入VARCHAR2字段报ORA-01461: can bind a LONG value only for insert into a LONG column

最近做一个天信达货运接口的项目,碰到这么个诡异的问题。 背景: 使用proc写的应用,向数据库插入记录。表中有三个VARCHAR2(4000)类型的字段。注:Oracle 9i的库。...然后换了一个10g的库,用proc可以正确完成插入。 难道9i的库,对于proc插入有什么特殊的限制? 解决过程: 1....文章中说明了问题之和9i及之前版本有关,并且指出同一个ORA的错误可能在高版本中出现,但根本原因和这里要描述的不同。...如果有一个这样的列,再加上一个LONG列,或者有两个或更多这样的列,数据库会认为你正在绑定两个LONG列。因此就会报这种错误。 对于以上错误的workaround方法,MOS则给出了四种: 1....但使用PLSQL Developer或SQLPLUS这些非OCI驱动,则不会报错。 2. 使用proc绑定变量,根据上面的实验来看,会让ORA-01461这个错误的产生更混淆。 3.

2.8K40

关于shell中的plsql脚本错误排查与分析(r4笔记第21天)

明白了存储过程的整体实现思路,来看抛出的错误,错误是一个老套的ORA错误。...ORA-00942: table or view does not exist 根据错误的信息,出错的地方是在第一个存储过程proc1 这个存储过程的内容就很丰富了,里面会调用动态sql创建view,创建临时表...因为有些pl/sql块不能随便执行,不能随便创建view,table等,所以通过explain plan能够快速的校验出哪些表可能存在问题或者无法访问等等。 如果存在,那么很快就会解析生成执行计划。...如果出错,就会很明显的得到错误的出处。.../u02/app/plsql/test.sql 这样在shell脚本中调用使用@test.sql的调用方式来运行pl/sql块就很可能就是库文件的路径而不是当前的开发目录下了。

1.3K50
  • oracle基本面试题_mongodb面试题

    函数return返回值没有返回参数模式,存储过程通过out参数返回值, 如果需要返回多个参数则建议使用存储过程 4). 在sql数据操纵语句中只能调用函数而不能调用存储过程 4....导入/导出的是二进制的数据, 2.plsql导入/导出的是sql语句的文本文件 5. Oracle中有哪几种文件?...企业规则的特点是要经常变化,如果把体现企业规则的运算程序放入应用程序中,则当企业规则发生变化时,就需要修改应用程序工作量非常之大(修改、发行和安装应用程序)。...如果把体现企业规则的 运算放入存储过程中,则当企业规则发生变化时,只要修改存储过程就可以了,应用程序无须任何变化。 缺点: 1. 可移植性差 2....30. oracle中存储过程,游标和函数的区别 游标类似指针,游标可以执行多个不相关的操作.如果希望当产生了结果集后,对结果集中的数据进行多 种不相关的数据操作 函数可以理解函数是存储过程的一种

    3.3K20

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

    IF指令用于测试编译时常量的值,如果值为TRUE,则执行THEN指定的代码块,否则执行$ELSE指定的代码块。...在存储过程的主体中,使用 EXECUTE IMMEDIATE 语句来执行了一个 SQL 查询,查询的是名为 table1 的表的所有数据。...由于存储过程是以当前用户的权限来运行的,因此只有当前用户具有足够的权限才能执行该查询。如果当前用户没有对表 table1 的访问权限,则该查询将失败并抛出异常。...在存储过程的主体中,使用 EXECUTE IMMEDIATE 语句来执行了一个 SQL 查询,查询的是名为 table1 的表的所有数据。...因此,只要该定义者具有访问表 table1 的权限,无论调用该存储过程的用户具有何种权限,该查询都会成功执行。 但是,如果定义者在创建存储过程时已经不存在或者权限被撤销,则该存储过程无法成功执行。

    19450

    plsql编程---过程、函数、包

    如下所示: declare /*定义部分——定义常量、变量、游标、例外、复杂数据类型*/ begin /*执行部分——要执行的pl/sql语句和sql语句*/ exception /*例外处理部分——处理运行的各种错误...4.过程 过程用于执行特定的操作,当建立过程时,既可以指定输入参数(in),也可以指定输出参数(out), 通过在过程中使用输入参数,可以将数据传递到执行部分; 通过使用输出参数,可以将执行部分的数据传递到应用环境...; 在oracle中调用存储过程: 第一种:call proc01(7654); 第二种:在plsql块中调用 SQL> begin 3 proc01(7654); 5 end;...end; 13. end; 3).如何调用包的过程或是函数 当调用包的过程或是函数时,在过程和函数前需要带有包名,如果要访问其它方案的包,还需要在包名前加方案名。...调用存储过程 exec pkg_sal.update_sal('zhang',50000); 调用函数 1.plsql代码块 DECLARE  v_income number; begin

    56510

    FORALL 之 SAVE EXCEPTIONS 子句应用一例

    下面的示例来自一个实际的应用,撇开原始的表名与实际应用中的处理过程,仅仅通过简单示例来展现。      ...2、需要将数据库A的一些表的数据同步到数据库B对应的目的表       3、如果同步的过程中出现某条特定的记录错误,则写该记录产生的错误信息(含表名,主键)到日志表,并将其原表同步状态更新为N,否则更新为...Y       4、如果非由于INSERT产生的错误信息,则要求写过程名及对应的错误信息到日志表    如对于批量SQL较为熟悉,请直接阅读下文,否则,请参阅阅读本文所需要的相关知识: 批量SQL之...-->为表emp_dest 添加约束用于在insert过程中触发错误产生 scott@CNMMBO> alter table emp_dest add constraint ck_sal check(sal...scott@CNMMBO> @test_bulk_ins_err -->再次执行时发现只有empno号为1111的记录被插入,而2222和3333都由于错误而未被同步的目标表 PL/SQL procedure

    79710

    PLSQL --> 动态SQL调用包中函数或过程

    但是对于系统自定义的包或用户自定的包其下的函数或过程,不能等同于DDL以及DML的调用,其方式稍有差异。如下见本文的描述。      ...有关动态SQL的描述,请参考: PL/SQL --> 动态SQL PL/SQL --> 动态SQL的常见错误 1、动态SQL调用包中过程不正确的调用方法 --演示环境 scott@USBO> select...cascade=>true) PL/SQL procedure successfully completed. 2、动态SQL调用包中过程正确的调用方法 --如下面这段plsql代码,我们在原代码的基础上增加了...begin ..与end部分后,该plsql块被成功执行 --注,字符拼接的plsql块中,end; 之后不需要使用斜杠“/” scott@USBO> DECLARE 2 v_sql VARCHAR2...--下面这个示例中拼接的字串中,调用了声明中的变量 --下面给出了错误提示,是由于我们漏掉了两个单引号,即需要使用转义字符,错误如下 scott@USBO> DECLARE 2 v_sql

    1.5K20

    Java程序员的日常——存储过程知识普及

    存储过程是保存可以接受或返回用户提供参数的SQL语句集合。在日常的使用中,经常会遇到复杂的业务逻辑和对数据库的操作,使用存储过程可以进行封装。...2 减少网络流量 存储过程的代码直接存储在数据库中,用户通过名称进行调用,减小网络流量,加快执行速度。...6 (缺点)不易移植和修改 使用存储过程封装业务逻辑将限制应用程序的可移植性;另外,如果更改参数或者返回的数据以及类型,需要修改相关的代码,比较繁琐。...(name,'001') 存储过程的异常处理 为了提高存储过程的健壮性,避免运行错误,建立存储过程时,应该包含异常处理的部分。...在返回值上 存储过程的返回值,可以有多个 函数的返回值只有一个 调用方式上 存储过程的调用方式有:exec、execute、语句块调用 函数的调用方式有:可以在函数块中、也可以直接在sql中使用,比如:

    1.5K80

    plsql中的forall简单测试(r5笔记第63天)

    可以参见下面的两个图,可以看到其实在pl/sql中,可能很多时候我们所写的pl/sql代码会在sql引擎和plsql引擎建进行上下文的切换,这个过程还是很耗费时间的。 ?...而forall却是相反,是提供一次上下文切换,会在forall的过程中进行数据的包装处理。一次发送给sql执行器去处理,大大减少了上下文切换时间。 ?...对于此,可以想象,如果cursor中的结果集很庞大,就很可能进行大量的上下文切换,导致执行速度骤降。 我们来做一个简单的实例来说明一下。...Elapsed: 00:00:00.48 然后就开始执行存储过程 [ora11g@oel1 plsql]$ cat a.sql create or replace procedure test_proc...; 执行的过程中会看到进程占用了大量的cpu资源。

    748110

    Oracle应用实战八(完结)——存储过程、函数+对象曹组

    游标 在写java程序中有结果集的概念,那么在pl/sql中也会用到多条记录,这时候我们就要用到游标,游标可以存储查询返回的多条数据。...(重点) 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它...存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。...在触发器中触发语句与伪记录变量的值 触发语句 :old :new Insert 所有字段都是空(null) 将要添加的数据 Update 更新以前该行的值 更新后的值 delete 删除以前该行的值 所有字段都是空...测试 1)定义过程,并返回引用型游标 --定义过程,输入部门编号,返回部门下所有员工信息 create or replace procedure proc_cursor_ref(dno in number

    1.9K60

    Crontab定时执行Oracle存储过程

    问题解决 想要解决这个问题,我的想法是这样,把需要处理的所有逻辑写在脚本里,然后设定一个Crontab,通过定时任务去执行。...一,首先看单纯在plsql是如何调用这个存储过程的,我通过定义一个startdate和enddate,然后通过Oracle的时间函数last_day计算出每月的最后一天,开始的第一天我是直接在月份拼接了...(startdate,enddate); end;  / 二,把上述的逻辑写入到sh脚本中,我们在相关的路径新建一个文件call_proc_high_settle_rep_month.sh,通过执行sqlplus...,然后去执行上述的内容 脚本内容如下: 其中sqlplus中的zh表示数据库账户名,*表示密码,zh10g表示数据库实例名,是你配置在tnsnames.ora的连接名。...echo "get Finished" 三、手工执行了这个脚本,发现没错误,可以执行。

    1.7K20

    JavaSE(十一)之异常处理详解

    只有finally块,执行完成之后,         才会回来执行try或者catch块中的return或者throw语句,如果finally中使用了return或者throw等终止方法的语句,则就不会跳回执行...若有一个catch语句匹配到了,则执行该catch块中的异常处理代码,就不再尝试匹配别的catch块了。     ...匹配原则:如果抛出的异常对象属于catch子句的异常类,或者属于该异常类的子类,则认为生成的异常对象与catch块捕获的异常类型相匹配。   ...这个过程将继续直到一个catch语句被匹配成功,或者是直到所有的嵌套try语句被检查完毕。如果没有catch语句匹配,Java运行时系统将处理这个异常。  ...如果发现了匹配的块,控制转向该语句;如果没有发现,次包围的try块来检查,以此类推。如果没有发现匹配的catch块,默认异常处理程序中断程序的执行并且打印堆栈轨迹。

    1.3K90

    Oracle基础–PLSQL编程基本语法

    1.PL/SQL(Procedure Language/SQL) 2.PLSQL是Oracle对sql语言的过程化扩展(类似于Basic) 3.指在SQL命令语言中增加了过程处理语句(如分支、循环等),...这是一个可选部分,并定义了程序中要使用的所有变量,游标,子程序和其他元素。 可执行部分:此部分包含在关键字BEGIN和END之间,这是一个强制性部分。...这是一个可选部分,它包含处理程序中错误的异常。...2.PLSQL编程语言的大小写是不区分的 三、HELLO WORD 打印HELLO WORD 其中DBMS_OUTPUT为oracle内置程序包,相当于Java中的System.out,而PUT_LINE...在PL/SQL编程中,每个语句以“;”结尾。使用BEGIN和END可以将PL/SQL块嵌套在其他PL/SQL块中 。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    82210

    使用 DBMS_PROFILER 定位 PLSQL 瓶颈代码

    而对于PL/SQL代码而言,既有SQL代码,又有PL/SQL代码,仅仅使用10046事件是远远不够的,因为可能SQL时间很短,而整个包或过程执行时间N久,而且包或过程中又嵌套有其他包,过程,函数。...尽管没有工具可以直接作用于PL/SQL代码进行优化,但借助于PL/SQL PROFILER来定位你的代码块中哪些部分是性能瓶颈就已经达到了事半功倍的效果。...剖析的schema执行脚本proftab.sql(也可以使用一个账户创建然后创建同义词并授权给public) --首次使用时执行,会创建相应的表存储profiler信息,即plsql_profiler_runs...b、执行你需要剖析的代码(包,过程,匿名块等) scott@USBO> exec literals; c、停止profiler,调用过程stop_profiler scott@USBO> execute...execute immediate耗用49s中,也即是说,如果能够降低该行代码时间,则整个性能会大幅提升 3、使用PROFILER剖析PLSQL代码(法二) --这个方法实际也没有太多的变化,只不过将需要剖析的代码和启用

    76710

    Web-第二十四天 Oracle学习【悟空教程】

    2.别名用法 在查询的结果列中可以使用别名 Select 列名 别名,列名别名,... from emp; 别名中,有没有双引号的区别就在于别名中有没有特殊的符号或者关键字。 ?...序列 在很多数据库中都存在一个自动增长的列,如果现在要想在oracle 中完成自动增长的功能, 则只能依靠序列完成,所有的自动增长操作,需要用户手工完成处理。...在写java程序中有集合的概念,那么在pl/sql中也会用到多条记录,这时候我们就要用到游标,游标可以存储查询返回的多条数据。...'); end; 十二、存储过程 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数...3.实现过程的调用 1.调用过程 1.过程定义 --统计年薪的过程create or replace procedure proc_countyearsal(eno in number,esal out

    1.9K20

    PLSQL基础语法

    有时候我们需要对数据库中的数据进行一些稍微复杂的操作,而且这些操作都是一次性的,用完之后就不再用了。 用存储过程的话就太麻烦,而且浪费,用完了还要去删除。而单个SQL无法满足需求。...这时候用一下SQL的语句块就可以了。 如果你用的是Oracle数据库,那么你就可以用PL/SQL(Procedure Language/SQL),即过程化查询语言。这是第三代语言。...但如果是在MYSQL/SQLSERVER数据库中,那PL/SQL就无法使用(PL/SQL是属于Oracle的过程查询语言)。...如果你要在MYSQL/SQLSERVER实现复杂的逻辑查询,那你只能通过编写存储过程实现。 下面对PL/SQL常用的一些基础知识进行讲解。...一般情况下,我们可以在存储过程的异常处理模块中将出错的信息保存到特定的系统表中,这样我们就可以根据日志记录得知执行的错误。

    2.6K110

    Oracle总结【PLSQL学习】

    PLSQL介绍 PLSQL是Oracle对SQL99的一种扩展,基本每一种数据库都会对SQL进行扩展,Oracle对SQL的扩展就叫做PLSQL… SQL99是什么 (1)是操作所有关系型数据库的规则...程序中:;号表示每条语句的结束,/表示整个PLSQL程序结束 PLSQL与SQL执行有什么不同: (1)SQL是单条执行的 (2)PLSQL是整体执行的,不能单条执行,整个PLSQL结束用/,其中每条语句结束用...IS SELECT 语句; 使用无参光标cursor,查询所有员工的姓名和工资【如果需要遍历多条记录时,使用光标cursor,无记录找到使用cemp%notfound】 declare -...findEmpNameAndSalAndJob(编号),查询7788号员工的的姓名,职位,月薪,返回多个值,演示out的用法 创建过程:在过程中的参数,默认值是IN,如果是输出的话,那么我们要指定为OUT...income := findEmpIncome(7369); dbms_output.put_line(income); END;/ 如果写的是=号,那么就会出现以下的错误: [2017-07

    2.4K70

    PLSQL Developer几个可能的隐患

    但是在PLSQL Developer中,是可以设置DML语句自动提交的,在"Tools-Preferences-SQL Windows",有个AutoCommit SQL,默认是空,如果勾选,则执行的DML...如果设置了AutoCommit,相当于直接提交,此时要回滚,就得手工执行该操作的逆向操作,并不是所有场景都可以很快执行的。...黑客在PLSQL Developer的AfterConnect.sql文件中加入了勒索代码,然而此文件在官方的软件中为空文件,该勒索病毒就是利用了这个文件注入病毒代 码,在用户连接数据库后立即执行,并在告警日志出现自动任务执行错误...借助PLSQL Developer的AfterConnect.sql脚本,在Oracle中执行了一些特定的JOB、存储过程和触发器,实现勒索机制。...3.删除sys.tab$,执行提交。 4.执行检查点事件,强制将脏块,写入数据文件。 5.

    2.1K10

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券