2

我正在尝试做这样的事情:

merge MembershipTEST as T
using (select OrganisationID, Name From MembershipPending) as S
on  T.OrganisationID = S.OrganisationID
and T.Name = S.Name
when not matched then
insert (MembershipID,OrganisationID, Name) 
values(
(EXEC [dbo].[spGetNextIntKeyByTableName] 
@PKColName = 'MembershipID',@TableName = 'FWBMembership'),
S.OrganisationID, 
S.Name );

基本上,identitykey 来自一个 sp

可能吗?

更新 1:答案是否定的

阅读在线文档http://msdn.microsoft.com/en-us/library/bb510625%28v=sql.105%29.aspx

VALUES (values_list) 是以逗号分隔的常量、变量或表达式列表,它们返回要插入到目标表中的值。表达式不能包含 EXECUTE 语句。

4

1 回答 1

1

构建一个 SSIS 包。只需创建一个新的数据流任务。使用两个 OLEDB 源,其中一个执行存储过程,另一个从您要查找的表中选择MERGE。确保它们都是由同一事物订购的。进入每个 OLEDB 源的高级设置,设置排序为 true,然后为您排序的项目设置排序值。然后将两个数据流移动到MERGE JOIN. 然后将数据流发送到条件拆分并设置为INSULL(OrganisationID). 使用生成的数据流转到 OLEDB 目标。

抱歉缺少视觉效果,我稍后会在午餐时间添加它们,现在忙于添加它们。

于 2013-05-17T15:41:28.590 回答