我不确定这是否是我应该在T-SQL中做的事情,我很确定在这个上下文中使用'iterate'这个词是错误的,因为你不应该在sql中迭代任何东西.它应该是基于集合的操作,对吗?无论如何,这是场景:
我有一个存储过程返回许多uniqueidentifiers(单列结果).这些ID是另一个表中记录的主键.我需要在该表中的所有相应记录上设置一个标志.
如何在不使用游标的情况下执行此操作?对你来说应该是一个简单的sql大师!
我有一个正在运行的远程存储过程:
EXECUTE Contoso.Frob.dbo.Grobber @StartDate='20140513', @EndDate='20140518'
Run Code Online (Sandbox Code Playgroud)
并且此远程存储过程返回行集:
EmployeeID EmployeeName StartDateTime EndDateTime
---------- -------------- ------------- -----------------------
619 Guyer, Kirsten 2014-05-13 19:00:00.000 2014-05-13 19:00:00.000
...
Run Code Online (Sandbox Code Playgroud)
优秀.完善.好.甜.
现在我有这些结果,我需要将它们存储在一个表中.任何一种表.我不在乎什么样的表:
我只需要存储它们以便我可以处理它们.问题是,当我尝试将结果插入表中时,是否为:
物理表
INSERT INTO EmployeeSchedule
EXECUTE Contoso.Frob.dbo.Grobber @StartDate='20140513', @EndDate='20140518'
Run Code Online (Sandbox Code Playgroud)临时表
INSERT INTO #EmployeeSchedule
EXECUTE Contoso.Frob.dbo.Grobber @StartDate='20140513', @EndDate='20140518'
Run Code Online (Sandbox Code Playgroud)全局临时表
INSERT INTO ##EmployeeSchedule
EXECUTE Contoso.Frob.dbo.Grobber @StartDate='20140513', @EndDate='20140518'
Run Code Online (Sandbox Code Playgroud)表变量
INSERT INTO @EmployeeSchedule
EXECUTE Contoso.Frob.dbo.Grobber @StartDate='20140513', @EndDate='20140518'
Run Code Online (Sandbox Code Playgroud)SQL Server 坚持(不,要求)它开始分布式事务:
用于链接服务器"Contoso"的OLE DB提供程序"SQLNCLI10"返回消息"伙伴事务管理器已禁用其对远程/网络事务的支持.".
消息7391,级别16,状态2,行41
无法执行操作,因为链接服务器"Contoso"的OLE DB提供程序"SQLNCLI10"无法启动分布式事务.
现在,无法对Contoso服务器进行更改.为什么?无所谓.假装杰克鲍尔将出庭并关注任何试图修改Contoso的人.这意味着我无法启用或重新配置MSDTC \\Contoso. …