Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: MySQL - Data truncated for column P_RETVAL at Row 1 [VYRIESENE]  (Přečteno 3702 krát)

wam]Spider007

  • Host
Nazdar neviem ci je to bug, alebo len mam nejaku syntakticku chybu, ale pri selecte z jedneho view mi stale pise warning Data truncated for column P_RETVAL at Row 1 a este aj Out of range value adjusted for column P_DATUM at Row 1

to view vyzera asi takto:
Kód: [Vybrat]
CREATE VIEW V_POLOZKY_DUAL
AS
SELECT VP.POLID
,VP.NAKID
,VP.NAZOV_POLOZKY
,VP.CENA_POLOZKY
,VP.POCET_KUSOV
,VP.CENA_POL_CELKOM
,PREPOCET_EURO(VN.DATUM, VP.CENA_POL_CELKOM) AS INFO_CENA
FROM V_POLOZKY VP
LEFT JOIN V_NAKUP VN ON VN.NAKID = VP.NAKID;

je tam pouzita jedna funkcia PREPOCET_EURO
Kód: [Vybrat]
DELIMITER $$

CREATE PREPOCET_EURO(P_DATUM DATE, P_SUMA DECIMAL(18,4))
RETURNS decimal(18,4)
BEGIN
DECLARE P_RETVAL DECIMAL(18,4);
DECLARE P_KURZ DECIMAL(18,4);

SET P_KURZ = 30.1260;

IF (P_DATUM < '2009-01-01') THEN
-- suma je v SKK a teda ju prepocitame na EURO
SET P_RETVAL = (P_SUMA / P_KURZ);
ELSE
-- suma je v EURO a teda ju prepocitame na SKK
SET P_RETVAL = (P_SUMA * P_KURZ);
END IF;

RETURN P_RETVAL;
END$$

DELIMITER ;

select vrati spravne data, ale ten warning ma dost stve
« Poslední změna: 14 Září 2008, 10:28:44 od wam]Spider007 »

Martin Kiklhorn

  • Člen občanského sdružení Ubuntu ČR a placené komunitní podpory
  • Administrátor fóra
  • Závislák
  • ******
  • Příspěvků: 4807
  • グーグル!ご存知ですか?
    • HEJ
Re: MySQL - Data truncated for column P_RETVAL at Row 1
« Odpověď #1 kdy: 14 Září 2008, 07:42:58 »
VN.DATUM je date nebo datetime?

co se týká trucated

tohle OK? SET P_RETVAL = (P_SUMA * P_KURZ)

a tohle warning? SET P_RETVAL = (P_SUMA / P_KURZ);

- dosaďte si třeba 30/30.1260 vyjde vám více než čtyři desetinná místa
Jsou ve vašem dotazu OPRAVDU VŠECHNY vám dostupné informace o problému?
Linux user since 2007-10-11, Registered #456007
Virtual
| Distribuce
~/slozka znamená /home/"vase jmeno"/slozka
6521 69DE 0F34 FCBC FB1D  DE76 360E 52B2 F71A B8E8

wam]Spider007

  • Host
Re: MySQL - Data truncated for column P_RETVAL at Row 1
« Odpověď #2 kdy: 14 Září 2008, 10:27:14 »
ano VN.DATUM ja DATE

pomohlo urobit SET P_RETVAL = ROUND ((P_SUMA / P_KURZ), 4);

diky moc K+

aj ked nechapem preco sa to takto sprava, v Oracle aj v MS SQL by to preslo v pohode. Nevadi, zase som mudrejsi :)

 

Provoz zaštiťuje spolek OpenAlt.