Tablodaki yeni satırların kimliklerini kopyalandıklarıyla ilişkilendirmek için bir eşleme tablosu oluşturmaya çalışıyorum. OUTPUT INTO cümlesi bunun için mükemmel görünüyor, ancak belgelere göre davranmıyor gibi görünüyor.OUTPUT INTO deyiminde hangi sütunlar kullanılabilir?
Kodum: Hata iletisinde
DECLARE @Missing TABLE (SrcContentID INT PRIMARY KEY)
INSERT INTO @Missing
(SrcContentID)
SELECT cshadow.ContentID
FROM Private.Content AS cshadow
LEFT JOIN Private.Content AS cglobal ON cshadow.Tag = cglobal.Tag
WHERE cglobal.ContentID IS NULL
PRINT 'Adding new content headers'
DECLARE @Inserted TABLE (SrcContentID INT PRIMARY KEY, TgtContentID INT)
INSERT INTO Private.Content
(Tag, Description, ContentDate, DateActivate, DateDeactivate, SortOrder, CreatedOn, IsDeleted, ContentClassCode, ContentGroupID, OrgUnitID)
OUTPUT cglobal.ContentID, INSERTED.ContentID INTO @Inserted (SrcContentID, TgtContentID)
SELECT Tag, Description, ContentDate, DateActivate, DateDeactivate, SortOrder, CreatedOn, IsDeleted, ContentClassCode, ContentGroupID, NULL
FROM Private.Content AS cglobal
INNER JOIN @Missing AS m ON cglobal.ContentID = m.SrcContentID
Sonuçlar:
Msg 207, Level 16, State 1, Line 34
Invalid column name 'SrcContentID'.
(hat 34 ÇIKIŞ INTO bir kez olmak üzere)
Deneme satırları aslında olduklarını düşündürmektedir INSERT hedefinde mevcut OUTPUT INTO içinde seçilebilir. Ancak bu, çevrimiçi kitaplarda bulunan dokümanlar ile çelişir. Ürün tablodan ayrıca, maddenin döner içine
ÇIKIŞ Tablo (WorkOrder) güncelleştirilmesini değer verir ve: ÇIKIŞ Madde ilgili makale, örneğin, benzer bir kullanımını açıklar E yer alır. Ürün tablosu güncelleştirmesi için satırları belirtmek üzere FROM yan tümcesinde kullanılır.
Bu özellikte herhangi biri çalıştı mı?
(Bu arada ben imleç döngü kullanarak iş yapmak için kodumu yeniden kaleme aldık, ama bu çirkin ve hala merak ediyorum) Ben sorun yalnızca kullanabileceğiniz doğruladık
Ve bu çözümün ipucunu sağlar. MERGE ifadesi! Sonra @Simon sentaks sağlamayı başardı. Güzel! – lambacck