oracle 存储过程-简单列子和如何调试

一.什么是存储过程?使用存储过程有什么优点(相对于普通的SQL语句)?

存储过程:PROCEDURE

我的理解是:存储过程就是一组已经在数据库中编译好并且存储于数据库中的SQL语句集合。

优点:

1.已经在数据库服务器中编译好,不需要再编译,所以执行效率高。而普通的SQL每次执行都要编译之后才执行。

2.可以将复杂的操作结合起来。

举个理解:假设联通每天都会把当天的销售记录同步的某一子系统中。其中包含有很多个INSERT和UPDATE等操作。每天定时执行这个存储过程就可以同步数据了。

3.重复利用率高。

4.安全性强。不存在普通SQL语句的注入问题。(个人理解)

二.如何创建存储过程?(简单的)

创建存储过程的基本语法如下:

CREATE OR REPLACE PROCEDURE PROCEDURE_NAME(要创建的存储过程名称)

(arg1 [mode1] datatype1,arg2 [mode2] datatype2 ....)

IS

BEGIN

....要处理的操作。普通SQL的组装

END;

特别说明:A.arg1,arg2是要定义的参数,mode1和mode2是输入输出类型,IN输出,OUT出参。datatype1,datatype2参数的类型。

B.当不需要参数时,括号这一行可以不需要

下面举几个简单的例子说明:

创建存储过程

A:没有参数的:

CREATE OR REPLACE PROCEDURE proc_test1
IS
BEGIN
  update  tf_r_cardkind set CHECK_TAG='0' where trade_id='2017051237620601';
  commit;
END;

执行:

BEGIN 
proc_test1;
END;

调试:

第一步在ALL OBJECTS 窗口中找到PROCEDURES,输入存储过程名称,查到对应存储过程。

oracle 存储过程-简单列子和如何调试

oracle 存储过程-简单列子和如何调试

第二步:

鼠标光标在对应存储过程上右击选择ADD DEBUG INFORMATION。之后在右击选择TEST。就会看到下图

oracle 存储过程-简单列子和如何调试

我常用的就是A,B,C,D等几个操作。具体功能可以看图标的英文提示。

A;开启DEBUG,快捷键F9。

oracle 存储过程-简单列子和如何调试

第三步:先在存储过程中打个断点。


鼠标放在存储过程上,按ctrl+左键或者选择view,打开存储过程的内容,在上面打个断点。

oracle 存储过程-简单列子和如何调试

第四步:调试

先按A,在按B一步步调试。(看个人习惯)

oracle 存储过程-简单列子和如何调试

oracle 存储过程-简单列子和如何调试oracle 存储过程-简单列子和如何调试

光标到END就表示执行完毕了。

最后直接按A整个执行完毕。


B:有参数的:

CREATE OR REPLACE PROCEDURE proc_in_out_test
(var_cardkind NUMBER,var_cardname OUT VARCHAR2)
IS
BEGIN
  select card_kind_name var_cardname from td_s_cardkind where eparchy_code='0020'
  and card_kind_code=var_cardkind;
EXCEPTION
  WHEN no_data_found THEN

    raise_application_error(-20000, '该卡品不存在');
END; 

执行和调试和上面类似。

我下面主要说怎么调试。

首先还是ADD DEBUG INFORMATION。之后在右击选择TEST

oracle 存储过程-简单列子和如何调试

输入参数:

oracle 存储过程-简单列子和如何调试

开始调试:

oracle 存储过程-简单列子和如何调试

oracle 存储过程-简单列子和如何调试

oracle 存储过程-简单列子和如何调试

参数输入:

oracle 存储过程-简单列子和如何调试


上面个人学习心得。希望对初学有帮助,有不足之处还请大牛指出。