Di recente ho esaminato alcune stored procedure piuttosto vecchie scritte per SQL Server 2005 e ho notato qualcosa che non capisco. Sembra essere un tipo di chiamata di funzione.
Un campione:
SELECT o.name, o.type_desc, o.create_date
FROM sys.objects o
WHERE o.create_date < {fn Now()} -1;
Questo mostrerà tutte le righe sys.objectsche hanno avuto create_dateprima di 24 ore fa.
Se visualizzo il piano di esecuzione per questa query, vedo che {fn Now()}viene sostituito getdate()dal Motore di database:
SELECT [o].[name],[o].[type_desc],[o].[create_date]
FROM [sys].[objects] [o]
WHERE [o].[create_date]<(getdate()-@1)
Chiaramente, l'utilizzo {fn Now()}è molto più ottuso di GetDate(). Io per primo eviterò questa sintassi come la peste poiché non è documentata.