0

我正在使用 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() 存在于数据库中。我应该投什么?

4

2 回答 2

2

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

CallableStatement   cs = connection.prepareCall("{call yoursSchema.proc1()}");
于 2013-10-16T10:32:26.940 回答
0

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

我刚刚进行了这些更改 1)更改驱动程序 2)将驱动程序类 url 从更改"org.postgresql.Driver""com.edb.Driver" 3)Dabase url "jdbc:postgresql://host:port/db更改为"jdbc:edb://host:port/db"

就这样。现在程序也有效。

于 2013-10-17T12:44:46.460 回答