Używam procedury przechowywanej w MySQL, z instrukcją CASE.Jak wybrać pusty zestaw wyników?
W klauzuli ELSE CASE (odpowiednik domyślnie:) Chcę wybrać i zwrócić pusty zestaw wyników, unikając w ten sposób zgłaszania błędu SQL, nie obsługując przypadku ELSE, i zamiast tego zwracać pusty zestaw wyników jako jeśli zwykłe zapytanie nie zwróciło żadnych wierszy.
Do tej pory udało mi się to zrobić za pomocą czegoś takiego:
Select NULL From users Where False
Ale muszę wymienić istniejącą tabelę, jak „użytkowników” w tym przykładzie. To działa, ale wolałbym bardziej elegancki sposób, który nie psuje się, jeśli nazwa lub nazwa tabeli zostanie zmieniona lub usunięta.
Próbowałem już Select NULL Where False
, ale to nie działa.
Użycie Select NULL
nie zwraca pustego zestawu, ale jeden wiersz z kolumną o wartości NULL i wartością NULL.
Byłby to dziwny schemat, gdyby nie jeden stół, który można zagwarantować! – onedaywhen
Masz rację. Istnieje wiele tabel, które istnieją, problem polega na tym, że po wybraniu jednej tabeli, jeśli w przyszłości ta tabela zostanie upuszczona lub zmieniona, napisany kod przestanie działać, a ty będziesz łączył dwie części oprogramowania, które nie mają nic ze sobą zrobić, ale jedna zmiana w jednym z nich powoduje, że drugi przestaje działać.To się nazywa sprzężenie, a sprzężenie w oprogramowaniu jest generalnie złym pomysłem. – Petruza
@Petruza: W czasach, w których korzystałem z Access/Jet, mój schemat zawierałby stałą tabelę pomocniczą o nazwie "RowRowTable". – onedaywhen