如何在JDBC中执行没有参数的存储过程?

时间:2014-03-14 12:01:01

标签: java servlets jdbc

我试图在没有输入变量的情况下执行存储过程,如:

 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

4 个答案:

答案 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();