Как вызвать функцию Oracle от, в спящем режиме с возвращаемым параметром?

Вы изменяете размеры больше, или меньший? Маленьким % или большим фактором как 2x, 3x? Что Вы подразумеваете под качеством для своего приложения? И какой изображения - фотографии, бескомпромиссные рисунки строки, или что? Запись собственного пиксельного кода шлифования низкого уровня или попытки сделать это как можно больше с существующими библиотеками (.net или безотносительно)?

по этой теме существует большая совокупность знаний. Ключевое понятие является интерполяцией.

рекомендации Просмотра:
* http://www.all-in-one.ee/~dersch/interpolator/interpolator.html
* http://www.cambridgeincolour.com/tutorials/image-interpolation.htm
* для C#: https://secure.codeproject.com/KB/GDI-plus/imageprocessing4.aspx? display=PrintAll&fid=3657&df=90&mpp=25&noise=3&sort=Position&view=Quick&fr=26&select=629945 * это является определенным для Java, но могло бы быть образовательным - http://today.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html

17
задан Vlad Mihalcea 5 September 2017 в 08:57
поделиться

3 ответа

Сеанс Hibernate предоставляет метод doWork () , который дает вам прямой доступ к java.sql.Connection . Затем вы можете создать и использовать java.sql.CallableStatement для выполнения вашей функции:

session.doWork(new Work() {
  public void execute(Connection connection) throws SQLException {
    CallableStatement call = connection.prepareCall("{ ? = call MYSCHEMA.MYFUNC(?,?) }");
    call.registerOutParameter( 1, Types.INTEGER ); // or whatever it is
    call.setLong(2, id);
    call.setLong(3, transId);
    call.execute();
    int result = call.getInt(1); // propagate this back to enclosing class
  }
});
33
ответ дан 30 November 2019 в 10:29
поделиться
public static void getThroHibConnTest() throws Exception {
    logger.debug("UsersActiion.getThroHibConnTest() | BEG ");
    Transaction tx = null;
    Connection conn = null;
    CallableStatement cs = null;
    Session session = HibernateUtil.getInstance().getCurrentSession();
    try {
        tx = session.beginTransaction();
        conn = session.connection();

        System.out.println("Connection = "+conn);
        if (cs == null)
        {
            cs = 
                conn.prepareCall("{ ?=call P_TEST.FN_GETSUM(?,?) }");
        }
        cs.clearParameters();
        cs.registerOutParameter(1,OracleTypes.INTEGER);
        cs.setInt(2,1);
        cs.setInt(3,2);
        cs.execute();
        int retInt=cs.getInt(1);
        tx.commit();            
    }catch (Exception ex) {  
        logger.error("UsersActiion.getThroHibConnTest() | ERROR | " , ex);  
        if (tx != null && tx.isActive()) {
            try {
                // Second try catch as the rollback could fail as well
                tx.rollback();
            } catch (HibernateException e1) {
                logger.debug("Error rolling back transaction");
            }
            // throw again the first exception
            throw ex;
        }
    }finally{
        try {
            if (cs != null) {
                cs.close();
                cs = null;
            }
            if(conn!=null)conn.close();

        } catch (Exception ex){;}
    }
    logger.debug("UsersActiion.getThroHibConnTest() | END ");
}
1
ответ дан 30 November 2019 в 10:29
поделиться

Да, вам нужно использовать выходной параметр. Если вы используете метод doWork (), вы должны сделать что-то вроде этого:

session.doWork(new Work() {
   public void execute(Connection conn) {
      CallableStatement stmt = conn.prepareCall("? = call <some function name>(?)");
      stmt.registerOutParameter(1, OracleTypes.INTEGER);
      stmt.setInt(2, <some value>);
      stmt.execute();
      Integer outputValue = stmt.getInt(1);
      // And then you'd do something with this outputValue
   }
});
6
ответ дан 30 November 2019 в 10:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: