如何在sql server中将参数传递给bcp命令

Kam*_*mal 5 sql sql-server sql-server-2008

我想将查询结果发送到文件,因此尝试使用bcp命令.但不能传递任何参数.它显示错误.

EXEC xp_cmdshell 'bcp "SELECT * FROM CG.dbo.cdyy where EndTime between     DATEADD(s,0,DATEADD(mm, DATEDIFF(m,0,'+@date+'),0)) and DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,1,'+@date+')+1,0))  " queryout "D:\cdr_cg.txt" -T -c -t,'
Run Code Online (Sandbox Code Playgroud)

Ale*_*nko 5

将您的参数放在调用 master..xp_cmdshell 之前

DECLARE @date varchar(10) = '20130311',
        @bcp varchar(8000)

SELECT @bcp = 'bcp "SELECT * FROM CG.dbo.cdyy WHERE EndTime between DATEADD(s,0,DATEADD(mm, DATEDIFF(m,0,''' + @date + '''),0)) AND DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,1,'''  + @date + ''')+1,0))  " queryout "D:\cdr_cg.txt" -T -c -t,'

EXEC master..xp_cmdshell @bcp
Run Code Online (Sandbox Code Playgroud)

  • 发生此错误是因为您对声明的变量使用了 varchar(max)。您是如何为 @date 和 @bcp 声明 varchar 的?使用 date varchar(10), bcp varchar(8000) 代替 date varchar(max), bcp varchar(max) (2认同)