日期:2014-05-18  浏览次数:20468 次

如何将存储过程返回的结果带列名导出到文本
如何将存储过程返回的结果带列名导出到文本

------解决方案--------------------
CREATE PROC F
@page INT
AS
BEGIN
DECLARE @sql VARCHAR(1000)
SET @sql = 'SELECT TOP '+CAST(@page AS VARCHAR)+' * FROM sysobjects'
EXEC(@sql)
END
GO



DECLARE @s nvarchar(4000)
SELECT @s='BCP "EXEC DBO.F 20" QUERYOUT c:\bcp.txt /T /c'
EXEC master..xp_cmdshell @s

DROP PROC F

NULL
开始复制...
NULL
已复制了 20 行。
数据包的大小(字节): 4096
时钟时间(毫秒): 共 15
NULL

(所影响的行数为 7 行)
------解决方案--------------------
有参数时用字符串加起来
exec('exec master..xp_cmdshell .....')
------解决方案--------------------
可以用一种比较投机取巧的方法,你看一下合不合适“
CREATE PROC F 
@page INT 
AS 
BEGIN 
DECLARE @sql VARCHAR(1000) 
--先把你的列名写出来再通过union 与你的结果合起来
SET @sql =' select 列名1,列名2,....,列名n union '+ 'SELECT TOP '+CAST(@page AS VARCHAR)+ ' * FROM sysobjects ' 
EXEC(@sql) 
END 
GO 

DECLARE @s nvarchar(4000) 
SELECT @s= 'BCP "EXEC DBO.F 20" QUERYOUT c:\bcp.txt /T /c ' 
EXEC master..xp_cmdshell @s 

DROP PROC F