繁体   English   中英

用Java代码调用Oracle过程

[英]Call Oracle procedure in Java code

我试图用Java代码调用此过程:

create or replace procedure statistics_function
    ( namein                        in varchar2
    , lob_out                       out nocopy clob )
is
    cursor last_60_cpu_cursor       is
        select 1 as last_60_cpu, sysdate as last_60_event_date
        from dual
    ;
begin
    dbms_lob.createtemporary(lob_loc => lob_out, cache => true, dur => dbms_lob.session);

    for cv in last_60_cpu_cursor loop
        dbms_lob.append(lob_out, to_char(cv.last_60_event_date)||'i'||to_char(cv.last_60_cpu)||chr(10));
    end loop;

    dbms_lob.append(lob_out, 'last_60_cpu'||chr(10)||chr(10));
end statistics_function;

Java代码:

public static void main(String Args[]) throws SQLException
{
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
    Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@31.187.70.163:1521:xe", "admin", "qwerty");

    CallableStatement cstmt = conn.prepareCall("statistics_function(?, ?); end;");

    cstmt.registerOutParameter(2, Types.VARCHAR);
    cstmt.setString(1, "agent");

    cstmt.execute();
    String result = cstmt.getString(1);
    conn.close();
    System.out.println(result);
}

我收到此错误:

Exception in thread "main" java.sql.SQLSyntaxErrorException: ORA-00900: invalid SQL statement 

您能帮我解决这个问题吗? 我想我在Java代码中有错误吗?

您能为这个问题提出一些解决方案吗?

您的语法错误:请尝试以下操作:

CallableStatement cstmt = conn.prepareCall("{ call statistics_function(?, ?)}");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM