Opis
Liczba o podanej precyzji i skali.
Skala oznacza liczbę cyfr po przecinku dziesiętnym.
Precyzja oznacza łączną liczbę cyfr w liczbie, czyli sumę liczb przed przecinkiem i po przecinku.
Składnia
DECIMAL(precyzja, skala)
albo
DEC(precyzja, skala)
albo
NUMERIC(precyzja, skala)
Ograniczenia
Precyzja może być liczbą z przedziału zamkniętego <1, 31>.
Domyślna skala wynosi 0.
Domyślna precyzja wynosi 5.
Jeśli podana liczba ma zbyt dużo miejsc po przecinku – liczba jest zaokrąglana w dół.
Jeśli podana liczba ma zbyt dużo cyfr przed przecinkiem – wyrzucany jest błąd, gdyż doszło by do utraty wartości.
Odpowiadający typ Java
java.lang.BigDecimal
Odpowiadający typ JDBC
java.sql.Types.DECIMAL
Zakres
Liczby o precyzji większej niż 31 mogą być zapisane tylko jako łańcuch znaków.
Przykład
Przykład w klasie R042.java:

package aderby.sqls;

import aderby.DerbyUtil;

import java.sql.*;

public class R042 {
    private static final String baza = "C:/Przyklady/r042";
    private static final String createTable="CREATE TABLE orbity(\n" +
            "       id INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY(\n" +
            "             START WITH 1, INCREMENT BY 1),\n" +
            "       nazwa VARCHAR(7),    \n" +
            "       a DECIMAL(6,2)\n" +
            ")";
    private static final String skrypt = "src/resources/sqls/r042.sql";
    private static final String a1 = "INSERT INTO orbity VALUES (DEFAULT, 'Merkury', 57.94)";
    private static final String a2 = "INSERT INTO orbity VALUES (DEFAULT, 'Wenus', 108.21)";
    private static final String a3 = "INSERT INTO orbity VALUES (DEFAULT, 'Ziemia', 149.60)";
    private static final String a4 = "INSERT INTO orbity VALUES (DEFAULT, 'Mars', 227.94)";
    private static final String a5 = "INSERT INTO orbity VALUES (DEFAULT, 'Jowisz', 778.41)";
    private static final String a6 = "INSERT INTO orbity VALUES (DEFAULT, 'Saturn', 1426.73)";
    private static final String a7 = "INSERT INTO orbity VALUES (DEFAULT, 'Uran', 2870.97)";
    private static final String a8 = "INSERT INTO orbity VALUES (DEFAULT, 'Neptun', 4498.25)";

    public static void main(String[] args) {
        DerbyUtil.startDerbyEngine(DerbyUtil.embdriver);
        //Utworzenie bazy
        Connection con = DerbyUtil.connectEmbeddedDB(baza, ";create=true");
        //Utworzenie połączenia
        Statement stat = null;
        try {
            stat = con.createStatement();
            //Dodanie poleceń wsadowych
            //Utworzenie tabeli
            stat.addBatch(createTable);
            //Dodanie danych do tabeli
            stat.addBatch(a1);
            stat.addBatch(a2);
            stat.addBatch(a3);
            stat.addBatch(a4);
            stat.addBatch(a5);
            stat.addBatch(a6);
            stat.addBatch(a7);
            stat.addBatch(a8);
            //Wykonanie polecenia wsadowego
            stat.executeBatch();
        } catch (SQLException e1) {
            e1.printStackTrace();
        }
        //DerbyUtil.close(stat);
        //pobranie danych
        //Statement stat1 = null;
        ResultSet rs = null;
        try {
            stat = con.createStatement();
            rs = stat.executeQuery("SELECT * FROM orbity");
            while (rs.next()) {
                System.out.println(
                        rs.getString("nazwa") + " " + rs.getBigDecimal("a"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        DerbyUtil.close(rs);
        DerbyUtil.close(stat);
        DerbyUtil.close(con);
        DerbyUtil.shutdownEmbeddedDB(baza);
        DerbyUtil.shutdownDerbyEngine();
    }
}

Po uruchomieniu klasy we wskazanym folderze pojawia się baza danych, na konsoli otrzymujemy:

Merkury 57.94
Wenus 108.21
Ziemia 149.60
Mars 227.94
Jowisz 778.41
Saturn 1426.73
Uran 2870.97
Neptun 4498.25

Pliki do ściągniecia

Skrypt R042.zip
Aktualny (tworzony narastająco) plik module-info.java
Aktualny (tworzony narastająco) plik DerbyUtil.java
Pliki tworzone narastająco zastępują poprzednie pliki o tej samej nazwie i działają dla wszystkich wcześniej opublikowanych przykładów we wszystkich wpisach w projekcie. W przypadku pliku module-info.java może być potrzebne skreślenie niepotrzebnych wpisów.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *