1

Temat: Insert w fukcji + JDBC java

Witam,

Mam takie pytanko:
Potrzebuje takiego INSERTa:

INSERT INTO tablica (kol1,kol2,kol3) VALUES (1,2,3)

zamienić na funkcje i uzyc w aplikacji JAVY (JSP 2.0 + JDBC + Glassfish). Napisałem taką:

CREATE OR REPLACE FUNCTION dodajdotablicy (bigint, bigint, bigint)
  RETURNS void AS
$BODY$
INSERT INTO tablica (kol1,kol2,kol3) VALUES ($1,$2,$3)
$BODY$
  LANGUAGE sql VOLATILE SECURITY DEFINER
  COST 100;

Wywołana z pgadmina działa poprawnie, ale jak jest wołana ze środka aplikacji javy jako "CallableStatement":

CallableStatement qstr =connection.prepareCall("{call dodajdotablicy(1,2,3)}");
ResultSet res = qstr.executeQuery();

wywala w logach glassfisha:

"Query failed (no rows affected): |#]"

Podejrzewam, że java spodziewa się jakiegoś "zwracanego wyniku" ale nie bardzo wiem co miałbym zwracać.

Pozdrawiam

Piotr

2

Odp: Insert w fukcji + JDBC java

Nie znam się na javie, ale można dla sprawdzenia zmienić funkcje z void na np; integer i zwrócić po insercie return 1 dla sprawdzenia czy będzie ok.

AdamP.

3

Odp: Insert w fukcji + JDBC java

4

Odp: Insert w fukcji + JDBC java

chyba błąd polega w tym, ze należy użyć metody executeUpdate() a nie executeQuery(). Nie jestem specjalista od Javy ale tak podpowiada help

5

Odp: Insert w fukcji + JDBC java

Już znalazłem. Okazało się, że komunikat nie pochodził z samej javy tylko ze środka aplikacji.... Dziękuję wszystkim za odzew.