Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDBC Oracle Ref游标以显示表的内容_Java_Sql_Oracle_Jdbc_Cursors - Fatal编程技术网

Java JDBC Oracle Ref游标以显示表的内容

Java JDBC Oracle Ref游标以显示表的内容,java,sql,oracle,jdbc,cursors,Java,Sql,Oracle,Jdbc,Cursors,我正在尝试使用jdbc通过java打印employees表的内容。 我用ref cursor创建了以下包和函数 create or replace package packagename as type ref_cursor is ref cursor; end; / create or replace function get_employees return packagename.ref_cursor as employees_cursor packagename.ref_cursor;

我正在尝试使用jdbc通过java打印employees表的内容。 我用ref cursor创建了以下包和函数

create or replace
package packagename as
type ref_cursor is ref cursor;
end;
/

create or replace function get_employees
return packagename.ref_cursor
as employees_cursor packagename.ref_cursor;
begin
open employees_cursor for
select * from employees;
return employees_cursor;
end;
/
我的java代码如下:

import java.sql.*;
import oracle.jdbc.*;
import java.math.*;
import java.io.*;
import java.awt.*;
import oracle.jdbc.pool.OracleDataSource;

public class getemployees {

public static void main (String args []) throws SQLException {
try
{

    //Connecting to Oracle server
    OracleDataSource ds = new oracle.jdbc.pool.OracleDataSource();
    ds.setURL("jdbc:oracle:thin:@castor.cc.fsu.edu:1521:acad111");
    Connection conn = ds.getConnection("xxxxxxxx", "xxxxxxxx");

    //Prepare to call stored procedure:
    CallableStatement cs = conn.prepareCall("begin ? := packagename.get_employees(); end;");

   //register the out parameter (the first parameter)
    cs.registerOutParameter(1, OracleTypes.CURSOR);


    // execute and retrieve the result set
    cs.execute();
    ResultSet rs = (ResultSet)cs.getObject(1);

    // print the results
    while (rs.next()) {
        System.out.println(rs.getString(1) + "\t" +
            rs.getString(2) + "\t" + rs.getString(3));
    }

    //close the result set, statement, and the connection
    cs.close();
    conn.close();
   } 
   catch (SQLException ex) { System.out.println ("\n*** SQLException caught ***\n" + ex.getMessage());}
  catch (Exception e) {System.out.println ("\n*** other Exception caught ***\n");}
  }
}
在compliling上,我没有收到任何错误,但当我运行它时,我得到以下信息:

fsu% javac -cp "ojdbc6.jar" getemployees.java

fsu% java getemployees
Exception in thread "main" java.lang.NoClassDefFoundError:     oracle/jdbc/pool/OracleDataSource
    at getemployees.main(getemployees.java:18)
Caused by: java.lang.ClassNotFoundException: oracle.jdbc.pool.OracleDataSource
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    ... 1 more

我没有任何Java经验,我做错了什么

您的类路径是否包含您尝试使用的JDBC驱动程序?在Linux上:
java-cp ojdbc6.jar:。getemployees
。Java文档中的更多详细信息:(或者如果您正在使用)@a_horse_,其名称现在显示***SQLException已捕获***ORA-06550:第1行第23列:PLS-00302:组件“GET_EMPLOYEES”必须声明为ORA-06550:第1行第7列:PL/SQL:语句ignored@JustinCave我不明白你的意思,请详细说明一下好吗?@a_horse_和_no_名称现在我在包创建代码块中添加了函数声明行,我得到了这个错误------>***SQLException被捕获***ORA-06550:第1行,第14列:PLS-00905:对象MYUSERID.PACKAGENAME无效ORA-06550:第1行,第7列:PL/SQL:语句被忽略