Trudno mi jest przekształcić procedury składowane z SQL Server do Oracle, aby nasz produkt był z nim zgodny.
Mam zapytania, które zwracają najnowszy rekord niektórych tabel na podstawie sygnatury czasowej:
SQL Server:
SELECT TOP 1 *
FROM RACEWAY_INPUT_LABO
ORDER BY t_stamp DESC
=> To zwróci mi najnowszy rekord
Ale Oracle:
SELECT *
FROM raceway_input_labo
WHERE rownum <= 1
ORDER BY t_stamp DESC
=> To zwróci mi najstarszy rekord (prawdopodobnie w zależności od indeksu), niezależnie od ORDER BY
instrukcji!
Zapytanie Oracle zawarłem w taki sposób, aby spełniało moje wymagania:
SELECT *
FROM
(SELECT *
FROM raceway_input_labo
ORDER BY t_stamp DESC)
WHERE rownum <= 1
i to działa. Ale brzmi to dla mnie jak okropny hack, zwłaszcza jeśli mam dużo rekordów w powiązanych tabelach.
Jaki jest najlepszy sposób, aby to osiągnąć?