Questa è una sezione di uno dei miei stored procedure:Come verificare se una variabile di tabella è vuota in SQL Server?
@dataInTable dbo.Table_Variable readonly,
....
AND (
(@dataInTable IS NULL)
OR
(item IN (SELECT T FROM @dataInTable))
)
@dataInTable IS NULL
è sbagliato nella sintassi, l'errore è
Must declare the scalar variable "@dataInTable"
Così ho modificarla in:
(SELECT T FROM @dataInTable) IS NULL
questo funziona ma se @dataInTable
ha più di 1 elemento, viene visualizzato un messaggio di errore:
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
Comprensibile, quindi modificarla in:
(SELECT TOP(1) T FROM @ProgramRatings) IS NULL
funziona perfettamente, quello che ho è la prestazione preoccupazione.
Mi chiedo, se ha un modo più semplice per verificare se una variabile di tabella è vuota, come
AND (
(@dataInTable IS EMPTY)
OR
(item IN (SELECT T FROM @dataInTable))
)
+1 'EXISTS' può essere più efficiente di' COUNT' poiché si interrompe dopo la prima riga. –
Grazie, ho provato a esistere ma non può essere utilizzato all'interno di una condizione selezionata: E ( (NON POSSO ESSERE POSIZIONARE QUI) O (voce IN (SELEZIONA T DA @dataInTable)) ). Conosci la sintassi corretta –
@EricYin Probabilmente stai cercando 'CASE' se vuoi usarlo in un' SELECT'. Difficile sapere cosa stai facendo in base ai frammenti che hai pubblicato finora. –