Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MYSQL]Nie działający IF
daniel1302
post 24.06.2012, 16:24:42
Post #1





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Napisałem taką funkcję, któa niezbytnio działa:
  1. DROP FUNCTION IF EXISTS dodaj_ziola;
  2. delimiter $$
  3.  
  4. CREATE FUNCTION `dodaj_ziola`(komu int(11), ile int(11)) RETURNS varchar(255)
  5. BEGIN
  6. DECLARE wynik int(11);
  7. SET wynik = 0;
  8. SELECT count(`id`) INTO wynik FROM `ziola` WHERE `owner`=komu;
  9. IF (wynik > 0) THEN
  10. UPDATE `ziola` SET `ilosc`=`ilosc`+ile WHERE `owner`=komu;
  11. END IF
  12. RETURN wynik;
  13. END$$
  14. delimiter ;


Wyrzuca mi:
  1. #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'return wynik; END' at line 9


A jeśli usune te 3 liniki to wszystko jest OK:
  1. IF (wynik > 0) THEN
  2. UPDATE `ziola` SET `ilosc`=`ilosc`+ile WHERE `owner`=komu;
  3. END IF


Możecie mi powiedzieć dlaczego?

Ten post edytował daniel1302 24.06.2012, 16:26:38
Go to the top of the page
+Quote Post
piotrooo89
post 24.06.2012, 16:30:58
Post #2


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




mam pytanie czy można w MySQL'u zadeklarowac że funkcja zwraca varchar a zwracać int'a?

a co do błędu musi być END IF;


--------------------
Go to the top of the page
+Quote Post
daniel1302
post 24.06.2012, 16:37:36
Post #3





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Działa, dziękuje, tak można wtedy jeśli dam return 'Wynik poprawny'; Zwraca mi taka tabelke
---------------------------------
|dodaj_ziola() |
--------------------------------
|Wynik poprawny |
---------------------------------
Go to the top of the page
+Quote Post
piotrooo89
post 24.06.2012, 16:52:17
Post #4


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




no to nie można bo zwracasz przeciez string'a...


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 04:09