似乎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。谁能告诉我们如何实现这一目标..
答案 0 :(得分:0)
您误解了CallableStatement允许您执行的操作。
它旨在调用现有的存储过程,而不是允许您执行PL / SQL代码的ad-hoc块
将PL / SQL定义为数据库中的存储过程,然后使用CallableStatement执行该存储过程(可选地传入您需要的任何参数)。
检查CallableStatement的javadoc,了解有关该调用的确切语法要求的详细信息。