Mam dość sporego selecta, pareset linii, do ogarnięcia, ale chcę sobie ułatwić sprawę - dlatego też mam pytania

1)Czy function może zwrócić rekord - wiem że procedure może i że jest to łatwe do zrobienia, ale z tego co zauważyłem wywołana poprzez SELECT funkcja zachowuje się jak zwyczajny SELECT przez co mozna ją wcisnąć w innego SELECTA jako unię, czy podzapytanie sprawdzające

2)Czy wewnątrz procedury lub funkcji mogę stworzyć zapytanie do bazy jako tekst, a potem je wywołać - np w tym zapytaniu duzym jest warunek (i on sie powtarza) pobierania wartości z określonej kolumny, o czym dcyduje jakiś parametr czyli
  1. CASE tabela
  2. WHEN 1 THEN (SELECT kolumna From tabela1 WHERE warunek)
  3. WHEN 2 THEN (SELECT kolumna From tabela2 WHERE warunek)
  4. WHEN 4 THEN (SELECT kolumna From tabela3 WHERE warunek)
  5. itd
  6. END

i zamiast tego tworzę funkcje, która najpierw na podstawie parametrów tworzy zaptanie jako tekst - a potem jest on wywoływany (coś jak w PHP, gdzie zapytanie jest tekstem, który można dowolnie modelowac, a potem wysłać do bazy)

dzięki temu znacznie uprościła by się sprawa utrzymania zapytania, jego sprawdzania i ewentualnej rozbudowy