我正在获取存储过程的 XML,我需要对其进行迭代并根据 XML 发送电子邮件。
我有另一个用于发送电子邮件的存储过程:
MailingSystem..SP_SendEmail
@Cc = N'', -- nvarchar(500)
@Bcc = N'', -- nvarchar(500)
@FromEMailAddress = N'', -- nvarchar(500)
@ReplyToEMailAddress = N'', -- nvarchar(500)
@Subject = N'', -- nvarchar(500)
@EmailRecipient = N'', -- nvarchar(500)
@ContentType = N'', -- nvarchar(50)
@Content = N'', -- nvarchar(max)
这是 XML 的结构:
DECLARE @XMLData XML =
'<GenericXML>
<GenericEmailsNotification>
<EmailMessage>
<From>John@Google.com</From>
<Recipients>Naomi@Yahoo.com</Recipients>
<CC>Tania@HotMail.com</CC>
<Subject>Follow The Sun </Subject>
<Body>Breathe, breathe in the air. Set your intentions.Dream with care. </Body>
</EmailMessage>
<EmailMessage>
<From>ron@Google.com</From>
<Recipients>Fake@Yahoo.com</Recipients>
<Subject>Second Email is best</Subject>
<Body>Second Email body...</Body>
</EmailMessage>
</GenericEmailsNotification>
</GenericXML>'
我想遍历每个 EmailMessage 节点并提取与该节点/电子邮件相关的数据(主题、发件人、收件人、正文等)并将其发送到负责的存储过程发送邮件。
每个 XML 可以有多个电子邮件要发送(如果到现在还不清楚..)
我该怎么做?有什么方法可以遍历 XML 元素?
提前致谢
最佳答案
您可以解析 XML 并使用游标:
DECLARE @XMLData XML =
'<GenericXML>
<GenericEmailsNotification>
<EmailMessage>
<From>John@Google.com</From>
<Recipients>Naomi@Yahoo.com</Recipients>
<CC>Tania@HotMail.com</CC>
<Subject>Follow The Sun </Subject>
<Body>Breathe,breathe in the air.Set your intentions.Dream with care</Body>
</EmailMessage>
<EmailMessage>
<From>ron@Google.com</From>
<Recipients>Fake@Yahoo.com</Recipients>
<Subject>Second Email is best</Subject>
<Body>Second Email body...</Body>
</EmailMessage>
</GenericEmailsNotification>
</GenericXML>' ;
查询:
SELECT [from] = s.c.value('(./From)[1]', 'nvarchar(250)')
,[Recipients] = s.c.value('(./Recipients)[1]', 'nvarchar(250)')
,[CC] = s.c.value('(./CC)[1]', 'nvarchar(250)')
,[Subject] = s.c.value('(./Subject)[1]', 'nvarchar(250)')
,[body] = s.c.value('(./Body)[1]', 'nvarchar(MAX)')
INTO #Emails
FROM @XMLData.nodes('/GenericXML/GenericEmailsNotification/EmailMessage')
AS s(c);
DECLARE cur CURSOR LOCAL FAST_FORWARD FOR
SELECT [from],[Recipients],[CC],[Subject],[body] FROM #Emails;
DECLARE @from NVARCHAR(250),
@recipients NVARCHAR(250),
@cc NVARCHAR(250),
@subject NVARCHAR(250),
@body NVARCHAR(MAX);
OPEN cur;
FETCH NEXT FROM cur INTO @from, @recipients, @cc, @subject, @body;
WHILE @@FETCH_STATUS = 0
BEGIN
-- send email, pass variables to SP call, handle `NULL` with `ISNULL` if needed
-- EXEC MailingSystem..SP_SendEmail @Subject = @subject, ...
SELECT 'Send email in cursor loop:', @from, @recipients, @cc, @subject, @body;
FETCH NEXT FROM cur INTO @from, @recipients, @cc, @subject, @body;
END
CLOSE cur;
DEALLOCATE cur;
关于sql - 遍历 XML 节点并在 SQL Server 中发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36532548/
我有多个ActiveRecord子类Item的实例数组,我需要根据最早的事件循环打印。在这种情况下,我需要打印付款和维护日期,如下所示:ItemAmaintenancerequiredin5daysItemBpaymentrequiredin6daysItemApaymentrequiredin7daysItemBmaintenancerequiredin8days我目前有两个查询,用于查找maintenance和payment项目(非排他性查询),并输出如下内容:paymentrequiredin...maintenancerequiredin...有什么方法可以改善上述(丑陋的)代
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送
我的工作要求我为某些测试自动生成电子邮件。我一直在四处寻找,但未能找到可以快速实现的合理解决方案。它需要在outlook而不是其他邮件服务器中,因为我们有一些奇怪的身份验证规则,我们需要保存草稿而不是仅仅发送邮件的选项。显然win32ole可以做到这一点,但我找不到任何相当简单的例子。 最佳答案 假设存储了Outlook凭据并且您设置为自动登录到Outlook,WIN32OLE可以很好地完成此操作:require'win32ole'outlook=WIN32OLE.new('Outlook.Application')message=
遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg
目录第1题连续问题分析:解法:第2题分组问题分析:解法:第3题间隔连续问题分析:解法:第4题打折日期交叉问题分析:解法:第5题同时在线问题分析:解法:第1题连续问题如下数据为蚂蚁森林中用户领取的减少碳排放量iddtlowcarbon10012021-12-1212310022021-12-124510012021-12-134310012021-12-134510012021-12-132310022021-12-144510012021-12-1423010022021-12-154510012021-12-1523.......找出连续3天及以上减少碳排放量在100以上的用户分析:遇到这类
我正在尝试查询我的Rails数据库(Postgres)中的购买表,我想查询时间范围。例如,我想知道在所有日期的下午2点到3点之间进行了多少次购买。此表中有一个created_at列,但我不知道如何在不搜索特定日期的情况下完成此操作。我试过:Purchases.where("created_atBETWEEN?and?",Time.now-1.hour,Time.now)但这最终只会搜索今天与那些时间的日期。 最佳答案 您需要使用PostgreSQL'sdate_part/extractfunction从created_at中提取小时
所以这可能有点令人困惑,但请耐心等待。简而言之,我想遍历具有特定键值的所有属性,然后如果值不为空,则将它们插入到模板中。这是我的代码:属性:#===DefaultfileConfigurations#default['elasticsearch']['default']['ES_USER']=''default['elasticsearch']['default']['ES_GROUP']=''default['elasticsearch']['default']['ES_HEAP_SIZE']=''default['elasticsearch']['default']['MAX_OP
s=Socket.new(Socket::AF_INET,Socket::SOCK_STREAM,0)s.connect(Socket.pack_sockaddr_in('port','hostname'))ssl=OpenSSL::SSL::SSLSocket.new(s,sslcert)ssl.connect从这里开始,如果ssl连接和底层套接字仍然是ESTABLISHED,或者它是否在默认值7200之后进入CLOSE_WAIT,我想检查一个线程几秒钟甚至更糟的是在实际上不需要.write()或.read()的情况下关闭。是用select()、IO.select()还是其他方法完成
我们有一个字符串:“”这个正则表达式://i如何从当前字符串中获取所有匹配项? 最佳答案 "".scan(//)参见scan在ruby-docs上 关于ruby-如何遍历Ruby中所有正则表达式匹配的字符串?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6857852/