我正在创建存储过程以使用select语句在表中插入值。 以下是我的queuedemail表,我想从两个不同的表中插入行。
Id int Unchecked
Priority int Unchecked
[From] nvarchar(500)
FromName nvarchar(500)
[To] nvarchar(500)
ToName nvarchar(500)
CC nvarchar(500)
Bcc nvarchar(500)
Subject nvarchar(1000)
Body nvarchar(MAX)
第一张表是要发送给客户的广告系列
Id int
Name nvarchar(MAX)
Subject nvarchar(MAX)
Body nvarchar(MAX)
Sent bit
我想从此广告系列中获取正文和主题,以便在上表中插入。并且我想用客户名称替换身体中的一些代币。 现在,客户价值将来自客户表,这些表具有不同的字段,如姓名,电子邮件。现在,第一张表中的toname将来自此客户表。
任何建议。
如果不理解,请原谅。如果有的话留下评论!!!假设我有一个包含2个条目的客户表,如
Id F_Name L_Name Email
1 Nitin Varpe fedexnit@gmail.com
2 Prashant Bankar pbankar@yahoo.com
现在我有一个像
这样的身体亲爱的%Customer.Name%
//这里是广告系列的正文
现在点击发送广告系列。 '%'中引用的此标记将替换为客户名称。然后,此主体应通过客户电子邮件插入queuedemail表'to'列,并与客户名称相同。
Thanx全部为你的回复。
希望从你那里看到更多!!!
答案 0 :(得分:1)
尝试这样的事情
INSERT INTO queuedemail
(
FromName,
To,
Body
)
SELECT
F_Name,
Email,
'Dear' + F_Name +
(
SELECT body
FROM campaign
WHERE -- criteria for selecting body
)
FROM customer
WHERE -- your where condition criteria
在insert和select子句
中包含您需要的字段答案 1 :(得分:0)
客户名称(哪个表格)在哪里?
令牌和客户名称之间的关系。您如何确定要用哪个客户名称替换哪个令牌。
首先构建你的require select语句并验证每一列和输出。关于外连接/左/内的决定。
将在正文部分中多次%Customer.Name%或仅一次。 每排都一样吗? 如果%Customer.Name%将在每一行和每个正文中,那么这很容易 你可以简单地用名字和姓氏替换。
答案 2 :(得分:0)
终于提出了解决方案。谢谢所有人的支持
以下是我的存储过程
创建临时表以从客户表中获取所有记录。
GO
/****** Object: StoredProcedure [dbo].[SendCampaign] Script Date: 11/19/2013 14:40:47 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SendCampaign]
(@CampaignSubject nvarchar(max),
@CampaingBody nvarchar(max),
@TotalRecords int OutPut)
AS
BEGIN
SET NOCOUNT ON
Declare @Body nvarchar(max)=@CampaingBody
Declare @Subject nvarchar(max)=@CampaignSubject
Select *
Into #Temp
From Customer where Active=1
Select *from #Temp
Declare @Id int
Begin
Insert Into QueuedEmail([Priority],[From],FromName,[To],[ToName],CC,Bcc,
[Subject],[Body],CreatedonUtc,SentTries,SentonUtc,EmailAccountid,Attachment)
Select 3,'test@test.com','My Site',Email,'Null','Null','Null',@Subject,
dbo.ModifyCampaign(@Body,CAST(NewsLetterSubscriptionGuid as NVARCHAR(200)),Email)
,GEtUtcDate(),0,null,4,'Null'
from #Temp
END
Drop table #Temp
END
选择语句中的上方ModifyCampaign是我编写的用于替换广告系列中的令牌以及相应客户详细信息的功能。
Thanx all :)并希望将来能帮助其他人