Funkcje matematyczne ogólne w Apache Derby to:

  • ABS, ABSVAL
  • CEIL, CEILING
  • DEGREES
  • EXP
  • FLOOR
  • LN, LOG
  • LOG10
  • MOD
  • PI
  • RADIANS
  • RANDOM
  • RAND
  • SIGN
  • SQRT
    • Są to funkcje skalarne tzn. działające na pojedynczym wyniku (liczbie).
      W przykładach do wszystkich klas użyjemy skryptu SQL mathdata.sql o treści:

      CREATE TABLE mathdata(
                  id INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS 
                          IDENTITY(START WITH 1, INCREMENT BY 1),
                  val DOUBLE
      );
      CREATE INDEX i_val ON mathdata (val ASC);
      INSERT INTO mathdata (id, val) VALUES (DEFAULT, -37.8);
      INSERT INTO mathdata (id, val) VALUES (DEFAULT, 39.7);
      INSERT INTO mathdata (id, val) VALUES (DEFAULT, 36.6);
      INSERT INTO mathdata (id, val) VALUES (DEFAULT, 33.2);
      INSERT INTO mathdata (id, val) VALUES (DEFAULT, 39.2);
      INSERT INTO mathdata (id, val) VALUES (DEFAULT, -40.6);
      INSERT INTO mathdata (id, val) VALUES (DEFAULT, 41.2);
      INSERT INTO mathdata (id, val) VALUES (DEFAULT, 40.1);
      INSERT INTO mathdata (id, val) VALUES (DEFAULT, -39.8);
      INSERT INTO mathdata (id, val) VALUES (DEFAULT, 38.9);
      INSERT INTO mathdata (id, val) VALUES (DEFAULT, 38.3);
      INSERT INTO mathdata (id, val) VALUES (DEFAULT, -37.9);
      INSERT INTO mathdata (id, val) VALUES (DEFAULT, 37.4);
      INSERT INTO mathdata (id, val) VALUES (DEFAULT, 37.1);
      INSERT INTO mathdata (id, val) VALUES (DEFAULT, -36.8);
      INSERT INTO mathdata (id, val) VALUES (DEFAULT, 36.7);
      INSERT INTO mathdata (id, val) VALUES (DEFAULT, 36.6);
      

      Klasa uruchamiająca jest niemal w całości ta sama. Różne są jedynie wywoływane stałe:

       DerbyUtil.startDerbyEngine(DerbyUtil.embdriver);
       Connection con = DerbyUtil.connectEmbeddedDB(baza, ";
           create=true");
       DerbyUtil.jdbcRunScript(skrypt, con);
       Statement stat = null;
       ResultSet rs = null;
       try {
             stat = con.createStatement();
             rs = stat.executeQuery(selectsql);
             while (rs.next()) {
                 System.out.println(rs.getDouble(1) + 
                   "   " + rs.getDouble(2));
             }
       } catch (SQLException e) {
                 e.printStackTrace();
      }
      DerbyUtil.close(stat);
      //zamykamy połączenie
      DerbyUtil.close(con);
      DerbyUtil.close(rs);
      //zatrzymujemy baze danych
      DerbyUtil.shutdownEmbeddedDB(baza);
      //zatrzymujemy silnik Derby
      DerbyUtil.shutdownDerbyEngine();
      //usuwamy bazę danych
      DerbyUtil.dropDatabase(new File(baza));
      

      Linki do ściągnięcia niezbędnych klas znajdą się przy omawianiu poszczególnych funkcji.