Bu etkiyle ilgili bir şeyler yapmak istiyorum.Bir SQL Eklenti Statüsü'nde Iterative Stored Prosedürü
1. düzey konumların bir listesini aldığımda, her biri için bir 'Ana Ofis' düzey 2 konumu ekleyin ve ekleme ifadesinde yinelemeli olarak Get_Next_PK
saklı yordamımı kullanın.
Bunu farklı şekilde yapmak için göze çarpan bir şekilde açık bir şekilde eksik olduğumu hissediyorum.
Düzey2 PK benzersiz değildir ve bu nedenle de bir autoincrement/kimlik
DECLARE @foo INT
INSERT INTO LocationLvl2_Table
EXEC Get_Next_PK 'LocationLvl2_Table', @foo OUTPUT
SELECT
@foo, LocationLvl1_Code, 'Main Office', 1
FROM
(SELECT DISTINCT
LocationLvl1_Code
FROM
LocationLvl1_Table
WHERE...)
değil ben alıyorum sonuç: benim işlevi doğru sonraki PK çeker, fakat sadece bir kez, bu nedenle tüm satırların aynı PK. Bunun üzerine, sonuçları penceremde görüntülenmesini istediğim verileri görüyorum, ancak verilerden hiçbiri gerçekte tabloya eklenmiyor
Örnek Bilgiler: 5 Lvl_1 konumu ve 12 Lvl_2 var konumları (PK 1-12). 5 lvl_1’in tamamı 'ana giriş' ve 'kafeterya' lvl_2 yerlerine sahiptir. Bunlardan 2'sinde 'ana ofis' var lvl_2.
Her bir lvl_1 için bir tane olmayan bir 'ana ofis' lvl_2 eklemek istiyorum. (Bu mantık, burada nereye koyduğum yerden başlar.)
Get_Next_PK
'location_lvl2' tablo adını parametre olarak alır ve '13' sonraki PK olarak döndürür.
lvl_1'in 'ana ofisi' olmayan her birini yinelemeyi ve ekleme deyiminde SP'nin çıktı değişkenini (@foo) kullanarak bir lvl_2 vermeyi istiyorum.
'Get_Next_PK' işleviniz bir işlev gibi görünmüyor, saklı yordamdır. Eğer yürütmek istediğiniz her satır için ise, bir 'imleç' ya da 'while 'döngüsüne ihtiyacınız olacaktır. Ama bundan önce, Get_Next_PK'nin kodunu paylaşabilir misiniz? Bunu yapmanın daha basit bir yolu olmalı. – AKS
"Level2 PK benzersiz değil" - Eğer PK Birincil Anahtar anlamına gelirse ve bu benzersiz değildir, başka sorunlarınız var demektir. :) –
Saklı yordam hakkında doğru, bir işlev değil, yanlış yazım oldu. Maalesef kodu gerçekten paylaşamam. Ve evet biliyorum ki PK'nin eşsiz olması gerekiyor, ama değil, bunun etrafında çalışmak zorundayım. –