Cześć, mam taki problem. Piszę funkcje tabelaryczną, która ma zwrócić jeden wektor. Pierwszym elementem jest wynik działania pewnej funkcji skalarnej, a dalej jest zbiór danych. Problem jest taki, że zbiór danych może być pusty. I jeśli jest pusty, to wtedy wynik działania funkcji skalarnej jest zwracany też jako pusty(chociaż funkcja zawsze coś zwraca), a ma być widoczny. Innymi słowy, chcę zawsze uzyskać jakiś rekord.
Najpierw zrobiłem takie zapytanie:
SELECT dbo.funkcja(@param) as wynik_funkcji, *
from tabela
where kolumna = 0
Jednak jeśli nie ma rekordów w tabeli, gdzie kolumna = 0, wtedy jest zwracany całkowicie pusty zbiór(a chcę, żeby był wynik funkcji i dalej nulle).
Więc dalej spróbowałem z cross joinem:
SELECT a.wynik_funkcji, tab.*
from
(
select dbo.funkcja(@param) as wynik_funkcji
)as a
cross join tabela tab
where tab.kolumna = 0
Niestety efekt jest ten sam.
Jak to zrobić? Przypominam, że musi to być funkcja tabelaryczna działająca na MSSQL 2005.