老兄,这样的程序能返回很多的结果吗?好象不行吧?
WHILE mycur%FOUND LOOP
FETCH mycur INTO v_id,v_name;
END LOOP;
每运行一次循环,就把以前的给覆盖了。
况且test_proc(
v_id out TEST_TBL.id%TYPE,
v_name in out TEST_TBL.name%TYPE,
v_time out TEST_TBL.day_time%TYPE)
也只能返回一行的参数啊。
近其我也在看这方面的东东,只是还有若干要点没有弄得明白。
WHILE mycur%FOUND LOOP
FETCH mycur INTO v_id,v_name;
END LOOP;
每运行一次循环,就把以前的给覆盖了。
况且test_proc(
v_id out TEST_TBL.id%TYPE,
v_name in out TEST_TBL.name%TYPE,
v_time out TEST_TBL.day_time%TYPE)
也只能返回一行的参数啊。
近其我也在看这方面的东东,只是还有若干要点没有弄得明白。
另,难道存储过程是不能返回多条记录数据的吗?
表结构oqx_tbl(id number,name varchar2,passwd varchar2,day_tiem date)
创建Oracle的package :
CREATE or REPLACE PACKAGE my_package AS
TYPE myrctype IS ref cursor RETURN oqx_tbl%ROWTYPE;
Function selectTableData RETURN myrctype;
END my_package;
CREATE OR REPLACE PACKAGE BODY my_package AS
Function selectTableData RETURN myrctype is rc myrctype;
Begin
OPEN rc for select id,name,passwd,to_char(day_time,'YYYY-MM-DD HH24:MI') from oqx_tbl;
Return rc;
End;
END my_package;/* *演示程序* RefCursorExample.java ****/
import java.sql.*;
import java.io.*;
import oracle.jdbc.driver.*;class RefCursorExample
{
public static void main(String args[]) throws SQLException
{
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection conn =
DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.70:1521:myorc", "username", "password");
CallableStatement call =
conn.prepareCall("{ ? = call my_package.selectTableData }");
call.registerOutParameter(1, OracleTypes.CURSOR);
call.execute();
ResultSet rst = (ResultSet)call.getObject(1);
while(rst.next()){
System.out.println("\n用户ID: "+rst.getInt(1));
System.out.println("用户名: "+rst.getString(2));
System.out.println("注册时间: "+rst.getString(4));
System.out.print("--------------------------");
}
rst.close();
conn.close();
}
}
http://www.csdn.net/expert/topic/330/330015.shtm散分了!