Ostatnio przeglądałem dość stare procedury składowane napisane dla SQL Server 2005 i zauważyłem coś, czego nie rozumiem. Wydaje się, że to jakiś rodzaj wywołania funkcji.
Próbka:
SELECT o.name, o.type_desc, o.create_date
FROM sys.objects o
WHERE o.create_date < {fn Now()} -1;
Spowoduje to wyświetlenie wszystkich wierszy z sys.objects
, które mają działanie create_date
wcześniej niż 24 dni temu.
Jeśli wyświetlę plan wykonania dla tego zapytania, widzę, że {fn Now()}
jest on zastąpiony getdate()
przez Aparat baz danych:
SELECT [o].[name],[o].[type_desc],[o].[create_date]
FROM [sys].[objects] [o]
WHERE [o].[create_date]<(getdate()-@1)
Oczywiście używanie {fn Now()}
jest znacznie bardziej tępe niż GetDate()
. I na przykład uniknę tej składni jak zarazy, ponieważ jest ona nieudokumentowana.
źródło