EXEC master..xp_cmdshell 'BCP "SELECT * FROM surf_rawdb.dbo.TABLE_BACKUP where TABLEFIELD BETWEEN ''20140801000000'' and ''20140831235959''" queryout e:\sqldataback\abc.txt -t -c -U "sa" -P "11111"';
上面语句在查询窗口执行是没有问题的,现在要拿到存储过程中动态拼SQL,用EXEC命令执行。
其中:TABLE_BACKUP TABLEFIELD 20140801000000 20140831235959 abc.txt
这五个使用参数扭替换,实在是换不明白了,帮忙支个招。。。

------解决思路----------------------
CREATE PROCEDURE PROCNAME
@tablename NVARCHAR(128)
,@columnname NVARCHAR(128)
,@minvalue nVARCHAR(50)
,@maxvalue nVARCHAR(50)
,@filename NVARCHAR(128)
AS
BEGIN
DECLARE @CMD NVARCHAR(4000)
SET @CMD='BCP "SELECT * FROM surf_rawdb.dbo.'+@tablename+' where '+@columnname+' BETWEEN '''+@minvalue+''' and '''+@maxvalue+'''" queryout e:\sqldataback\'+@filename+' -t -c -U "sa" -P "11111"'
EXEC master..xp_cmdshell @CMD
END