Oracle- 存储过程和异常捕捉

  最近工作有点忙,没什么时间在上班时间进修一下,自己晚上有时候去打打球,回家看看电视剧,日子一天天过……。前段时间看到公司有用到ORACLE,而我一直都觉的ORACLE对于我来说是很重的,所以这个周末花了点时间学习一些基础下。

创建无参存储过程

create procedure p_myPro1 is
begin
  insert into dept(deptno,dname,loc) values(60,‘ccx‘,‘321321‘);
end;

修改无参存储过程

create or replace procedure p_myPro1 is
begin
  insert into dept(deptno,dname,loc) values(60,‘ccx‘,‘321321‘);
end;

创建和修改有参存储过程

create or replace procedure p_myPro2(spName varchar2,newSal number) is
begin
    update emp set sal=newSal where ename=spName;
end;

call p_myPro2(‘SCOTT‘,‘1111‘);

查看错误信息
 show error;

调用存储过程
调用存储过程的方式有两种,call,exec

exec是sqlplus的命令,只能在sqlplus中使用。和 set serveroutput on 一起用。call是sql命令,任何工具都可以使用。

例如:call p_myPro1()

Oracle输出语句过程

dbms_output是oracle所提供的包(类似java的开发包),该包包含一些过程,put_line就是dbms_output包的一个过程。

Oracle变量的使用例子 

declare
v_ename varchar2(5);
v_sal number(7,2);
begin
  select ename,sal into v_ename,v_sal from emp where empno=7369;
  dbms_output.put_line(‘姓名‘||v_ename||‘   工资‘||v_sal);
end;

Oracle异常捕捉

declare
v_ename varchar2(5);
v_sal number(7,2);
begin
  select ename,sal into v_ename,v_sal from emp where empno=1111;
  dbms_output.put_line(‘姓名‘||v_ename||‘   工资‘||v_sal);

  exception
  when no_data_found then
    dbms_output.put_line(‘SELECT INTO没有找到数据‘);
  when not_logged_on then
    dbms_output.put_line(‘没有连接到ORACLE‘);

end;

错误号


异常错误信息名称


说明


ORA-0001


Dup_val_on_index


违反了唯一性限制


ORA-0051


Timeout-on-resource


在等待资源时发生超时


ORA-0061


Transaction-backed-out


由于发生死锁事务被撤消


ORA-1001


Invalid-CURSOR


试图使用一个无效的游标


ORA-1012


Not-logged-on


没有连接到ORACLE


ORA-1017


Login-denied


无效的用户名/口令


ORA-1403


No_data_found


SELECT INTO没有找到数据


ORA-1422


Too_many_rows


SELECT INTO 返回多行


ORA-1476


Zero-divide


试图被零除


ORA-1722


Invalid-NUMBER


转换一个数字失败


ORA-6500


Storage-error


内存不够引发的内部错误


ORA-6501


Program-error


内部错误


ORA-6502


Value-error


转换或截断错误


ORA-6504


Rowtype-mismatch


宿主游标变量与 PL/SQL变量有不兼容行类型


ORA-6511


CURSOR-already-OPEN


试图打开一个已处于打开状态的游标


ORA-6530


Access-INTO-null


试图为null 对象的属性赋值


ORA-6531


Collection-is-null


试图将Exists 以外的集合( collection)方法应用于一个null pl/sql 表上或varray上


ORA-6532


Subscript-outside-limit


对嵌套或varray索引得引用超出声明范围以外


ORA-6533


Subscript-beyond-count


对嵌套或varray 索引得引用大于集合中元素的个数.

对这种异常情况的处理,只需在PL/SQL块的异常处理部分,直接引用相应的异常情况名,并对其完成相应的异常错误处理即可。

时间: 2024-11-06 12:42:23

Oracle- 存储过程和异常捕捉的相关文章

Oracle存储过程中异常Exception的捕捉和处理

