仅当存储过程不为空时,才会将结果导入文件

时间:2016-08-09 08:04:51

标签: sql-server stored-procedures bcp

我正在尝试使用SQL作业定期执行存储过程,并将其结果存储到文件夹位置的.txt文件中。

我使用了BCP命令,如:

DECLARE @command VARCHAR(1000)
SET @command = 'BCP "Exec [DatabaseName].[dbo].[StoredProcedureName] " queryout "D:\In\ErrorDetails'+ '.txt" -c -T -t -k'
EXEC xp_cmdshell @command

我只有在SP的结果不为空时才需要执行此操作。

1 个答案:

答案 0 :(得分:0)

您可以使用临时表来存储SP生成的数据,如果有任何行 - 将其写入文件

USE tempdb

IF OBJECT_ID(N'#MyTempTable') IS NOT NULL
BEGIN
    DROP TABLE #MyTempTable
END

SELECT * INTO #MyTempTable 
FROM OPENROWSET('SQLNCLI', 'Server=HOME\SQLEXPRESS;Trusted_Connection=yes;',
     'EXEC Test.dbo.StoredProcedureName');

IF (SELECT COUNT(*) FROM #MyTempTable) > 0
BEGIN
    DECLARE @command VARCHAR(1000) 
    SET @command = 'BCP "USE tempdb SELECT * FROM #MyTempTable " queryout "D:\In\ErrorDetails'+ '.txt" -c -T -t -k' 
    EXEC xp_cmdshell @command
END