"Ein Ergebnis zurückgegeben wurde, wenn keines erwartet wurde" Ausnahme auf JDBCTemplate update Ausführung
Ich versuche ausführen-Funktion über postgresql update() Methode, aber es wirft mich eine Ausnahme - "Ein Ergebnis zurückgegeben wurde, wenn keines erwartet wurde".
PostgreSQL-Funktion:
CREATE OR REPLACE FUNCTION create_order(note VARCHAR, created_by BIGINT, service_request BIGINT)
RETURNS TABLE (service_order integer, note varchar)
BEGIN
INSERT INTO service_order
(note, service_request_fk, created_by, so_status_type_fk, price_total, created)
VALUES (note, service_request, created_by, 1, 0, now());
END;
$$ LANGUAGE plpgsql;
SQL, die ich versuche umzusetzen:
String sql = "SELECT create_order(?,?,?)";
Update-Funktion:
int id = jdbc.update(sql, new Object[] {order.getNote(), emp.getEmployeeId(), order.getServiceRequestId()});
Die Funktion muss "VOID" zurückgeben, der nichts bedeutet, aber es scheint mir, dass es den gibt Tabelle ohne Zeilen, die JDBCTemplate überlegen, wie eine Tabelle.
Wie kann ich verhindern, dass ich diese Ausnahme?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie eine select-Anweisung, wenn Sie tatsächlich über eine gespeicherte Prozedur, die Sie verwenden müssen, Nennen.
https://jdbc.postgresql.org/documentation/head/callproc.html
Es ist kein ANRUF 9.6 so funktioniert es nicht.
https://www.postgresql.org/docs/9.6/static/sql-commands.html
Als von PostgreSQL 9, gibt es nicht eine
CALL
Befehl, so dass SieSELECT
statt. Aufrufen einer gespeicherten Prozedur oder Funktion mitSELECT func_name();
zurückRECORD
. Die Rückkehr Spalten oder eineTABLE
müssen Sie ändern die syntax, umSELECT * FROM func_name();