当前位置: 代码迷 >> SQL >> oracle学习札记17-PLSQL4
  详细解决方案

oracle学习札记17-PLSQL4

热度:58   发布时间:2016-05-05 13:46:15.0
oracle学习笔记17--PLSQL4
--定义一个包,包里有一个游标create or replace package testpackage astype test_cursor is ref cursor;end testpackage;--利用游标返回多个值(一个列表)SQL> create or replace procedure getEmpInfoByDeptno(mdeptno in number,m_cursor out testpackage.test_cursor) is  2  begin  3  open m_cursor for select * from emp where deptno=mdeptno;  4  end;  5  /


  可以在Java中调用这个存储过程
package com.morflame;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;public class GetEmpInfo {	public static void main(String[] args) {		try {			Class.forName("oracle.jdbc.driver.OracleDriver");			Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","tiger");			CallableStatement cs=conn.prepareCall("{call getEmpInfoByDeptno(?,?)}");			cs.setInt(1, 10);			cs.registerOutParameter(2, oracle.jdbc.OracleTypes.CURSOR);//^_^			cs.execute();			ResultSet rs=(ResultSet)cs.getObject(2);			while(rs.next()){				System.out.println(rs.getInt(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3));			}			rs.close();			cs.close();			conn.close();		} catch (ClassNotFoundException e) {			e.printStackTrace();		} catch (SQLException e) {			e.printStackTrace();		}	}}

  相关解决方案