Varios argumento de la instrucción IF – T-SQL

¿Cómo puedo escribir una sentencia IF con varios argumentos en T-SQL?

De la fuente de corriente de error:

DECLARE @StartDate AS DATETIME
DECLARE @EndDate AS DATETIME

SET @StartDate = NULL
SET @EndDate = NULL

IF (@StartDate IS NOT NULL AND @EndDate IS NOT NULL) 
    BEGIN
        -- do some work
    END

Arroja el siguiente error:

Sintaxis incorrecta cerca de la palabra clave
‘Y’. Sintaxis incorrecta cerca de la
palabra clave ‘Y’. Sintaxis incorrecta cerca de
‘)’.

  • Funciona en mi máquina? Estoy pensando en el error podría estar entre sus BEGIN y END. O, si usted no tiene nada entre las BEGIN y END, que sería el problema.
  • Gracias por el aporte. Fue el --do some work sección que estaba causando el problema. Yo soy la construcción de una dinámica instrucción SQL…ugh!
  • Puedo obtener Incorrect syntax near 'END'. debido a que el bloque vacío. Poner x: antes de que el comentario (o una declaración real).

5 Kommentare

  1. 44

    Lo estás haciendo bien. El vacío bloque de código es lo que está causando el problema. No es la condición de la estructura: a)

    DECLARE @StartDate AS DATETIME
    
    DECLARE @EndDate AS DATETIME
    
    SET @StartDate = NULL
    SET @EndDate = NULL
    
    IF (@StartDate IS NOT NULL AND @EndDate IS NOT NULL) 
        BEGIN
            print 'yoyoyo'
        END
    
    IF (@StartDate IS NULL AND @EndDate IS NULL AND 1=1 AND 2=2) 
        BEGIN
            print 'Oh hey there'
        END
  2. 2

    Su código es válido (con una excepción). Es necesario tener el código entre BEGIN y END.

    Reemplazar

    --do some work

    con

    print ''

    Creo que tal vez usted vio FINAL «y no «Y»

  3. 1

    Que es la manera de crear complejas expresiones booleanas: combinarlos con and Y or. El fragmento de código que has publicado no tirar ningún error para el SI.

  4. 1

    Parece funcionar bien.

    Si usted tiene un vacío BEGIN … END bloque puede ver

    Msg 102, Nivel 15, Estado 1, Línea 10
    Sintaxis incorrecta cerca de ‘FINAL’.

  5. 1

    No está seguro de cuál es el problema, esto parece funcionar bien?

    DECLARE @StartDate AS DATETIME
    DECLARE @EndDate AS DATETIME
    
    SET @StartDate = NULL
    SET @EndDate = NULL
    
    IF (@StartDate IS NOT NULL AND @EndDate IS NOT NULL) 
        BEGIN
            Select 'This works just fine' as Msg
        END
    Else
        BEGIN
        Select 'No Lol' as Msg
        END

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea