Есть такая процедура на постгресе. При железном запуске с самого Постгреса она пашет...
| Код | CREATE OR REPLACE FUNCTION "public"."updatezayavki" (c_dat text, c_kpot text, p_kol double precision, p_name text, p_user text, p_sum double precision, c_data timestamp) RETURNS integer AS $body$ DECLARE c_dat_ ALIAS FOR $1; c_kpot_ ALIAS FOR $2; p_kol_ ALIAS FOR $3; p_name_ ALIAS FOR $4; p_user_ ALIAS FOR $5; p_sum_ ALIAS FOR $6; c_data_ ALIAS FOR $7; p_count int4; BEGIN SELECT count(*) INTO p_count FROM zaiavki WHERE dat=$1 AND kpot=$2 AND kolvo=$3 AND nzprn=TRIM($4); /* SELECT count(*) INTO p_count FROM zaiavki WHERE dat=$1 AND kpot=$2 AND nzprn=TRIM($4);*/ IF NOT FOUND THEN INSERT INTO zaiavki (dat, kpot, kolvo,kolzai,date_in,date_out, nzprn, kodopera,sumkolvo) VALUES ($1, $2, $3,$3,$7,CURRENT_TIMESTAMP,$4, $5, $6); ELSE UPDATE zaiavki SET kolvo = $3, kodopera = $5,date_in=$7,date_out=CURRENT_TIMESTAMP, sumkolvo=$6 WHERE dat=$1 AND kpot=$2 and nzprn=$4; END IF; return 1; END; $body$ LANGUAGE 'plpgsql' VOLATILE RETURNS NULL ON NULL INPUT SECURITY INVOKER;
|
Но через java обращение - нет. Вот код обращения.
| Код | public static Connection getInsertConnection() throws Exception { String driver = "org.postgresql.Driver"; String DBNAME = "sbit"; String USERNAME = "postgres1"; String PASSWORD = "syrus"; Connection conn = null; if(conn==null){ Class.forName(driver); conn = DriverManager.getConnection("jdbc:postgresql://192.168.4.3:5432/"+DBNAME,USERNAME,PASSWORD); } return conn; }
//-------------------------------------------------------------------------------------------- public void setValueAt(Object value, int row, int column) { try { if(value.equals("")==false){ Connection connzay = getInsertConnection(); connzay.setAutoCommit(false); String date =ZaiavkaProductii.dat; String kpot =ZaiavkaProductii.kpot; String kodopera =Zaiavki.codeUser; Double cen=Double.parseDouble(ZaiavkaProductii.cena); Double suma=cen*Double.parseDouble(dbRepresentationUp(column, value).toString().trim()); connzay.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); PreparedStatement proc1 =connzay.prepareCall("{ call updatezayavki(?::text, ?::text, ?::real, ?::text, ?::text,?::real,?::timestamp) }"); // PreparedStatement proc1 =connzay.prepareCall("{ call updatezayavki1(?::text, ?::text, ?::real, ?::text, ?::text) }"); proc1.setString(1, date); proc1.setString(2, kpot); proc1.setDouble(3, Double.parseDouble(dbRepresentationUp(column, value).toString().trim())); Vector row1 = (Vector)rows.elementAt(row); proc1.setString(4,dbRepresentationUp(column-2, row1.elementAt(column-2)).toString().trim()); proc1.setString(5, kodopera); proc1.setDouble(6, suma); java.sql.Timestamp expiration = new java.sql.Timestamp(new java.util.Date().getTime()); proc1.setTimestamp(7,expiration); proc1.executeUpdate(); // System.out.println(" proc1.execute()="+ proc1.execute());
System.out.println(" date="+ date); System.out.println(" kpot="+ kpot); System.out.println(" kolvo="+ Double.parseDouble(dbRepresentationUp(column, value).toString().trim())); System.out.println(" nzprn="+ dbRepresentationUp(column-2, row1.elementAt(column-2)).toString().trim()); System.out.println(" kodopera="+ kodopera); System.out.println("time="+ expiration); System.out.println(" suma="+suma); // System.out.println(" proc1.executeUpdate()="+ proc1.executeUpdate()); Object val; val = tbRepresentation(column,value); Vector dataRow = (Vector)rows.elementAt(row); dataRow.setElementAt(val, column); fireTableDataChanged(); proc1.close(); connzay.commit(); connzay.close(); // conn.close(); } } catch (Exception ex) { /* try { con.commit(); con.close(); // statement.close(); } catch (SQLException e1) { // TODO Автоматически созданный блок catch e1.printStackTrace(); } */ ex.printStackTrace(); System.err.println(ex); } }
|
Добавлено через 3 минуты и 8 секунд
| Код | System.out.println(proc1.executeUpdate());
|
Даете 0. |