你参考下
CREATE PROCEDURE PROCNAME
@tablename NVARCHAR(128)
,@columnname NVARCHAR(128)
,@minvalue VARCHAR(50)
,@maxvalue VARCHAR(50)
,@filename NVARCHAR(128)
AS
EXEC master..xp_cmdshell 'BCP "SELECT  * FROM surf_rawdb.dbo.'+@tablename+' where '+@columnname+'  BETWEEN '''+@minvalue+'''  and  '''+@maxvalue+'''" queryout e:\sqldataback\'+@filename+'   -t -c -U "sa" -P "11111"';

解决方案 »

  1.   

    原SQL语句中有引号的一个写作两个。
      

  2.   

    EXEC master..xp_cmdshell 'BCP "SELECT  * FROM surf_rawdb.dbo.'+ @tablename +' where '+ @fieldname+'  BETWEEN '''+@begintime+'''  and  '''+@endtime+'''" queryout e:\sqldataback\'+@filename+'   -t -c -U "sa" -P "1111"';
    + @tablename在+号处提示语法错误~~
      

  3.   

    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