Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcja nie zwraca tabeli wynikowej jeśli jest więcej niż jeden wiersz
Forum PHP.pl > Forum > Bazy danych > MySQL
silverwind
Jak zmodyfikować tą funkcję by zwracała wszystkie znalezione wiersze. Przy więcej niż jednym rekordzie wyrzuca error subquery returns more then one row.
  1. DROP FUNCTION IF EXISTS findByPesel;
  2.  
  3. delimiter $$
  4.  
  5. CREATE FUNCTION findByPesel(pesel varchar(11) ) returns varchar(255) deterministic
  6.  
  7. begin
  8.  
  9. declare message varchar(255) DEFAULT 'nothing';
  10.  
  11. IF pesel REGEXP '[1-9]' then
  12. RETURN (SELECT peselid FROM readers WHERE peselid LIKE Concat('%',pesel,'%'));
  13. else
  14. SET message ='Not correct pesel. Write a pesel consisting of digits greater than zero';
  15. end IF;
  16. RETURN message;
  17. end $$
  18.  
  19. delimiter ;
  20.  
  21. SELECT findByPesel('7') AS result;
sazian
Mysql nie ma typów tabelarycznych więc funkcja nie może zwracać tabeli.
Da się obejść poprzez procedury ale to "mało eleganckie" rozwiązanie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.