我有一个sql作业,每24小时运行一次,并发送一封电子邮件,其中包含从我的数据库表中请求的数据。我正在将数据插入:
DECLARE @ReportContentBuilder table(LineSequence int identity, Line varchar(2000))
像这样:
INSERT INTO @ReportContentBuilder VALUES('<html>')
INSERT INTO @ReportContentBuilder VALUES('<head>')
INSERT INTO @ReportContentBuilder VALUES('<style type="text/css">')
INSERT INTO @ReportContentBuilder VALUES('body{font-family: Calibri; font-size: 10pt;}')
INSERT INTO @ReportContentBuilder VALUES('</style>')
INSERT INTO @ReportContentBuilder VALUES('</head>')
INSERT INTO @ReportContentBuilder VALUES('<body>')
发送电子邮件的所有内容都很好,我按预期收到所有数据。它只是我的表标题都是一样的。
WHILE (@MessageTypeCount > 0)
BEGIN
-- SET a parameter here to use as Id
INSERT INTO @ReportContentBuilder VALUES('<table cellpadding="2" border="1">')
INSERT INTO @ReportContentBuilder VALUES('<caption><b>Id</b></caption>')
-- Etc. etc. all the rest of the code works
END
我有一个While循环,并希望将参数传递到 Id 部分,因此每个循环的表格标题会有所不同。
问题:
如何将值传递到代码的Html部分以在我的电子邮件中接收不同的表格标题?
我希望这很清楚,我已经添加了足够的信息。
答案 0 :(得分:1)
如果我做对了,这将有所帮助(假设MSSQL):
DECLARE @Id AS INT
SET @Id = 1
WHILE (@MessageTypeCount > 0)
BEGIN
-- SET a parameter here to use as Id
INSERT INTO @ReportContentBuilder VALUES('<table cellpadding="2" border="1">')
INSERT INTO @ReportContentBuilder VALUES('<caption><b>' + cast(@Id as VARCHAR(3)) + '</b></caption>')
SET @Id = @Id + 1 /* Or SET @Id += 1 */
-- Etc. etc. all the rest of the code works
END
变量@Id
将作为示例,您将通过auto_increment值区分每次运行。在第二个插入中,您将打破文字字符串,将其与@Id
的varchar值连接(如果您不转换或强制转换它,它可能会尝试向字符串添加一个数字,那将是肯定会破坏脚本),并在Id之后添加其余的HTML。