Postgresql过程没有从JDBC调用

时间:2013-10-16 10:27:46

标签: java postgresql jdbc postgresql-9.1

我正在使用postgresql程序并尝试从我的JDBC程序中调用一个过程。但是,虽然我交叉检查并验证过程名称是否正确,但是获取运行时异常说过程不存在。 这就是我正在做的事情

 CallableStatement   cs = connection.prepareCall("{call proc1()}");
 cs.executeUpdate();

这是我的proc1程序

   create or replace procedure proc1()
as

begin

insert into employee_info values(1,'johnny','1111',43);
-----

end

这就是输出

   Connection Failed! ERROR: function proc1() does not exist
  Hint: No function matches the given name and argument types. You might need to add explicit type casts.

我不明白为什么它的工作不正确,而proc1()存在于数据库中。 我该怎么做?

2 个答案:

答案 0 :(得分:2)

为可调用语句添加正确的模式名称,它应该可以工作。例如,请参考下面的代码。

CallableStatement   cs = connection.prepareCall("{call yoursSchema.proc1()}");

答案 1 :(得分:0)

最后,我得到了解决方案。主要问题是我从官方website下载的JDBC驱动程序。我正在使用 postgresql驱动程序。我不知道它有什么问题,但似乎它不支持proedures。所以我切换到EnterpriseDB(EDB)驱动程序。现在相同的程序工作正常,程序正在执行。

我刚做了这些改动 1)改变司机 2)将驱动程序类网址从"org.postgresql.Driver"更改为"com.edb.Driver" 3)Dabase网址"jdbc:postgresql://host:port/db"jdbc:edb://host:port/db"

这就是全部。现在程序也有效。