是否可以使用通配符在@file_attachements
路径中填充子文件夹名称?
我运行查询以获取要查找的文档名称。然后,我将其分配给一个变量并将@file_location
与@document_name
连接以获取完整路径,但不幸的是,我遇到了一个问题,即该文件名将位于@file_location
内的子文件夹中。
我有以下设置作为示例:
DECLARE @file_attachment VARCHAR(MAX)
DECLARE @file_location VARCHAR(MAX)
DECLARE @my_email VARCHAR(MAX)
DECLARE @BodyContent VARCHAR(MAX)
DECLARE @EmailSubject VARCHAR(MAX)
DECLARE @DocumentName VARCHAR(MAX)
SET @DocumentName = (SELECT Cast(Document_Name AS VARCHAR(MAX)) as 'DocumentName'
FROM dbo.tblDocuments
WHERE TemplateID = 471
AND Cast(Document_Date AS DATE) = Cast(Getdate() - 1 AS DATE))
SET @file_location ='\serverdirectorysub-directory'
SET @my_email = 'computer.user@aol.com'
SET @file_attachment = @file_location + @DocumentName
实际文件将位于此处\serverdirectorysub-directoryanother sub-dirmyfile.docx
由于第二个子目录会有所不同。当我连接@file_location
和@DocumentName
时,我似乎无法解释这一点。
如果我对@file_location
中的第二个子目录进行硬编码,我可以让它发送正常,但正如我提到的,第二个文件夹会改变。
然后,@file_attachments
设置为在设置sp_send_dbmail
时= @file_location
。
我会为此使用xp_dirtree
,因为如果我们将depth
设置为 0,它也会在子文件夹中找到文件。
DECLARE @ParentFolder VARCHAR(256) = '\serverdirectorysub-directory'
IF OBJECT_ID('tempdb..#FileNames') IS NOT NULL DROP TABLE #FileNames
CREATE TABLE #FileNames (
id int IDENTITY(1,1)
,subdirectory nvarchar(512)
,depth int
,isfile bit)
INSERT #FileNames (subdirectory,depth,isfile)
EXEC xp_dirtree @ParentFolder , 0, 1
SELECT * FROM #FileNames