存储过程

存储过程的学习

 

存储过程创建语法:

       create or replace procedure 存储过程名(param1 in type,param2 out type)

as

变量1 类型(值范围);

变量2 类型(值范围);

Begin

    Select count(*) into 变量1 from 表A where列名=param1;

    If (判断条件) then

       Select 列名 into 变量2 from 表A where列名=param1;

       Dbms_output。Put_line(‘打印信息’);

    Elsif (判断条件) then

       Dbms_output。Put_line(‘打印信息’);

    Else

       Raise 异常名(NO_DATA_FOUND);

    End if;

Exception

    When others then

       Rollback;

End;

 

注意事项:

1,  存储过程参数不带取值范围,in表示传入,out表示输出

2,  变量带取值范围,后面接分号

3,  在判断语句前最好先用count(*)函数判断是否存在该条操作记录

4,  用select 。。。into。。。给变量赋值

5,  在代码中抛异常用 raise+异常名

 

环境配置

//创建test表:

create table test

(

id number(10),

name varchar2(100)

)

 

//创建序列

create sequence g_seq

minvalue 1

maxvalue 999999999999

start with 141

increment by 1

cache 20;

 

 

基本例子:

 

1 不带参数

create or replace procedure test_xg_p1

 is

 begin

 dbms_output.put_line('hello world! this is the first procedure');

 insert into test values (g_seq.nextval,'sky');

 commit;

 end;

 

2 带输入输出参数

create or replace procedure test_xg_p2(a in number,x out number)

 is

 begin

 x:=a;

 end test_xg_p2;

 

3 带逻辑判断

create or replace procedure 

  test_xg_p3(

  a in number,

  x out varchar2)

  is

  begin

  if a>= 90 then

     begin

       x:='a';

     end;

   end if;

 

  if a<90 then

   begin

   x:='b';

   end;

   end if;

 

   if a<80 then

   begin

   x:='c';

   end;

   end if;

 

   if a<70 then

   begin

   x:='d';

   end;

   end if;

 

   if a<60 then

   begin

   x:='e';

   end;

   end if;

 

   end test_xg_p3;

 

4 带循环

   create or replace procedure test_xg_p4

   (

    a in number,

    x out varchar

    )

    is

    temper number(6);

    begin

    temper := 0;

    for tempa in 0..a loop

        begin

        temper :=temper + tempa;

        end;

    end loop;

    x:= temper;

    end test_xg_p4;

 

5 带从数据库表中返回值的   

    create or replace procedure test_xg_p5

    (

           x out varchar2

     )

     is

     temper varchar2(1024);

     begin

     temper :='start->';

     select name into temper from test where id = 1;

     x:= temper;

     end test_xg_p5;

 

6 带游标和循环的

     create or replace procedure test_xg_p6

     (

            x out varchar2

      )

      is

      temper varchar2(1024);

      cursor cursor1 is select * from test;

      begin

      temper :='start->';

      for cursor_result in cursor1 loop

      begin

      temper :=temper||cursor_result.name;

      end;

      end loop;

      x:=temper;

      end test_xg_p6;

 

procedure 测试方法:

 

1 command window : sql > exec 存储过程名称带参数

2 command window : sql > begin

                        2 存储过程名称带参数;

                        3 end;

                        4 /

3 右击存储过程 > test

第三种效果最好,可以看到参数、变量、返回值、输出等

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值