1、建立package:java
create or replace package test1 is procedure my; end;
2、建立package body:sql
create or replace package body test1 is procedure my is begin dbms_output.put_line('test'); end my; end test1;
3、調用 package下的存儲過程:oracle
begin test1.my; end ; 而後就在DBMS輸出中看到 存儲過程已經調用。
在pl/sql develper中 選中 存儲過程,點test ,顯示以下:code
beginget
call test1.my;io
end;class
在java中調用存儲過程:test
import java.sql.CallableStatement; import java.sql.Connection; import java.sql.SQLException; import com.wa.sql.oracle.utils.DBUtils; public class Procedure { public static void main(String[] args) throws SQLException { Connection connection =DBUtils.getConnect(); CallableStatement statement =connection.prepareCall("{call test1.my}"); statement.execute(); DBUtils.closeConnection(connection); } }
2、對有參數的存儲過程的調用:import
--建立存儲過程 create or replace procedure param_pro (age number , outage out number ) is begin outage := age +1000; end param_pro; --sql 中調用 declare str number; begin param_pro(10,str); dbms_output.put_line(str); end;
2、Java中調用:程序
public class Procedure { public static void main(String[] args) throws SQLException { Connection connection =DBUtils.getConnect(); CallableStatement statement =connection.prepareCall("{call param_pro(?,?)}"); // 第一個參數賦值 statement.setInt(1,200); //輸出參數的類型 statement.registerOutParameter(2,java.sql.Types.INTEGER); //執行存儲過程 statement.execute(); //獲取輸出結果 System.out.println(statement.getInt(2)); DBUtils.closeConnection(connection); } }
運行程序後控制檯輸出 :1200 ,程序正常!