Sql server 在获取行T-SQL时提交临时表(SqlServer2005)
我在“While..fetch next”期间更新临时表 问题是,当光标获取下一行时,临时表没有使用之前的获取下一行进行更新,因此在临时表的末尾,临时表将使用最后一行的数据而不是每一行的数据进行更新。 我英语说得不好,希望你能理解我的要求Sql server 在获取行T-SQL时提交临时表(SqlServer2005),sql-server,Sql Server,我在“While..fetch next”期间更新临时表 问题是,当光标获取下一行时,临时表没有使用之前的获取下一行进行更新,因此在临时表的末尾,临时表将使用最后一行的数据而不是每一行的数据进行更新。 我英语说得不好,希望你能理解我的要求 DECLARE @IdType UNIQUEIDENTIFIER DECLARE @SerialNumber NVARCHAR(64) DECLARE DeviceCursor CURSOR LOCAL FOR SELECT DISTI
DECLARE @IdType UNIQUEIDENTIFIER
DECLARE @SerialNumber NVARCHAR(64)
DECLARE DeviceCursor CURSOR LOCAL FOR
SELECT DISTINCT
--Acc.[AccountHierarchyId],
MC.SerialNumber AS SerialNumber,
MC.IdType AS IdType
FROM
@MachinesContrat MC
WHERE
MC.TypeAffaire = 'Essentiel'
OPEN DeviceCursor
FETCH NEXT FROM DeviceCursor INTO @SerialNumber, @IdType
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE
MI SET MI.SerialNumber = @SerialNumber
FROM
@MachinesInventory MI
WHERE
MI.fk_IdType = @IdType AND isnull(MI.SerialNumber,'Dummy') <> @SerialNumber
FETCH NEXT FROM DeviceCursor INTO @SerialNumber, @IdType
END
CLOSE DeviceCursor;
DEALLOCATE DeviceCursor;
DECLARE@IdType UNIQUEIDENTIFIER
声明@SerialNumber NVARCHAR(64)
将DeviceUrsor游标声明为本地
选择不同的
--Acc.[AccountHierarchyId],
MC.SerialNumber作为SerialNumber,
MC.IdType作为IdType
从…起
@机械控制
哪里
MC.typeafaire='Essentiel'
开放式设备接收器
从DeviceCursor获取下一个到@SerialNumber,@IdType
而@@FETCH\u STATUS=0
开始
更新
MI SET MI.SerialNumber=@SerialNumber
从…起
@机械库存
哪里
MI.fk_IdType=@IdType和isnull(MI.SerialNumber,'Dummy')@SerialNumber
从DeviceCursor获取下一个到@SerialNumber,@IdType
结束
闭合装置接受器;
解除分配DeviceUrsor;
您不需要光标来完成这项工作。update语句中的一个简单连接就可以做到这一点,而且性能会更好。您不需要光标来完成这项工作。update语句中的一个简单联接可以做到这一点,而且性能会更好。是否可以添加显示更新前后表内容的示例数据。是否还可以添加更新后希望表包含的内容?是否可以添加显示更新前后表内容的示例数据。您还可以添加希望表包含更新后内容的内容吗?