Partager via


ALL (Transact-SQL)

Compare une valeur scalaire avec l'ensemble de valeurs d'une colonne.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

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

Arguments

  • scalar_expression
    Toute expression valide.

  • { = | <> | != | > | >= | !> | < | <= | !< }
    Opérateur de comparaison.

  • subquery
    Sous-requête dont le jeu de résultats est une colonne. Le type de données de la colonne retournée doit être le même que celui de scalar_expression.

    Instruction SELECT limitée, dans laquelle les clauses ORDER BY et COMPUTE et le mot clé INTO ne sont pas autorisés.

Types de résultats

Boolean

Valeur des résultats

Retourne la valeur TRUE lorsque la comparaison spécifiée est vraie (TRUE) pour toutes les paires (scalar_expression**,**x), où x est une valeur du jeu de valeurs de la colonne ; dans le cas contraire, la valeur FALSE est retournée.

Notes

ALL requiert que l'argument scalar_expression corresponde à toutes les valeurs retournées par la sous-requête. Par exemple, si la sous-requête retourne les valeurs 2 et 3, l'instruction scalar_expression <= ALL (subquery) donne TRUE comme résultat pour un argument scalar_expression égal à 2. Si la sous-requête retourne les valeurs 2 et 3, l'instruction scalar_expression = ALL (subquery) donne FALSE comme résultat étant donné que certaines des valeurs de la sous-requête (à savoir 3) ne répondent pas aux critères de l'expression.

Pour les instructions qui demandent que l'argument scalar_expression corresponde à seulement une des valeurs retournées par la sous-requête, consultez SOME | ANY (Transact-SQL).

Cette rubrique fait référence à l'instruction ALL lorsqu'elle est utilisée avec une sous-requête. ALL peut aussi être utilisé avec UNION et SELECT.

Exemples

L'exemple suivant crée une procédure stockée qui détermine si tous les composants d'un SalesOrderID spécifique de la base de données AdventureWorks2008R2 peuvent être fabriqués dans le nombre de jours spécifié. L'exemple utilise une sous-requête pour créer une liste du nombre de DaysToManufacture pour tous les composants du SalesOrderID spécifié, puis vérifie que toutes les valeurs DaysToManufacture sont inférieures ou égales au nombre de jours spécifié.

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.' ;

Pour tester la procédure, exécutez-la en utilisant le SalesOrderID 49080 dont l'un des composants demande 2 jours de fabrication, tandis que les 2 autres en demandent 0. La première instruction ci-dessous remplit les critères, mais pas la deuxième.

EXECUTE DaysToBuild 49080, 2 ;

Voici l'ensemble des résultats.

Tous les articles de cette commande peuvent être fabriqués dans le nombre de jours spécifié ou moins.

EXECUTE DaysToBuild 49080, 1 ;

Voici l'ensemble des résultats.

Certains articles de cette commande ne peuvent être fabriqués dans le nombre de jours spécifié ou moins.