Java代码中的调用Oracle过程
我尝试用Java代码调用此过程:Java代码中的调用Oracle过程,java,Java,我尝试用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
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;
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);
}
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;
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(?,)}”)代码>