ORACLE 存储过程

        oracle开发以及面试,基本上存储过程是必须被命中的。因此可以发现存储过程是多么广泛和有用。

        基本语法:

       CREATE OR REPLACE PROCEDURE PROCEDURENAME[(PARAM1 IN TYPE,PARAM2 OUT TYPE,PARAM3 IN OUT TYPE)] IS

         /*在此进行变量声明*/
       BEGIN
        /*此处为执行部分*/
       EXCEPTION
         /*此处为异常处理部分*/
       END [PROCEDURENAME];
      此处要有几点说明:
     存储过程是可以带参数的,参数的类型有IN,OUT或者IN OUT
     IN:表示是输入参数,在整个存储过程中,不可以为in的参数赋值。
     OUT:表示是输出参数,可以给他赋值。
     IN OUT:表示既是输入也是输出,可以赋值。
     参数的TYPE不可以指定具体范围,如varchar2(30),只可以写varchar2,oracle认为形参是有实参传递的,如果设置了形参的范围,其实是


限定了实参的范围,这个再实际开发中,在不知道实际参数的情况下,就来限定它,肯定是不好的。
变量部分的声明:既包括基本变量,也包括数组,游标,异常的变量,不需要DECLARE关键字。
存储过程的调用;可以直接在PL/SQL中调用。注意,如果存储过程带参数的话,请注意参数的一致性对应的问题。ORACLE一般提供两种方法对


应,一种就是常用的位置法。如pro(p1 in int,p2 in varchar2),则调用的时候,pro(2,'scott');另一种就是带名法,这样就写成pro


(p1=>2,p2=>'scott');
调用的时候,还有一个问题需要注意:形如pro(p1 in int,p2 out int,p3 in out varchar2),则你在调用的时候,如果直接写成
pro(2,2,'scott'),即用数字代替变量,就会报错。应该在PL/SQL中用赋值的变量表示。
DECLARE
P2 INT :=2;
P3 VARCHAR2(30):='SCOTT';
BEGIN
PRO(2,P2,P3);
END;
存储过程是创建后,编译放在内部数据字典中的,算是 一次编译,到处运行吧。但是不是存储过程越多越好,因为存储过程是在服务器上运


行的,减少客户端压力,如果太多的存储过程,就会导致服务器负担加重(copy来的,这里有个问题,既然存储过程是编译一次就行,那么每


次在服务器端调用它的时候,都不需要编译,为什么会加重服务器负担呢?是不是调用本身,就占用进程和时间)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值