Oracle存儲(chǔ)過(guò)程的調(diào)用 |
發(fā)布時(shí)間: 2012/8/15 17:16:21 |
Oracle 表的語(yǔ)句 create table student(sid int,sname varchar(20),sno int) 一:無(wú)返回值的存儲(chǔ)過(guò)程 create or replace procedure proc_student(para1 Integer, para2 varchar2, para3 Integer) is BEGIN public class TestProcedureOne {
public static void main(String[] args) { ResultSet rs = null; proc = conn.prepareCall("{call system.testc(?,?,?)}");//這里不是PreparedStatement接口,而是調(diào)用存儲(chǔ)過(guò)程的接口 proc.setInt(1, 1); } catch (SQLException ex2) { } catch (Exception ex2) { 二:有返回值的存儲(chǔ)過(guò)程(非列表) create or replace procedure proc_student2(para_1 Integer,para_2 out varchar2, para_3 out Integer) java的主要代碼如下 proc = conn.prepareCall("{call system.proc_student2(?,?,?)}"); proc.setInt(1, 1); 三:返回列表 由于Oracle存儲(chǔ)過(guò)程沒有返回值,它的所有返回值都是通過(guò)out參數(shù)來(lái)替代的,列表同樣也不例外,但由于是集合,所以不能用一般的參數(shù),必須要用pagkage了.所以要分兩部分, 1, 建一個(gè)程序包。如下: create or replace package package_1 as type test_cursor is ref cursor; end package_1; 2,建立存儲(chǔ)過(guò)程,存儲(chǔ)過(guò)程為: create or replace prcedure proc_student3(stu_cursor out package_1.test_cursor) is begin open stu_cursor for select * from system.student end 可以看到,它是把游標(biāo)(可以理解為一個(gè)指針),作為一個(gè)out 參數(shù)來(lái)返回值的。 java的主要代碼如下 proc = conn.prepareCall("{call system.proc_student3(?)}"); 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |