[英]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.