![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 15.03.2013 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam problem. Wszystko sprawdziłem 10 razy, wszystko pwoinno działać, a nie działa. Mam funkcję:
parametry wejściowe to: a_gdzie - w jakim mieście a_kto - u kogo a_co - jaki towar a_ile - ile towaru a_T - parametr T towaru chodzi o to, że jeżeli za a_T dam NULL, funkcja ma usuwać towary z parametrem T do czasu, aż usunie ich a_ile. dla przykładowej tabeli:
Czyli produkt co=1 w mieście 12 u usera 13 ma łącznie 40 sztuk (10 o T=1, 10 o T=2 itd.) Moja funkcja zwraca ile towaru udało się usunąć. powinna zwracać następujące wartości: select towar_desc(12,13,1,5, NULL) -- wynik: 5 select towar_desc(12,13,1,15, NULL) -- wynik: 15 select towar_desc(12,13,1,35, NULL) -- wynik: 35 i tak jest w istocie. jeżeli natomiast napisze select towar_desc(12,13,1,100, NULL) zwraca wartość 100, a powinna 40 (bo usunięto tylko 40 sztuk) nie wiem czemu. i teraz najciekawsze: w miejscu w kodzie oznaczonym "A" napisałem return deleted; wywołując (za każdym razem na nowo definiuję tabele miasto_towar) select towar_desc(12,13,1,100, NULL) otrzymałem 100 (powinno być 40). następnie w miejscu "A" napisałem return a_ile; wywołując select towar_desc(12,13,1,100, NULL) otrzymałem 100 (powinno być 90). następnie w miejscu "A" napisałem return ile_bylo; wywołując select towar_desc(12,13,1,100, NULL) otrzymałem 10 (powinno być 10, czyli się zgadza). Czyli nie działa mi fragment set deleted = deleted + ile_bylo; set a_ile = a_ile - ile_bylo; nie rozumiem dlaczego! Proszę o pomoc. nie wiem, czy kogoś to jeszcze obchodzi, ale znalazłem błąd ![]() otóż polecenie
działa tylko wtedy, jeżeli wynikiem nie jest NULL tz. mam np. ile_bylo = 5 jeżeli wykonam to polecenie dla warunków, które jako rezultat dają zbiór pusty, to zamiast ile_bylo = NULL otrzymuję dalej ile_bylo = 5 - po prostu wtedy sql nie modyfikuje zmiennej!!!! Bez sensu sprawa... piszę, bo może komuś się ta wiedza przyda ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 10:30 |