2015-10-08 5 views
0

Я пытаюсь вызвать хранимую процедуру. Хранимая процедура подтверждается испытаниями в базе данных и выполняютсявызов хранимой процедуры из PostgreSQL

CREATE OR REPLACE FUNCTION statapi.pui_src_ter(p_src_ter_id id_t, p_aname name_t, p_adesc desc_t, p_sortord sortord_t) 
    RETURNS integer AS 
$BODY$ 
DECLARE 
    afected_rows integer := 0; 
BEGIN 
update statdwh.src_ter 
    set aname = p_aname, 
    adesc = p_adesc, 
    sortord = p_sortord, 
    actdt = current_timestamp 
where src_ter_id = p_src_ter_id; 
get diagnostics afected_rows = row_count; 
if (afected_rows = 0) then 
    insert into statdwh.src_ter(src_ter_id, aname, adesc, sortord, actdt) 
     values (p_src_ter_id, p_aname, p_adesc, p_sortord, current_timestamp) 
     returning src_ter_id into p_src_ter_id; 
    get diagnostics afected_rows = row_count; 
end if; 

return afected_rows; 
END; 
$BODY$ 
    LANGUAGE plpgsql VOLATILE 
    COST 100; 
ALTER FUNCTION statapi.pui_src_ter(id_t, name_t, desc_t, sortord_t) 
    OWNER TO postgres; 

сам вызов

public void storedProcedureCall() throws ClassNotFoundException, SQLException { 
    CallableStatement cst = connection.prepareCall("{call statapi.pui_src_ter(?,?,?,?)}"); 
    cst.setInt(1, 11); 
    cst.setString(2, "aname_att"); 
    cst.setString(3, "adesc_att"); 
    cst.setInt(4, 222); 
    ResultSet result3 = cst.executeQuery(); 
    while (result3.next()){ 
     System.out.println(result3.getString(1)); 
    } 
    cst.execute(); 
} 

возвращает «1», как и ожидалось, так как модифицированная одна запись, но в базе данных (просматриваю pgAdmin) запись не отображается Что я делаю неправильно?

+0

Вы совершили сделку? –

ответ

0

Старший помощник ответил просто «add connection.commit();»

Смежные вопросы