Oracle存储过程中异常的捕捉和处理 CREATE OR REPLACE Procedure Proc_error_process ( v_IN in Varchar2, v_OUT Out Varchar2) AUTHID CURRENT_USER AS --声明异常 some_kinds_of_err EXCEPTION; -- Exception to indicate an error condition v_ErrorCode NUMBER; -- Variable to hold

Oracle存储过程记录异常

--建立错误日志表 create table PUB_PROC_ERR_LOG ( LOG_ID NUMBER, MODULE_NAME VARCHAR2(100), PROC_NAME VARCHAR2(100), ERR_TIME DATE, SQL_CODE VARCHAR2(50), SQL_ERRM VARCHAR2(100), ERR_CONTENT VARCHAR2(500) ); comment on column PUB_PROC_ERR_LOG.LOG_ID is '主键';

oracle存储过程异常捕获

oracle存储过程异常捕获学习,执行及演示过程: 存储过程: CREATE OR REPLACE PROCEDURE sp_test_2 ( param1 in int, --输入参数 param2 in int, out_return out varchar2 --返回结果 ) is --全局变量 val int; errorException exception; --申明异常 errorCode number; --异常代号 errorMsg varchar2(1000); --异常信息

Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常。

Oracle存储过程可以有无参数存储过程和带参数存储过程. 一.无参程序过程语法 create or replace procedure NoParPro as ; begin ; exception //存储过程异常 ; end;         二.带参存储过程实例 create or replace procedure queryempname(sfindno emp.empno%type) as         sName emp.ename%type;         sjob emp

oracle存储过程创建语法及常见异常

oracle存储过程创建语法及常见异常: oracle存储过程语法: CREATE[ORReplace]PROCEDURE[schema.]procedure_name [(argument[{IN|OUT|INOUT}]datatype, ... argument[{IN|OUT|INOUT}]datatype)] {IS|AS} [descriptionpart说明部分] BEGIN SQLSTATEMENT语句序列 [EXCEPTION例外处理] END[procedureName过程名]

Oracle 存储过程异常处理

Oracle 存储过程异常处理 1.异常的优点    如果没有异常,在程序中,应当检查每个命令的成功还是失败,如  BEGIN  SELECT ...  -- check for ’no data found’ error  SELECT ...  -- check for ’no data found’ error  SELECT ...  -- check for ’no data found’ error  这种实现的方法缺点在于错误处理没有与正常处理分开,可读性差,使用异常,可以方便处理

oracle存储过程实例

oracle存储过程实例 分类: 数据(仓)库及处理 2010-05-03 17:15 1055人阅读 评论(2)收藏 举报 认识存储过程和函数 存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块.但存储过程和函数不同于已经介绍过的PL/SQL程序,我们通常把PL/SQL程序称为无名块,而存储过程和函数是以命名的方式存储于数据库中的.和PL/SQL程序相比,存储过程有非常多长处,详细归纳例如以下: * 存储过程和函数以命名的数据库对象形式存储于数据库其中.存储在数据库中的长处是非

Oracle 存储过程

存储过程:就是一组用于完成特定数据库功能的SQL 语句集,该SQL语句集经过编译后存储在数据库系统中.在使用时候,用户通过指定已经定义的存储过程名字并给出相应的存储过程参数来调用并执行它,从而完成一个或一系列的数据库操作. Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常. 1 create or replace procedure 过程名 2 as ...; --声明语句段 3 begin 4 ...; --执行语句段 5 exception --异常处理语句段 6 ...

【PLSQL】Oracle中的异常

一.摘要 在PLSQL程序开发过程中,很重要的部分就是对程序异常的监控和处理,包括如何触发异常,何时进行处理,如何进行处理,是否将程式中的所有异常集中在一起,通过公共异常处理的procedure或function,如果没有完善的程式处理机制,很难说该程式是一只健壮的程式,当程式遇到很多类型或者量很多资料时,系统若没有异常处理必然会导致程式的出错 当预判到了某些异常,需要对预判到的异常进行合适相应的处理,是否抛出异常还是忽略还是其他 当然程式没有预判到或者是一些未知的异常遇到,所以异常处理模块也要