使用 sp_send_dbmail 和 T-SQL 处理文件路径中的子文件夹
Working with sub-folders in file path with sp_send_dbmail and T-SQL
是否可以使用通配符在 @file_attachements
路径中填充子文件夹名称?
我运行 查询以获取我要查找的文档名称。然后我将其分配给一个变量并将 @file_location
与 @document_name
连接起来以获得完整路径,但不幸的是我遇到了一个问题,即该文件名将位于 [=14] 的子文件夹中=].
我有以下设置作为示例:
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 ='\server\directory\sub-directory\'
SET @my_email = 'computer.user@aol.com'
SET @file_attachment = @file_location + @DocumentName
实际文件将位于此处 \server\directory\sub-directory\another sub-dir\myfile.docx
因为第二个子目录会有所不同。当我连接 @file_location
和 @DocumentName
.
时,我似乎无法解释这一点
如果我对 @file_location
中的第二个子目录进行硬编码,我可以让它正常发送,但正如我提到的,第二个文件夹将会改变。
然后在设置sp_send_dbmail
时将@file_attachments
设置为= @file_location
。
我会为此使用 xp_dirtree
,因为如果我们将 depth
设置为 0,它也会在子文件夹中查找文件。
DECLARE @ParentFolder VARCHAR(256) = '\server\directory\sub-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
是否可以使用通配符在 @file_attachements
路径中填充子文件夹名称?
我运行 查询以获取我要查找的文档名称。然后我将其分配给一个变量并将 @file_location
与 @document_name
连接起来以获得完整路径,但不幸的是我遇到了一个问题,即该文件名将位于 [=14] 的子文件夹中=].
我有以下设置作为示例:
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 ='\server\directory\sub-directory\'
SET @my_email = 'computer.user@aol.com'
SET @file_attachment = @file_location + @DocumentName
实际文件将位于此处 \server\directory\sub-directory\another sub-dir\myfile.docx
因为第二个子目录会有所不同。当我连接 @file_location
和 @DocumentName
.
如果我对 @file_location
中的第二个子目录进行硬编码,我可以让它正常发送,但正如我提到的,第二个文件夹将会改变。
然后在设置sp_send_dbmail
时将@file_attachments
设置为= @file_location
。
我会为此使用 xp_dirtree
,因为如果我们将 depth
设置为 0,它也会在子文件夹中查找文件。
DECLARE @ParentFolder VARCHAR(256) = '\server\directory\sub-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