• Oracle存储过程的调用和执行


    1、什么是存储过程:

    用于在数据库中完成特定的操作或者任务。是一个PLSQL程序块,可以永久的保存在数据库中以供其他程序调用。

    2、无参存储过程的使用:

    1.  CREATE  OR  REPLACE  PROCEDURE  过程名  [(parameter,...)]  

    2.  IS  

    3.  定义变量  

    4.  Begin  

    5.  Plsql程序  

    6.  End;  

    1.  例:创建一个存储过程,用于向数据库中插入一条记录。  

    2.  第一步:创建  

    3.  CREATE  OR  REPLACE  PROCEDURE  pro_1  

    4.  IS  

    5.  Begin  

    6.    insert into person values (11,'aa','aav');  

    7.  End;  

    8.    

    9.  第二步:在sql*plus中执行该过程  

    10.exec pro_1;  

    11.  

    12.第三步:通过JDBC使用存储过程。  

    13.    private Connection conn = null;  

    14.    private ResultSet rs = null;  

    15.    private CallableStatement state = null;  

    16.    //调用一个无参数的存储过程  

    17.    public void testPro()  

    18.    {  

    19.        conn = Tools.getConnection();  

    20.        try {  

    21.            state = conn.prepareCall("{call pro_1}");  

    22.            state.execute();  

    23.        } catch (Exception e) {  

    24.            // TODO Auto-generated catch block  

    25.            e.printStackTrace();  

    26.        }  

    27.    }  

    3、带有IN类型参数的存储过程的使用

    1.  例:创建一个存储过程,用于向数据库中插入一条记录。  

    2.  第一步:创建  

    3.  CREATE  OR  REPLACE  PROCEDURE  pro_2(id number,name varchar2,email varchar2)  

    4.  IS  

    5.  Begin  

    6.    insert into person values (id,name,email);  

    7.  End;  

    8.  第二步:在sql*plus中执行该过程  

    9.  exec pro_2(12,'aaa','aaa');  

    10.  

    11.第三步:通过JDBC使用存储过程。  

    12.    //使用一个带有 IN 类型参数的存储过程  

    13.    public void testPro_in(int id,String name,String email)  

    14.    {  

    15.        conn = Tools.getConnection();  

    16.        try {  

    17.            state = conn.prepareCall("{call pro_2(?,?,?)}");  

    18.            state.setLong(1, id);  

    19.            state.setString(2, name);  

    20.            state.setString(3, email);  

    21.            state.execute();  

    22.        } catch (Exception e) {  

    23.            // TODO Auto-generated catch block  

    24.            e.printStackTrace();  

    25.        }  

    26.    }  

    4、带有OUT类型参数的存储过程的使用

    1.  例:创建一个存储过程,用于返回数据库中的Person表的总行数。  

    2.    

    3.  第一步:创建  

    4.  CREATE  OR  REPLACE  PROCEDURE  pro_3(num out number)  

    5.  IS  

    6.  mynum number;  

    7.  Begin  

    8.    select count(*) into mynum from person;  

    9.    num := mynum;  

    10.End;  

    11.或者  

    12.CREATE  OR  REPLACE  PROCEDURE  pro_3(num out number)  

    13.IS  

    14.Begin  

    15.  select count(*) into num from person;  

    16.End;  

    17.  

    18.第二步:在sql*plus中执行该过程  

    19.declare   

    20.a number;  

    21.begin  

    22.  pro_3(a);  

    23.  dbms_output.put_line(a);  

    24.end;  

    25.  

    26.第三步:通过JDBC使用存储过程。  

    27.public void testPro_out()  

    28.    {  

    29.        conn = Tools.getConnection();  

    30.        try {  

    31.            state = conn.prepareCall("{call pro_3(?)}");  

    32.            state.registerOutParameter(1, Types.NUMERIC);  

    33.            state.execute();  

    34.            int num = state.getInt(1);  

    35.            System.out.println(num);  

    36.        } catch (Exception e) {  

    37.            // TODO Auto-generated catch block  

    38.            e.printStackTrace();  

    39.        }  

    40.    }   

    5、带有IN-OUT类型参数的存储过程的使用

    1.  创建:  

    2.  CREATE  OR  REPLACE  PROCEDURE  pro_4(num in out number)  

    3.  IS  

    4.  a number := 100;  

    5.  Begin  

    6.    num := a*num;  

    7.  End;  

    8.    

    9.  sql*plus中执行该过程  

    10.declare  

    11.  a number := 12;  

    12.begin  

    13.  pro_4(a);  

    14.  dbms_output.put_line(a);  

    15.end; 

  • 相关阅读:
    毕业设计:专业填写格式
    关于《毕业设计指导记录》的建议
    毕业设计通知
    毕业设计答辩:幻灯片内容制作要点
    Latex 模版生成会议论文 不显示Keywords,而是显示 Index Terms- ,改成Keywords 方法
    mysql information_schema
    C# odbc
    cwRsync 配置文件详解
    Rsync
    openssl rsa 私钥 PKCS8私钥 公钥
  • 原文地址:https://www.cnblogs.com/ao-xiang/p/6640827.html
Copyright © 2020-2023  润新知