Oracle --存储过程基本语法

一、存储过程的理解

  1. create or replace procedure 存储过程名

  2. as

  3. begin

  4. null

  5. end

行1:create or replace procedure 是一个SQL语句,通知oracle数据库去创建一个叫做skeleton储存过程,如果存在就覆盖它。

行2:as关键词表明后面将跟随一个pl/sql体。

行3:begin关键词表明pl/sql体的开始。

行4:null 表明pl/sql语句什么事情都不做,这句不能删除,因为pl/sql体中至少需要有一句。

行5:end关键词表明pl/sql体的结束。

二、存储过程创建语法

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

as

变量1 类型(值范围); eg: vs_msg VARCHAR2(20);

变量2 类型(值范围);

begin

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

        if (判断条件) then

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

            dbms_output.put_line('打印信息');

        elseif (判断条件) then

            dbms_output.putline('打印信息');

         else

             raise  异常名 (no_data_found);

         end if;

         exception

              when others then

                   rollback;

end

对如上理解:

  1. 存储过程参数不带取值范围,in表示传入,out表示输出。类型可以使用任意oracle中的合法类型。                                            

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

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

  4. 用select ... into ...给变量赋值

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


三、

create or replace procedure 存储过程名

{

--定义参数

param1 in char(6),

param2 out number,

}

as

--定义变量

param3 varchar2(10);

param4 varchar2(16);

begin

--用输入参数给变量赋值

end


四、oracle存储过程语法

1.判断语句  

if 比较式 then begin end;end if

create or replace procedure test(x in number)

as  //本例子不需要定义变量,所以as后面没有变量

begin 

     if x > 0 then

     begin

          x: = -x;

     end;

     end if;

     if x = 0 then

        begin

        x: = 1;

        end;

     end if;

end test;

2.for循环语句

for ... in ... loop

--执行语句

end loop;

(1)循环遍历游标

create or replace procedure test() //这里没有输入参数

as 

Cursor cursor is select name from student;

name varchar2(16);

begin

    for name in cursor loop

         begin

            dbms_output.putline(name); //输出表student中字段为name的所有的数据

         end;

     end loop;

end test;

(2)while循环

while 条件语句 loop

begin

end;

endloop;

//举个例子

create or replace procedure test(i in number)

as

begin

while i < 10 loop

    begin

        i:=i+1;

    end;

    end loop;

end test;

3.游标的使用

oracle 中的cursor非常有用,用于遍历临时表中的查询结果。其相关方法和属性很多,下面介绍一-二。

3-1 Cursor型游标 (注意:游标不能用于参数传递)

create or replace procedure test()

as

cursor1 Cursor is select name from studentTable where ...;//游标的使用方式1

cursor2 Cursor; 

begin

select name into cursor2 from studentTable where...;//游标的使用方式2

可以使用 for x in cursor loop ...end loop;来实现对cursor的遍历。

end test;





你可能感兴趣的:(Oracle --存储过程基本语法)