我试图在没有输入变量的情况下执行存储过程,如:
String sql2 = "{call vivek}" ;
System.out.println(sql2);
System.out.println("Executing procedure without parameters");
stmt = conn.createStatement();
stmt.executeQuery(sql2);
但它抛出一个错误说:
syntax error at or near "{"
Position: 1
我试图谷歌但却找不到任何东西。我该怎么做 ?顺便说一句,它也没有使用callablestatement
答案 0 :(得分:2)
未经测试:
CallableStatement cs = null;
cs = conn.prepareCall("{call vivek}");
cs.executeQuery();
http://docs.oracle.com/javase/tutorial/jdbc/basics/storedprocedures.html
答案 1 :(得分:1)
无法找到存储过程?----表示你得到这个...我们的代码就像这样
String sp =“{call GetUnitReferenceMap}”;
语句= conn.prepareCall(SP);
ResultSet rs = stmt.executeQuery();
while(rs.next()){
currencyMap.put(rs.getString(1).trim(),rs.getString(2).trim());
我有4个DB(sample1,sample2,sample3)但是“stmt”将搜索位置为“master”默认DB然后我们将获得Exception。
我们应该提供数据库名称然后解决问题::
String sp =“{call sample1..GetUnitReferenceMap}”;
答案 2 :(得分:0)
感谢大家的帮助,但以下代码对我有用:
sql2 += "{exec "+ proc_name2 +"}" ;
cstmt = conn.prepareCall(sql2);
cstmt.executeUpdate();
顺便说一下,cstmt是CallableStatement对象。我正在使用Postgresql数据库,因此上面的代码适用于我
答案 3 :(得分:0)
这类似于调用不带参数的函数。
CallableStatement cat = null;
con = YourConnectionClass.getConnection();
cst = con.prepareCall("{call YOUR_PROCEDURE_NAME()}");
cst.executeQuery();