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

最後に、私は解決策を得ました。主な問題は、公式Web サイトからダウンロードした JDBC ドライバーにありました。postgresql ドライバーを使用していました。何が悪いのかわかりませんが、手順をサポートしていないようです。そこで、EnterpriseDB(EDB) ドライバーに切り替えました。これで、同じプログラムが正常に動作し、手順が実行されます。

これらの変更を加えました 1) ドライバーの変更 2) ドライバー クラスの URL の変更"org.postgresql.Driver"3 "com.edb.Driver" ) データベースの URL の"jdbc:postgresql://host:port/db変更"jdbc:edb://host:port/db"

それで全部です。これで手順も機能します。

于 2013-10-17T12:44:46.460 に答える