我正在使用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()存在于数据库中。 我该怎么做?
答案 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"
这就是全部。现在程序也有效。