Esta es una sección de uno de mi procedimiento almacenado:¿Cómo comprobar si una variable de tabla está vacía en SQL Server?
@dataInTable dbo.Table_Variable readonly,
....
AND (
(@dataInTable IS NULL)
OR
(item IN (SELECT T FROM @dataInTable))
)
@dataInTable IS NULL
está mal en la sintaxis, el error es
Must declare the scalar variable "@dataInTable"
Así lo cambio a:
(SELECT T FROM @dataInTable) IS NULL
Estos trabajos pero si @dataInTable
tiene más de 1 artículo, recibo un error:
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
comprensible, por lo que cambiar a:
(SELECT TOP(1) T FROM @ProgramRatings) IS NULL
funciona perfectamente, lo que tengo es la preocupación rendimiento.
Me pregunto, si no tiene una forma más fácil de comprobar si una variable tabla está vacía, como
AND (
(@dataInTable IS EMPTY)
OR
(item IN (SELECT T FROM @dataInTable))
)
+1 'EXISTS' puede ser más eficiente que' COUNT' ya que se detiene después de la primera fila. –
Gracias, traté de existir pero no se puede usar dentro de una condición de selección: AND ( (NO PUEDO COLOCAR Existe AQUÍ) O (elemento IN (SELECCIONE T DE @dataInTable)) ). ¿Conoces la sintaxis correcta? –
@EricYin Probablemente estés buscando 'CASE' si quieres usarlo en' SELECT'. Es difícil saber lo que está haciendo en función de los fragmentos que ha publicado hasta ahora. –