Data too long for column

0

Hej,
tworzę aplikację w javie korzystającą z bazy danych

napisałem dwie prawie identyczne procedury:

   ELSEIF Akcja = 'L_KRZYWYCH_DO_PRZEJSCIOWEJ' THEN
	BEGIN
		SELECT p.Va FROM ble.pomiar p
		GROUP BY p.Va
		HAVING COUNT(p.Va) > 3;
    END;

która zwraca 13 rekordów
oraz:

    ELSEIF Akcja = 'L_KRZYWYCH_DO_ANODOWEJ' THEN
	BEGIN
		SELECT p.Vg FROM ble.pomiar p
		GROUP BY p.Vg
		HAVING COUNT(p.Vg) > 3;
    END;

która zwraca 10 rekordów

Oba zapytania działają wywoływane z poziomu bazy danych.

Jest jednak problem w czasie wywoływania ich z poziomu aplikacji w javie, oto fragment kodu za to odpowiedzialny

MojResultSet mrs = new MojResultSet();
        ResultSet rs = mrs.wybierzProcedure(POLECENIE_LKRZYWYCH, 0, "", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "", null, "", "", 0, 0, 0, 0, 0, 0, 0);
        try{
            while(rs.next()){
                liczba_krzywych++;
            }
            
            rs.close();
            mrs.zamknijCallableStatement();
            mrs.zamknijPolaczenie();
        } catch (SQLException ex) {
            Logger.getLogger(Menu.class.getName()).log(Level.SEVERE, null, ex);
        }
 

W przypadku gdy wywołuje ten kod z procedurą L_KRZYWYCH_DO_ANODOWEJ wszystko jest w porządku. Jednak gdy robię to z procedurą 'L_KRZYWYCH_DO_PRZEJSCIOWEJ' pojawia się bląd: SQLException: Data truncation: Data too long for column 'Akcja' at row 1
SQLState: 22001"

O co chodzi?
Proszę nie zwracać uwagi na sens tego zapytania, bo to jest coś nad czym jeszcze pracuje. Zastanawiam się czemu w przypadku dwóch praktycznie identycznych zapytań działa tylko dla jednego.

0

dorzucę jeszcze zbiory wartości, które są zwracane w rekordach
L_KRZYWYCH_DO_PRZEJSCIOWEJ : -18, -16, -14, -12, -10, -8, -6, -4, -2, 0

L_KRZYWYCH_DO_ANODOWEJ': 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360

0

na pierwszy rzut oka w pierwszym przypadku maż liczby ujemna, może po prostu gdzieś się zapodziało "unsignet" przy deklarowaniu jakiegoś INTa

0

Sprawdziłem, niestety nie o to chodzi...
nie napisałem, ze liniką na której kompilator się zatrzymuje jest while(rs.next()). Czy metoda next() może mieć problem z wartościami ujemnymi?

0

może spróbuj przed pętlą while dać

rs.beforeFirst(); 

albo first(); .... nie powiem bo nie rozumiem Javy ;) i nie wiem w jakiej pozycji kursor jest domyślnie i co się z nim działo wcześniej w kodzie

sprawdziłeś i znaczy że ble.pomiar.Va i ble.pomiar.Vg są dokładnie tego samego typu

PS: może zmień w procedurze

SELECT p.Va FROM ble.pomiar p
na
SELECT p.Va as 'Vg' FROM ble.pomiar p
może gdzieś skrypt oczeguje Vg a dostaje Va i nie wiem co zrobić

1 użytkowników online, w tym zalogowanych: 0, gości: 1