存储过程---初级教程

来源:互联网 发布:飘哪个译本好 知乎 编辑:程序博客网 时间:2024/06/05 06:04

一 创建存储过程

CREATE OR REPLACE PROCEDURE cuiyaonan2000(存储过程名)(    参数1  IN  NUMBER,    参数2  IN  NUMBER,    参数3  OUT  Number  //如上是in表示你传递给存储过程的参数,out表示存储过程返回给你的参数.可以有多个.不同于下面的变量) IS/AS  //这里用IS 还是用AS 随个人习惯,没有什么区别变量1 INTEGER :=0;变量2 DATE; //如上这些是变量是存储过程的内部变量,相当于在方法内申请的局部变量.当然有全局变量,在此不做介绍.作用就是在下面的语句块中使用,和方法内部变量一致.变量可以有多个.BEGIN这里是一些用if,while,for等流程语句控制的多个sql;END cuiyaonan2000 //结束标志


用例环境oracle数据库 PL/SQL Developer

create or replace procedure cuiyaonan2000(a in number,b out number)ISfirst1 char;second2 number(1); third3 number := 123;begin NULL;  EXCEPTION WHEN NO_DATA_FOUND THEN dbms_output.put_line('数据未找到错误');when others then dbms_output.put_line('未知错误'); END;end cuiyaonan2000;//如上 := 是给变量赋值的 传统意义上的 等号 //如上 := 是给变量赋值的 传统意义上的 等号//如上exception when 就是 拦截异常 跟Try catch 一样//No_data_found 是异常名 others指所有异常// dbms_output.put_line 是数据库方法 如同system.out.println


 

二.    流程控制语句

        IF流程语句:

      create or replace procedure cuiyaonan2000(a in number,b out number)IS      first1 char;      second2 number(1);      third3 number := 123;    begin      if a > 0 then        begin           dbms_output.put_line(a);          b:= 123;           dbms_output.put_line(a);          end;       end if;       if third3 > 0 then         begin           dbms_output.put_line(third3);           third3 := third3 +1;           dbms_output.put_line(third3);           end;           end if;exception             WHEN NO_DATA_FOUND THEN     dbms_output.put_line('数据未找到错误');when others then      dbms_output.put_line('未知错误');     end cuiyaonan2000;     //如上的传入参数a 不能再赋值,否则报错     //如上 := 是给变量赋值的 传统意义上的 等号   //b 用来接收 cuiyaonan2000存储过程返回的结果.少参数调用报错



      FOR流程语句

create or replace procedure cuiyaonan2000(a in number,b out number)IS       Cursor cursor is select name from test_table_user;    beginFOR temp IN cursor LOOP    dbms_output.put_line(temp.name);END LOOP;exception  WHEN NO_DATA_FOUND THEN     dbms_output.put_line('数据未找到错误');  when others then      dbms_output.put_line('未知错误');     end cuiyaonan2000;     //如上 cursor 是游标 跟jdbc的游标差不多 指向一条记录.然后用循环来遍历所有查到的记录.这里for temp in 后必须是记录集合     


    WHILE流程语句

create or replace procedure cuiyaonan2000(a in number,b out number)IS         c number :=1;       begin               while c < 10 LOOP             begin                  c:= c + 1;             dbms_output.put_line(c);            end;           end LOOP;          exception           WHEN NO_DATA_FOUND THEN               dbms_output.put_line('数据未找到错误');         WHEN others then                dbms_output.put_line('未知错误');     end cuiyaonan2000;          


 

这是些简单的用例,建议大家看完这些后再去研究下游标.如何调用存储过程可以在 plsql的sql命令中输入如下的代码

   //这里是 plsql sql窗口的测试写法   //i 用来接收 cuiyaonan2000存储过程返回的结果.少参数也报错declare   i integer;begin  cuiyaonan2000(1,i);end;   


 

 

 

 

 

 

 

 

 

 

 

原创粉丝点击