Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Funkcja nie zwraca tabeli wynikowej jeśli jest więcej niż jeden wiersz
silverwind
post 3.02.2018, 22:17:31
Post #1





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 8.02.2013

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


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;
Go to the top of the page
+Quote Post
sazian
post 4.02.2018, 10:41:20
Post #2





Grupa: Zarejestrowani
Postów: 1 043
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

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


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.
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: 16.04.2024 - 16:46