Condividi tramite


ALL (Transact-SQL)

Confronta un valore scalare con un set di valori a colonna singola.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

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

Argomenti

  • scalar_expression
    Qualsiasi espressione valida.

  • { = | <> | != | > | >= | !> | < | <= | !< }
    Operatore di confronto.

  • subquery
    Sottoquery che restituisce un set di risultati a colonna singola. Il tipo di dati della colonna restituita deve essere uguale a quello di scalar_expression.

    Istruzione SELECT limitata, dove le clausole ORDER BY e COMPUTE e la parola chiave INTO non sono supportate.

Tipi restituiti

Boolean

Valore restituito

Restituisce TRUE se il confronto specificato è TRUE per tutte le coppie (scalar_expression**,**x), dove x è un valore del set di valori a colonna singola. In caso contrario restituisce FALSE.

Osservazioni

ALL specifica che l'argomento scalar_expression deve essere confrontato in modo univoco con ogni valore restituito dalla sottoquery. Ad esempio, se la sottoquery restituisce i valori 2 e 3, scalar_expression <= ALL (sottoquery) valuterebbe come TRUE un'espressione scalar_expression con valore 2. Se la sottoquery restituisce i valori 2 e 3, scalar_expression = ALL (sottoquery) restituisce FALSE, in quanto alcuni valori della sottoquery (il valore 3) non soddisfano i criteri dell'espressione.

Per le istruzioni che specificano che l'argomento scalar_expression deve essere confrontato in modo univoco con ogni valore restituito dalla sottoquery, vedere SOME | ANY (Transact-SQL).

Le informazioni contenute in questo sono rilevanti per l'utilizzo dell'opzione ALL con una sottoquery. L'opzione ALL può inoltre essere utilizzata con UNION e SELECT.

Esempi

Nell'esempio seguente viene creata una stored procedure che determina se tutti i componenti di una colonna SalesOrderID specificata nel database AdventureWorks2008R2 possono essere prodotti nel numero di giorni indicato. Nell'esempio viene utilizzata una sottoquery per creare un elenco contenente i numeri corrispondenti ai valori di DaysToManufacture per tutti i componenti della colonna SalesOrderID specifica e viene quindi verificato che tutti i valori di DaysToManufacture siano maggiori del numero di giorni specificato.

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

Per testare la procedura, eseguirla utilizzando il valore SalesOrderID 49080, a cui sono associati un componente che richiede 2 giorni e due componenti che richiedono 0 giorni. La prima istruzione, di seguito, soddisfa i criteri, mentre la seconda no.

EXECUTE DaysToBuild 49080, 2 ;

Set di risultati:

All items for this order can be manufactured in specified number of days or less.

EXECUTE DaysToBuild 49080, 1 ;

Set di risultati:

Some items for this order cannot be manufactured in specified number of days or less.