ALL (Transact-SQL)

Compara um valor escalar a um conjunto de valores com uma coluna.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

scalar_expression { = | <> | != | > | >= | !> | < | <= | !< } ALL ( subquery )

Argumentos

  • scalar_expression
    É qualquer expressão válida.

  • { = | <> | != | > | >= | !> | < | <= | !< }
    É um operador de comparação.

  • subquery
    É uma subconsulta que retorna um conjunto de resultados com uma coluna. O tipo de dados da coluna retornada deve ser o mesmo que o da scalar_expression.

    É uma instrução SELECT restrita, na qual a cláusula ORDER BY, a cláusula COMPUTE e a palavra-chave INTO não são permitidas.

Tipos de resultado

Boolean

Valor do resultado

Retornará TRUE quando a comparação especificada for TRUE para todos os pares (scalar_expression**,**x), quando x for um valor no conjunto com uma coluna; caso contrário retornará FALSE.

Comentários

ALL requer que a scalar_expression seja comparada positivamente com todos os valores retornados pela subconsulta. Por exemplo, se a subconsulta retornar os valores 2 e 3, (a subconsulta) scalar_expression <= ALL seria avaliada como TRUE para uma scalar_expression igual a 2. Se a subconsulta retornar os valores 2 e 3, (a subconsulta) scalar_expression = ALL seria avaliada como FALSE, porque alguns dos valores da subconsulta (o valor 3) não atenderiam aos critérios da expressão.

Para instruções que requerem que a scalar_expression seja comparada positivamente a somente um valor retornado pela subconsulta, consulte SOME | ANY (Transact-SQL).

Este tópico se refere a ALL quando for usado com uma subconsulta. ALL também pode ser usado com UNION e SELECT.

Exemplos

O exemplo a seguir cria um procedimento armazenado que determina se todos os componentes de um SalesOrderID especificado no banco de dados AdventureWorks2008R2 podem ser fabricados no número de dias especificado. O exemplo usa uma subconsulta para criar uma lista do número de valores de DaysToManufacture para todos os componentes do SalesOrderID específico e depois confirma se todos os DaysToManufacture estão dentro do número de dias especificado.

USE AdventureWorks2008R2 ;
GO

CREATE PROCEDURE DaysToBuild @OrderID int, @NumberOfDays int
AS
IF 
@NumberOfDays >= ALL
   (
    SELECT DaysToManufacture
    FROM Sales.SalesOrderDetail
    JOIN Production.Product 
    ON Sales.SalesOrderDetail.ProductID = Production.Product.ProductID 
    WHERE SalesOrderID = @OrderID
   )
PRINT 'All items for this order can be manufactured in specified number of days or less.'
ELSE 
PRINT 'Some items for this order cannot be manufactured in specified number of days or less.' ;

Para testar o procedimento, execute-o usando o SalesOrderID 49080, que tem um componente que requer 2 dias e dois componentes que requerem 0 dia. A primeira instrução a seguir corresponde aos critérios. A segunda consulta não.

EXECUTE DaysToBuild 49080, 2 ;

Aqui está o conjunto de resultados.

Todos os itens desse pedido podem ser fabricados no número de dias especificado ou em menos dias.

EXECUTE DaysToBuild 49080, 1 ;

Aqui está o conjunto de resultados.

Alguns itens desse pedido não podem ser fabricados no número de dias especificado ou em menos dias.