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

来源:互联网 发布:oracle数据库rowid 编辑:程序博客网 时间:2024/05/21 10:35

一.什么是存储过程?使用存储过程有什么优点(相对于普通的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,输入存储过程名称,查到对应存储过程。



第二步:

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


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

A;开启DEBUG,快捷键F9。


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


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


第四步:调试

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



光标到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


输入参数:


开始调试:




参数输入:



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



原创粉丝点击