proc存储过程及函数

 首先来看看存储过程的定义    使用关键字  procedure
      create    or    replace    procedure   myproc(    --可以有参数   
                                          id    out    number,                                              参数可以是in 传入类型   out 传出类型  
                                          name  in   varchar2:='world',                                            包含in 类型   可以设定默认值
                                          name2   in   out    varchar2  default  'hello')          in  out  即可用于传入  也可以传出值
     is
           声明区
           v_id   number:=2;
           v_name    varchar2(10)  default  'world';
           v_name2  varchar2(20);
     begin
            执行体....
            如果去调用其它存储过程可以使用 call 或  exec  
            call    myproc(参数1,参数2,.......);
            也可以指定传参
            exec   myproc( id=>v_id, name2=>v_name2,  name=>v_name);     正如所看到的 指定传参  位置可以任意
     end; 
小知识: 在执行存储过程或创建时  如果出现错误可以使用命令  show error 或 show  errors
                如果存储过程己经创建成功   可以使用     desc    存储过程名     查看存储过程的详细参数信息

函数:
       关键字使用  function  函数有返回值  执行块中必须返回  必须处理函数的返回值不可忽略
      声明:
           function   myfunc( id  in  number:=1,  name in varchar2  default  'hello' )
                return       number;
           is
           begin
                    函数执行体.............
                return    100;     必须有返回
           end   myfunc;
调用和存储过程相同     创建了函数或存储过程后如果想删除可以使用
       drop    procedure     存储过程名;
       drop    function         函数名;
如果想查看创建好的存储过程或函数可以使用
     select   object_name,status  from   user_objects    where   object_name='MYPROC';   注意系统表中均为大写
想查看存储过程或函数原代码可以使用
     select   text    from   user_source     where   name='MYPROC';    


触发器:
       触发器  每张表 最多建立12个触发器   
       关键字:  trigger    
       create   or    replace    trigger    mytrigger
       before/after      insert/select/delete/update  or  insert/select/delete/update   on   tablename    在指定表的指定操作执行前或后 调用
       for   each    row               加了这一句   这个触发器便会在对表中每一条数据进行指定操作时调用         行级触发器
                                              如果没有这句   这个触发器便中会在对表进行指定操作时调用                       语句级触发器
       begin
            执行语句....
       end   mytrigger;

如果想在语句块中执行DDL 可以使用   execute   immediate   'SQL语句' 或 字符串变量
如果执行的不是DDL                      execute   immediate   'select * from s_emp where'   into   v_result;可以将数据存入变量

v_id number:=2;
execute   immediate    'select * from s_emp   where  id=:n'   using   v_id;    可以将SQL中:n占位符替换 可以使用多个  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值