在SQL中,用到BCP.........QUERYOUT的时候,中间的内容决不允许有回车,因为这是在DOS下运行,会默认回车为换行。
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
ALTER PROCEDURE ******
@FilePath char(64), /*文件地址*/
@FileName char(32), /*文件名称*/
@ResultCode int OUTPUT /* 错误数量*/
AS
SET NOCOUNT ON
/*********************/
/* declaration */
/*********************/
DECLARE @Query varchar(4000)
DECLARE @Result int
DECLARE @BcpCommand varchar(100)
DECLARE @SQL varchar(1000)
/*********************/
/* initial */
/*********************/
select @ResultCode = 0
SET @Query=''
SET @Result=0
SET @BcpCommand = '-c -T -t,'
SET @SQL=''
/*********************/
/* mainly processing */
/*********************/
SET @SQL='SELECT 列名 FROM 表名 WHERE 条件 ORDER BY 列名'
SET @Query ='bcp "' + @SQL + '" queryout ' +RTRIM( @FilePath) + RTRIM(@FileName)+' '+ @BcpCommand
EXEC @Result = master..xp_cmdshell @Query
SELECT @ResultCode = @@ERROR
/*********************/
/* later processing */
/*********************/
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO