Valori letterali null e inferenza dei tipi (Entity SQL)
I valori letterali null sono compatibili con qualsiasi tipo nel sistema di tipi Entity SQL . Per consentire, tuttavia, la corretta inferenza del tipo di un valore letterale null, in Entity SQL vengono imposti determinati vincoli sulle posizioni in cui è possibile utilizzare un valore letterale null.
Valori null tipizzati
I valori null tipizzati possono essere utilizzati in qualsiasi posizione. L'inferenza dei tipi non è richiesta per i valori null tipizzati in quanto il tipo è noto. È ad esempio possibile costruire un valore null di tipo Int16 con il costrutto Entity SQL seguente:
(cast(null as Int16))
Valori letterali null mobili
I valori letterali null mobili possono essere utilizzati nei contesti seguenti:
Come argomento di un'espressione CAST o TREAT. Questa è la modalità consigliata per produrre un'espressione null tipizzata.
Come argomento di un metodo o di una funzione. In questo caso si applicano le regole di overload standard.
Come uno degli argomenti di un'espressione aritmetica, ad esempio +, - o /. Gli altri argomenti non possono essere valori letterali null. In caso contrario, l'inferenza dei tipi non è possibile.
Come qualsiasi argomento di un'espressione logica (AND, OR o NOT). Tutti gli argomenti sono noti come tipo Boolean.
Come argomento di un'espressione IS NULL o IS NOT NULL.
Come uno o più argomenti di un'espressione LIKE. Per tutti gli argomenti è previsto il tipo String.
Come uno o più argomenti di un costruttore di tipo denominato.
Come uno o più argomenti di un costruttore multiset. Almeno un argomento del costruttore multiset deve essere un'espressione non costituita da un valore letterale null.
Come una o più espressioni THEN o ELSE in un'espressione CASE. Almeno una delle espressioni THEN o ELSE nell'espressione CASE deve essere un'espressione diversa da un valore letterale null.
I valori letterali null mobili non possono essere utilizzati in altri scenari. Non possono ad esempio essere utilizzati come argomenti di un costruttore ROW.