存储过程---初级教程


 
一 创建存储过程  www.2cto.com  
Java代码  
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; //如上这些是变量是存储过程的内部变量,相当于在方法内申请的局部变量.当然有全局变量,在此不做介绍.作用就是在下面的语句块中使用,和方法内部变量一致.变量可以有多个.    www.2cto.com  
BEGIN  
这里是一些用if,while,for等流程语句控制的多个sql;  
END cuiyaonan2000 //结束标志  
 
用例环境oracle 数据库 PL/SQL Developer
Java代码  
create or replace procedure cuiyaonan2000(a in number,b out number)IS  
    first1 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  
 
二.    流程控制语句  www.2cto.com  
     IF流程语句:
 
Java代码  
   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;  
xception  
                WHEN NO_DATA_FOUND THEN  
                dbms_output.put_line('数据未找到错误');  
when others then   
                dbms_output.put_line('未知错误');  
    end cuiyaonan2000;  
    //如上的传入参数a 不能再赋值,否则报错  
    //如上 := 是给变量赋值的 传统意义上的 等号  
    //b 用来接收 cuiyaonan2000存储过程返回的结果.少参数调用报错  
         FOR流程语句
Java代码  
create or replace procedure cuiyaonan2000(a in number,b out number)IS  
            Cursor cursor is select name from test_table_user;  
        begin  
        FOR 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 后必须是记录集合    www.2cto.com  
 
   WHILE流程语句
Java代码  
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;  
        www.2cto.com  
这是些简单的用例,建议大家看完这些后再去研究下游标.如何调用存储过程可以在 plsql的sql命令中输入如下的代码
Java代码  
   //这里是 plsql sql窗口的测试写法  
   //i 用来接收 cuiyaonan2000存储过程返回的结果.少参数也报错  
declare   
  i integer;  
begin  
  cuiyaonan2000(1,i);  
end;   
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值