2013-01-14 31 views
6

kullanarak bir SQL Server tablosuna birden çok satır eklemek Şu anda SQL Server 2008 kullanıyorum ve tabloya birden çok satır eklemek için bir tablo değişkenini kullanarak bir deyim oluşturmaya çalışıyorum. Şu anda olduğu gibi, 4 farklı noktaya eklenen bilgileri (2 seçim deyimi, 1 ekleme ve 1 güncelleme) eklemek zorundayım, ancak tek bir tablo değişkeni oluşturabilmek istiyorum, bu yüzden sadece Bir kez bilgi. Herhangi bir yardım/öneri çok takdir edilecektir.Tablo değişkenini

Bu, değiştirmeye çalıştığım şeyin bir örneğidir. table2 den table1 değerlerine

PRINT 'Before' 
SELECT GROUPID, ModifiedBy, ModifiedDate 
FROM TableXYZ 
WHERE groupID in(ID1, ID2, ID3, ID4)                

BEGIN TRAN 


Insert into TableXYZ 
(GROUPID) 
VALUES 
(ID1), (ID2), (ID3), (ID4)                



UPDATE TableXYZ 
SET existingdays = 15 
    ,ModifiedBy = @userID 
    ,ModifiedDate = @today 
WHERE groupID in(ID1, ID2, ID3, ID4)                


Set @RowCount = @@ROWCOUNT 


PRINT 'After ' 

SELECT GROUPID, ModifiedBy, ModifiedDate 
FROM TableXYZ 
WHERE groupID in(ID1, ID2, ID3, ID4)  
+2

Neyi başarmaya çalıştığınız net değil - neden tek bir TVP iki seçim, bir ekleme ve bir güncelleştirmeyi değiştirebilir? – Oded

+0

Sorunuzu daha ayrıntılı açıklayabilir misiniz? –

+0

AFAIK değişkenini içeren bir tabloyu hedeflemek isterseniz, değişkeni ve diğer tüm sorgu kodunuzu uydurmak için 'CONCAT()' kullanarak sorgunuzun içinde (hazırlanmış) bir ifade ** oluşturmanız gerekir. – inhan

cevap

8

bu sadece bir kere bilgilerin girilmesi açısından aradığınızı mı?

DECLARE @IDList TABLE 
(
    ID INT 
) 

INSERT INTO @IDList (ID) 
VALUES 
    (ID1) 
    ,(ID2) 
    ,(ID3) 
    ,(ID4) 

PRINT 'Before' 
SELECT GROUPID, ModifiedBy, ModifiedDate 
FROM TableXYZ AS T 
    INNER JOIN @IDList AS L 
     ON T.GroupID = L.ID 

BEGIN TRAN 


Insert into TableXYZ 
(GROUPID) 
SELECT ID 
FROM @IDList 


UPDATE TableXYZ 
SET existingdays = 15 
    ,ModifiedBy = @userID 
    ,ModifiedDate = @today 
FROM TableXYZ AS T 
    INNER JOIN @IDList AS L 
     ON T.GroupID = L.ID 


Set @RowCount = @@ROWCOUNT 


PRINT 'After ' 

SELECT GROUPID, ModifiedBy, ModifiedDate 
FROM TableXYZ AS T 
    INNER JOIN @IDList AS L 
     ON T.GroupID = L.ID 
1

eklemek için:

INSERT INTO table1 (column1) 
SELECT col1 
FROM table2 
+1

değiştirmek istediğim mevcut koddur. Tabii ki, burada 'table2' bir ** tablo değişkeni ** olmalıydı ve bu yüzden' @ table2' olmalıdır –

İlgili konular