Eclipse SDK 3.2.0 JAVA到Oracle存储过程

Eclipse SDK 3.2.0 JAVA到Oracle存储过程,java,sql,eclipse,oracle,Java,Sql,Eclipse,Oracle,Eclipse SDK 3.2.0 JAVA到Oracle 11g存储过程。 我试图调用存储过程并返回输出 我的代码如下 我收到的错误消息是ORA-00922:缺少或无效选项 Java代码片段: set serveroutput是一个SQLplus语句,它既不是Oracle SQL的一部分,也不是PL/SQL的一部分。因此,它在您使用的环境(Java客户端、OJDBC、Oracle服务器)中不可用 执行、变量、打印的情况也是如此 此外,除非使用BEGIN/END块从SQL切换到PL/SQL,否则

Eclipse SDK 3.2.0 JAVA到Oracle 11g存储过程。 我试图调用存储过程并返回输出

我的代码如下

我收到的错误消息是
ORA-00922:缺少或无效选项

Java代码片段:
set serveroutput
是一个SQLplus语句,它既不是Oracle SQL的一部分,也不是PL/SQL的一部分。因此,它在您使用的环境(Java客户端、OJDBC、Oracle服务器)中不可用

执行
变量
打印
的情况也是如此

此外,除非使用BEGIN/END块从SQL切换到PL/SQL,否则不能同时执行多个语句

更新:

您可能正在寻找这样的代码:

String query = "begin SP_FAM_VOLWEEKLY(CV_1 => ?, p_report_type=> 0, p_type => 2, p_num_week => 5, P_GROUPBY_GROUP => 1, p_groupby_cpty  => 0, p_groupby_desk => 0,  p_groupby_ccy => 1, p_groupby_t_tz => 1, P_GROUPBY_U_LOCALE => 1); end;";

CallableStatement stmt = conn.prepareCall(query);

// register the type of the out param
stmt.registerOutParameter(1, OracleTypes.CURSOR);

stmt.execute();
ResultSet rs = (ResultSet) stmt.getObject(1);


while (rs.next()) {
    System.out.println(rs.getString("CCY"))
}

你认为这段代码应该做什么?这看起来像是通过JDBC执行PL/SQL脚本,最后将something打印到数据库服务器的
STDOUT
。这不是从JDBC调用存储过程/函数的方式。它是从Toad开始工作的,SQL Developer使用“作为脚本执行”选项手动运行SQL Developer实现全套SQLplus命令。Toad在后台使用SQLplus运行它(这是executeasscript选项的目的)。
String query = "begin SP_FAM_VOLWEEKLY(CV_1 => ?, p_report_type=> 0, p_type => 2, p_num_week => 5, P_GROUPBY_GROUP => 1, p_groupby_cpty  => 0, p_groupby_desk => 0,  p_groupby_ccy => 1, p_groupby_t_tz => 1, P_GROUPBY_U_LOCALE => 1); end;";

CallableStatement stmt = conn.prepareCall(query);

// register the type of the out param
stmt.registerOutParameter(1, OracleTypes.CURSOR);

stmt.execute();
ResultSet rs = (ResultSet) stmt.getObject(1);


while (rs.next()) {
    System.out.println(rs.getString("CCY"))
}