SQLServer查询数据生成文档邮件发送

 

SET QUOTED_IDENTIFIER ON
SET ANSI_NULLS ON
GO


ALTER procedure [dbo].[proc_dzw159_CSV]
AS
BEGIN
    
    SET NOCOUNT ON

    --如果当天已经生成过,就不再继续
    DECLARE @d DATE
    SET @d = GETDATE()

    IF EXISTS(SELECT id FROM Report WHERE CreateDate = @d AND FileName LIKE '%dzw159%')
        RETURN

    DECLARE @sql  VARCHAR(8000),@u VARCHAR(200),@cmd VARCHAR(100)
    DECLARE @fileName  VARCHAR(100)
    DECLARE @path VARCHAR(200)

    PRINT @path
    --文件名
    SET @fileName='dzw159' + REPLACE(LEFT(CONVERT(CHAR(10),@d,120),10),'-','') + '.csv'
    SET @path = 'D:\PPReport\'+CONVERT(VARCHAR(8),@d,112)+'\'
    SET @cmd='mkdir '+ @path
    EXEC master..xp_cmdshell @cmd, NO_OUTPUT


    SET @sql = 'SELECT ''区域'',''PARTNET_NAME'',''PART'', ''DEF_INTANSIT'''
    + ' UNION ALL ' 
    + 'SELECT ''123'',''456'',FaultyPN,CONVERT(VARCHAR(50),count(0)) ' 
    + ' FROM table.dbo.tableQuery(NOLOCK) '
    + ' WHERE Date IS NULL '
    + ' AND Status IS NULL '
    + ' GROUP BY FaultyPN '
            
    --SET @u=' -c -t ~ -S"." -U"user" -P"password"'
    SET @u = '" -T -t"," -c'
    SET @sql = 'BCP "'+  @sql +'" queryout "'+ @path + @fileName + @u
    EXEC master..xp_cmdshell @sql

    INSERT INTO Report(FileName,FilePath) VALUES('dzw159' + @fileName+ '.csv',@path+'dzw159' + @fileName+ '.csv')

    
    --发送email
    
    --DECLARE @i INT,@count INT,@ID INT, @EMAIL VARCHAR(1000),@fname VARCHAR(400),@fpath VARCHAR(400)
    --DECLARE @ TABLE (SID INT IDENTITY,ID INT)
    
    --INSERT INTO @(ID) SELECT ID FROM Report WHERE Eflag=0
    --AND FileName  = @fileName
    --SET @I=1
    --SELECT @count=COUNT(0) FROM @

    --WHILE @i<=@count
    --BEGIN
    --    SELECT @ID=A.ID,@fname=FileName,@fpath=FilePath
    --    FROM Report A INNER JOIN @ B ON A.ID=B.ID AND B.SID=@i
    
    --    EXEC msdb.dbo.sp_send_dbmail 
    --    @profile_name='dzw159', 
    --    @recipients='110@qq.com',
    --    @subject=@fname, 
    --    @body=@fname
    --    ,@file_attachments=@fpath
    --    SELECT * FROM dbo.Report
    --    UPDATE Report SET Eflag=1 WHERE ID=@ID
        
    --    SET @I = @i + 1
    --END
    
    SET NOCOUNT OFF

END
GO

 

posted @ 2022-06-14 13:56  蜗牛的礼物  阅读(112)  评论(0编辑  收藏  举报