Inquiridor
Concatenar variavel no BCP

Pergunta
-
Caros colaboradores.
como fazer para concatenar uma variavel no BCP? Estou gravando o nome do arquivo em uma variavel e quero colocar essa variavel dentro do proc BCP
esta dessa forma:
declare @caminho varchar(1000)
set @caminho = 'c:\Arq_104.txt'
declare @exec varchar(1000)
select @exec = ' exec master.dbo.xp_cmdshell "bcp select * from ##todoconteudo queryout '+@caminho+' -c -T"'
EXEC(@exec)
Já mandei imprimir na Tela, e esta tudo certo, ao meu ver.
exec master.dbo.xp_cmdshell "bcp select * from ##todoconteudo queryout c:\Arq_104.txt -c -T"
Quando eu mando executar, esta dando erro!!
E erro é este
Copy direction must be either 'in', 'out' or 'format'.
usage: bcp {dbtable | query} {in | out | queryout | format} datafile
[-m maxerrors] [-f formatfile] [-e errfile]
[-F firstrow] [-L lastrow] [-b batchsize]
[-n native type] [-c character type] [-w wide character type]
[-N keep non-text native] [-V file format version] [-q quoted identifier]
[-C code page specifier] [-t field terminator] [-r row terminator]
[-i inputfile] [-o outfile] [-a packetsize]
[-S server name] [-U username] [-P password]
[-T trusted connection] [-v version] [-R regional enable]
[-k keep null values] [-E keep identity values]
[-h "load hints"] [-x generate xml format file]
NULL
Todas as Respostas
-
Olá Alexandre,
É um erro de sintaxe. Veja a correção abaixo:
Code Snippetdeclare
@caminho varchar(1000)set
@caminho = 'c:\Arq_104.txt'declare
@exec varchar(1000)select
@exec = ' exec master.dbo.xp_cmdshell '' bcp "select * from ##todoconteudo" queryout '+@caminho+' -c -T '''EXEC
(@exec)
Resultado:Code Snippetexec master.dbo.xp_cmdshell ' bcp "select * from ##todoconteudo" queryout c:\Arq_104.txt -c -T '
Qualquer problema, avise!
Um abraço,
Raul Santos
-
-- create table ##todoconteudo (campo int)
-- insert into ##todoconteudo (campo) Values (1)declare @caminho varchar(1000)
set @caminho = 'D:\Arq_104.txt'
declare @exec varchar(1000)
select @exec = ' exec master.dbo.xp_cmdshell ''bcp "select * from ##todoconteudo" queryout "'+@caminho+'" -c -t; -T'''
EXEC(@exec) -