Java代码没有执行。它被卡在CallableStatement cs = con.prepareCall(plsql);

时间:2015-10-28 07:33:43

标签: java oracle jdbc

似乎callable语句未在以下代码中执行。

Connection con = DBConnection.getConnection(schema,uName,pwd);
String plsql =" " +
    "BEGIN " +
    "   for crec in (select distinct filename from flex_template) loop " +
    "   Update vfs3 set created=sysdate where name =crec.filename;" +
    "   Update vfs3_data set data =(select data from vfs3_data@uktest02 where file_id in (select file_id from vfs3@uktest02 where name=crec.filename )) where file_id in (select file_id from vfs3 where name=crec.filename) ;" +
    "   end loop;" +
    "END;" ;                         

CallableStatement cs = con.prepareCall(plsql); 
System.out.println("After plsql prpare call");

cs.execute();         
con.commit();   
System.out.println("File updated successfully");  

cs.close();
con.close();

我想在oracle数据库中运行plsql begin end block。谁能告诉我们如何实现这一目标..

1 个答案:

答案 0 :(得分:0)

您误解了CallableStatement允许您执行的操作。
它旨在调用现有的存储过程,而不是允许您执行PL / SQL代码的ad-hoc块 将PL / SQL定义为数据库中的存储过程,然后使用CallableStatement执行该存储过程(可选地传入您需要的任何参数)。

检查CallableStatement的javadoc,了解有关该调用的确切语法要求的详细信息。