我正在尝试将记录插入到SQL 2008 R2表中,其中插入的值会有所不同。
<cftry>
<cfquery name="AddListMembers" datasource="HHSCIntra">
INSERT INTO tbl_MailMembers (DateEntered, EnteredBy, Method,Member,List)
VALUES (
CURRENT_TIMESTAMP
, '#session.UserID#'
, 'A'
, '#session.RecipientDistinguishedName#'
, '#session.DistListDistinguishedName#'
)
</cfquery>
<cfcatch type="Database">
<cfoutput>#cfcatch.message#</cfoutput>
</cfcatch>
</cftry>
变化的值为session.RecipientDistinguishedName
和session.DistListDistinguishedName
,所有其他值都是常量。基本上有一次我可能
我尝试了很多循环组合,但我得到的只是写入表中的一条记录:列表中的第一个成员和第一个分发列表。
更新:
好的事情发生了一些变化,我们只允许用户一次在一个分发列表上工作。所以低于我现在的水平。 (请注意我遗漏了cfqueryparam和其他一些细节,以便在帖子中更适合。)
<cfloop list="#session.RecipientDistinguishedName#" index="i" delimiters="">
<cfquery name="AddListMembers" datasource="HHSCIntra">
INSERT INTO tbl_MailMembers (DateEntered, EnteredBy, Method, Member, List)
VALUES (
CURRENT_TIMESTAMP
, '#session.UserID#'
, 'A'
, '#i#'
, '#session.DistListDistinguishedName#'
)
</cfquery>
</cfloop>
在我从AD中提取员工专有名称的代码中,我添加了这个:
<cfinput type="hidden" name="frmEmpDistinguishedName"
value="#EmployeeAdd.distinguishedName#;">
将分号添加到专有名称的末尾,以便在查询该表时可以将其用作分隔符。因此,在Member
列中结束的是一个长字符串,其中包含用分号分隔的所有可分辨名称。
我注意到的一件事是列中的第一个专有名称以CN=
开头,但所有后续专有名称都以,CN=
开头。我正在寻找那张桌子,看看这是否会成为一个问题。关于更好的方法的任何建议将不胜感激。
最终更新:::
我从;
标记中删除了cfinput
,并添加了以下代码
在insert查询中的cfloop之前。现在我开始使用多个专有名称的长串,在Member
列中用分号分隔。
<cfset session.RecipientDistinguishedName="#Replace(session.RecipientDistinguishedName,'DC=org,','DC=org;','ALL')#">
答案 0 :(得分:1)
使用sql server,您可以使用此构造。
<cfquery>
insert into yourTable
(field1, field2, etc)
select null, null, etc
where 1 = 2
<cfloop>
union
select value1, value2, etc
</cfloop>
</cfquery>
我会把细节留给你。请注意Henry对查询参数的评论。