BizTalk tarafından bir sıradan (ve birleştirilmiş tabloya) n satırları almak ve aynı zamanda bu öğelerin durumunu aynı anda güncelleştirmek için kullanılan bir dizi saklı yordamımız var.JOIN ile CTE içeren OUTPUT yan tümcesi kullanılarak tek bir deyimde GÜNCELLEŞTİRME ve SEÇIM kullanılabilir mi?
Tablo değişkenlerinin kullanımını kaldırmak için bu sorguları değiştirmeye çalışıyorum ve bunun yerine çalışmayı tek bir deyimle yapın. Bazıları ile başarılı oldum, ancak bu özel örnek, CTE'de bir join
olduğundan ve update
'un bir parçası olmamasına rağmen birleştirilmiş sütunlardan bazılarını döndürmek istediğim için çok zor.
;with q as
(
select top (@FetchCount)
iq.InQueueId,
itk.[Message],
iq.PatNo,
iq.DistrictNo,
itk.Interaction,
iq.[Status]
from
InQueue iq
join Itk on iq.InQueueId = itk.InQueueId
join [Endpoint] e on iq.[Endpoint] = e.EndpointId
join EndpointName en on en.EndpointNameId = e.Name
where
en.Name = 'XYZ'
and iq.[Status] = @StatusNew
order by
iq.InQueueId
)
update
q
set
[Status] = @StatusSelected
output
inserted.InQueueId as [Id],
inserted.[Message] as [Msg],
inserted.DistrictNo,
inserted.Interaction
Bu hemen aşağıdaki hata nedeniyle başarısız: sütunlar İleti ve Etkileşim olamaz çünkü
The column reference "inserted.Message" is not allowed because it refers to a base table that is not being modified in this statement.
Açıkçası bu ben gelmek ne
Bu
olduğunuinserted
kümesinin bir parçası olarak döndürülmüştür, çünkü bunlar farklı bir tablodadır ve bu nedenle güncelleştirilmemiştir.
output
inserted.InQueueId as [Id],
q.[Message] as [Msg],
inserted.DistrictNo,
q.Interaction
Bu hata ile başarısız:
The multi-part identifier "q.Message" could not be bound.
geçici tablolar veya edinme sorguyu yeniden yazmadan bunu başarmak mümkün mü
yüzden hiçoutput
maddesinin değiştirilmesine teşebbüs Tablo değişkenleri?
Teşekkür maçları rağmen sonra, ben deneyin vermedi tek şeydi! Burada anahtar kelime seçimini gerçekten geliştirmiş olabilirler. değişmemiş olan değerler için "silindi" kümesine bakmak mantıklı görünmüyor. –
Karşılaştığım bir sorunu çözmek için ihtiyacım olan şey buydu. Keşke bu cevabı + 10'luk edebilseydim. – Brandon