SQL Server Performance

DTS & SELECT vacío

Discussion in 'Preguntas sobre SQL Server en Español.' started by piscis26, Jan 30, 2007.

  1. piscis26 New Member

    Hola,

    principiante en estos temas de DTS, espero que alguien me pueda ayudar... Y cómo todos necesito resolverlo lo antes posible.

    He creado un DTS que hace un SELECT y vuelca el resultado en un fichero .txt.

    Cómo puedo hacer para que si el SELECT no devuelve datos, no se genere el fichero?

    Cómo es interpretado un SELECT que no devuelve ningún valor?


    Muchas gracias.

  2. Luis Martin Moderator

    Si no devuelve nada, genera un archivo vacío?


    Luis Martin
    Moderator
    SQL-Server-Performance.com

    All in Love is Fair
    Stevie Wonder


    All postings are provided “AS IS” with no warranties for accuracy.



  3. piscis26 New Member

    Sí, pero necesito acceder antes y que si va a ser vacío no se genere.
  4. piscis26 New Member

    Creo que para controlarlo se ha de hacer desde Visual Basic.
    No sé muy bien cómo todavía. Me estoy peleando con esto...
  5. Luis Martin Moderator

    Lo que creo es que tienes que poner alguna condición para testear que el select te devuelva filas o no. Según esa condición terminas el DTS o grabas.


    Luis Martin
    Moderator
    SQL-Server-Performance.com

    All in Love is Fair
    Stevie Wonder


    All postings are provided “AS IS” with no warranties for accuracy.



  6. piscis26 New Member

    Bueno el count(*) no funciona porque genera igualmente el resultado vacío.
    Es decir, con

    IF EXISTS (SELECT COUNT(*)
    FROM Menu
    WHERE idIdioma=2)
    BEGIN
    SELECT *
    FROM Menu
    WHERE idIdioma=2
    END

    siempre existe el resultado del SELECT (sin nada dentro), así que siempre se ejecuta la sentencia del IF, lo que genera un fichero en el DTS.

    Lo que pretendo es no generar ese fichero si no hay nada dentro del SELECT, pero no encuentro la manera.

    A ver si alguien me puede ayudar...
  7. piscis26 New Member

    Ya lo tengo.
    He cambiado el SELECT y me funciona!!!

    Por si le ayuda a alguien:

    declare @numero as int

    set @numero = (select count(*)
    from Menu
    where idIdioma=2)

    if @numero <> 0
    begin
    (select *
    from Menu
    where idIdioma=2)
    end
  8. Luis Martin Moderator

    Gracias por compartirlo.

    Saludos,

    Luis Martin
    Moderator
    SQL-Server-Performance.com

    All in Love is Fair
    Stevie Wonder


    All postings are provided “AS IS” with no warranties for accuracy.



Share This Page