none
BCP passando parâmetro na clausula WHERE RRS feed

  • Pergunta

  • Olá pessoal!

    Estou fazendo uma Stored Procedure utilizando o BCP aonde tenho uma clausula where que é passada pelo usuário. 

    CREATE PROCEDURE [dbo].[export]

    @arquivo as VARCHAR(100)

    AS

    DECLARE @SQLCommand [VARCHAR](max)

          ,@Query   [VARCHAR](max)

    SET @Query = 'SELECT xmlcol FROM [TesteXML[.[dbo].[import] WHERE nomearq = ' +@arquivo;

    SET @SQLCommand = 'EXEC xp_cmdshell "bcp" ' + @Query + ' " queryout " C:\teste.xml " -U sa -P sdrecf -c -S"localhost""'

    PRINT @SQLCommand

    EXEC (@SQLCommand)

    -------------------------------------------------------------------------------------

    Quando o passo o parametro pra ele por exemplo:

    EXEC export 'arquivo1'

    Dá o seguinte erro:

    ERROR = [MICROSOFT][SQL SERVER NATIVE CLIENT 11.0][SQL SERVER] INVALID COLUMN NAME 'arquivo1'.

    Já tentei colocar assim também:

    CREATE PROCEDURE [dbo].[export]

    @arquivo as VARCHAR(100)

    AS

    DECLARE @SQLCommand [VARCHAR](max)

          ,@Query   [VARCHAR](max)

    SET @Query = 'SELECT xmlcol FROM [TesteXML[.[dbo].[import] WHERE nomearq = ' CHAR(39)+@arquivo+CHAR(39);

    SET @SQLCommand = 'EXEC xp_cmdshell "bcp" ' + @Query + ' " queryout " C:\teste.xml " -U sa -P sdrecf -c -S"localhost""'

    PRINT @SQLCommand

    EXEC (@SQLCommand)

    ----------------------------------------------------------------------------------------------------------------

    E dá erro de sintaxe proximo a 'arquivo1'.

    Se alguem puder me ajudar, agradeço!



    • Editado Andriotti domingo, 2 de fevereiro de 2014 13:37
    domingo, 2 de fevereiro de 2014 13:35

Respostas

Todas as Respostas