oracle 存储过程 基本介绍

存储过程-

   |-概念:存储过程是一组预编译的SQL语句,便于下次调用,提高了开发效率,减轻了数据库压力。

   |-优点:

        |-1模块化程序设计,只需要创建一次存储过程,下次可以任意使用此过程(重用性高);

        |-2执行效率更快,相比于大量的SLQ语句或重复执行的SQL,存储过程执行速度更快;

        |-3减少网络传输量,几百行的SQL,只需几条的存储过程即可完成;

        |-4安全机制好,对于没有执行权限的用户,也可以授权其执行;

    |-使用介绍:

        |-基本语法

               |-createor replace procedure 存储过程名(param1 IN/OUT TYPE,param2 IN/OUT TYPE...)

                as

                                     --变量定义

                Variable1 number(23);

                Variable2 varchar2(100);

                ...

               begin

                                     select* from into param(OUT) emp where ename=param(in);

                                DBMS_OUTPUT.PUT_LINE();--控制台打印 调试用

                                       --变量和字符串用 || 隔开

                                end;

--创建procedure 完成;

 

EXECUTE 存储过程名(param(IN)...); --执行

第一次使用DBMS_OUTPUT.PUT_LINE()时可能会有问题,

请使用  SET SERVEROUTPUT ON; 命令来打开此内置对象;

               

参考见下:

--存储过程-fuck

create or replace procedure fuck(idd innumber default 7)

as

itid number(38);

itexpire varchar2(100);

begin

select accountid,expire into itid,itexpirefrom weibo_account where accountid=idd;

DBMS_OUTPUT.PUT_LINE('id is='||itid||'itexpire is='||itexpire);

end;

 

--执行

--一个in类型 参数

exec fuck(7);

 

----------------------------------------------------------------------------------------

--存储过程-fuck2

create or replace PROCEDURE fuck2(get outnumber)

as

begin

select count(*) into get fromWEIBO_ACCOUNT;

end;

 

--执行

--传递getnumber给存储过程,此参数是out类型,接受存储过程的返回值;参考存储过程--fuck2

declare

getnumber number(10);

begin

fuck2(getnumber);

DBMS_OUTPUT.put_line('count='||getnumber);

end;

----------------------------------------------------------------------------------------

--存储过程-phonetest

create or replace PROCEDURE phonetest(phonein out varchar2)

as

begin

phone:='010-'||phone;

end;

 

--执行

--phone 既是in类型 ,又是out类型,传入phone,又接收回值;参考存储过程-phonetest

declare

phone varchar2(20);

begin

phone:='6855102';

phonetest(phone);

DBMS_OUTPUT.PUT_line('new phone='||phone);

end;

---------------------------------------------------------------------------------------- 

 

附其他sql命令: (详细参考 见

http://wenku.baidu.com/link?url=fx0qDy1_RXl2KOmwqvIHFQfmavxxnr-Vd1Ed76osUPfnbwF2hnwudJ5dbj8b5hdLSJh3JDNzLxvWGg6RaIy6reArxMQQDus1fHifjMiX2Xu)

 

|-删除存储过程:drop procedure存储过程名;

|--查看所有存储过程与函数

    exec sp_stored_procedures

    或者

    select * from dbo.sysobjects where OBJECTPROPERTY(id, N'IsProcedure') =1 order by name

       

|-查看存储过程的内容   

  select text from syscomments where id=object_id('存储过程名称')

   --或者用

   sp_helptext 存储过程名称

 

|-查看存储过程的参数情况

  select '参数名称' = name,

        '类型' = type_name(xusertype),

        '长度' = length,   

        '参数顺序' = colid,

        '排序方式' = collation

  from    syscolumns

  where   id=object_id('存储过程名称')

 

|-查看所有存储过程内容

  select   b.name   ,a.text  from   syscomments   a,sysobjects   b  where  object_id(b.name)=a.id   and   b.xtype  in('P','TR');

 

 

 

参考文献-1

http://zhidao.baidu.com/link?url=JLwGIBQRr_JQ8YtGvvL6JvdHrfLW_kphnD3TYIfeI9_3gKmoOKFK47N07Zo7XTN3yNosnjHTmFzdhS9HaY1ohq

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值