Java 使用过程从数据库中获取数据

Java 使用过程从数据库中获取数据,java,stored-procedures,plsql,oracle11g,Java,Stored Procedures,Plsql,Oracle11g,我试图通过调用java代码中的过程从oracle数据库读取数据。 如果我从sqldeveloper运行这个过程,我可以看到这个过程给了我正确的输出,但是当我尝试使用java程序运行时,我得到了错误 程序: CREATE OR REPLACE PACKAGE BODY VISIONEMPLOYEES AS PROCEDURE Employees( p_id IN NUMBER, p_ref_cursor OUT sys_refcursor )

我试图通过调用java代码中的过程从oracle数据库读取数据。 如果我从sqldeveloper运行这个过程,我可以看到这个过程给了我正确的输出,但是当我尝试使用java程序运行时,我得到了错误

程序:

CREATE OR REPLACE PACKAGE BODY VISIONEMPLOYEES AS
     PROCEDURE Employees(
        p_id IN NUMBER,
        p_ref_cursor OUT sys_refcursor )
        AS
        BEGIN

       OPEN p_ref_cursor FOR
       SELECT id, name, age FROM emp WHERE id = p_id;

        EXCEPTION
         WHEN OTHERS THEN
          ROLLBACK;
          RAISE;
      END Employees;
    END VISIONEMPLOYEES;
Java代码:

public static void callOracleStoredProcOUTParameter()
  {
    Connection conn = null;
    Statement stmt = null;
    CallableStatement cb = null;
    String qry = "{VISIONEMPLOYEES.Employees(?,?)}";
    try {

                         conn = getDbConnection();  
                         cb = conn.prepareCall(qry);
                         cb.setInt(1, 1);
                         cb.registerOutParameter(2, OracleTypes.CURSOR);
                         cb.executeUpdate();
                        String userName = cb.getString(2);
                        System.out.println("UserName is : " + userName);

                        } catch (Exception e) {
                            System.out.println(e);
                        }
                    }
java.sql.SQLSyntaxErrorException:ORA-00900:无效的sql语句


请告诉我上面写的代码有什么问题。

您的
qry
字符串中缺少
call
关键字

String qry = "{call VISIONEMPLOYEES.Employees(?,?)}";

(请参阅)

您的
qry
字符串中缺少
call
关键字

String qry = "{call VISIONEMPLOYEES.Employees(?,?)}";

(请参见)

向我们展示运行过程所用的代码以及运行代码时所遇到的错误。向我们展示运行过程所用的代码以及运行代码时所遇到的错误。