gpt4 book ai didi

sql-server - SQL脚本中如何判断文件是否为空?

转载 作者:行者123 更新时间:2023-12-04 06:22:54 26 4
gpt4 key购买 nike

下面是我为存储过程“ListDailyInbound855-InputScript.sql”创建的作业。第一项工作(生成文件) 创建输出“D:\DailyReports\Inbound855.txt”

sqlcmd -i D:\InputSQLScripts\ListDailyInbound855-InputScript.sql  
-S localhost -E -s " " -o D:\DailyReports\Inbound855.txt

第二份工作(电子邮件文件) 创建一封电子邮件,发送至 support@company.com。

Declare @ExeFilePath varchar(255)
Set @ExeFilePath = 'D:\Applications\EmailUtility\Mailer '

Declare @cmd varchar(500)
Set @cmd = @ExeFilePath + ' "Host:smtp.emailserver.com" "To:EDISupport@
company.com" "Cc:support@ company.com" "From:support@ company.com"
"Disp:EDI Support" "Sub: Daily Inbound 855 Report" "Msg:Please find
report attached." "Atch:D:\DailyReports\Inbound855.txt"'

Declare @output int
Exec @output = master..xp_cmdshell @cmd,no_output

If @output <> 0
Begin
RaisError('Error while sending email.', 16, 1)
Return
End

问题: 我需要先检查输出“D:\DailyReports\Inbound855.txt”是否为非空,然后再将其用作电子邮件附件因此不接受它是空的。我的目标是仅在附件有内容或非空时接收电子邮件提醒。感谢您的帮助。

最佳答案

因为您已经在使用可执行文件,所以最好的方法可能是修改它以包括空检查;假设您当然有资源。

作为替代方案,您可以尝试使用如下查询将文件加载到记录集中:

SELECT * FROM OPENROWSET(BULK N'<filename>', SINGLE_CLOB ) AS Contents -- for ASCII/ANSI
SELECT * FROM OPENROWSET(BULK N'<filename>', SINGLE_NCLOB) AS Contents -- for UNICODE

然后使用附加语句检查结果:

DECLARE @LEN INT
SELECT @LEN = Len(Contents.BulkColumn) FROM
OPENROWSET(BULK N'<filename>', SINGLE_CLOB) AS Contents

IF @LEN > 0
BEGIN
-- rest of code
END

关于sql-server - SQL脚本中如何判断文件是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41931605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com