Aynı insert into scriptini 10 defa yapmak-sadece 1 kolon değişiyor!!

Başlatan mir_as82, 08 Mart 2018, 12:27:25

mir_as82

Aynı scriptin sadece 1 kolonunda değişiklik yapıyorum ve 10 defa kopyala yapıştır yapıyorum. Ve sadece bir kolon değişiyor.
Bunu 10 defa kopyala yapıştır yapmadan sadece 1 defa run ederek nasıl yaparım? 10 tane değişecek kolondaki bilgileri parametrik versem?

eti

stored procedure kullanabilirsiniz.
parametreleri vererek tek komutla tüm işlemler sql server tarafında halledilir.

muhittin_kaplan


muhendisbey

SQL komutunu eklerseniz bir bakalım. Bu şekilde pek anlaşılır olmamış. Ne yapmak istediğinizi biraz daha açık yazabilir misiniz? 10 adet kayıt mı oluşturacaksınız?
Kodunuzu SQL'de saklatıp bu kodu çağırarak kendinize özel bir insert into komutu elde edebilmeniz de mümkün. eti'nin dediği gibi stored procedure kullanabilirsiniz. Güvenlik açısından da stored procedure kullanmak daha iyi olur.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

mir_as82

Abi 10 defa insert into yapmak istemiyorum manual olarak,
6 kolonlu table düşün,

10 kayıt düşün, hepsinin 5 kolonu aynı, sadece 6.kolonları değişiyor.

mir_as82

Ben bu stored prosedüre nasıl yazarım onu soruyorum aslında

muhendisbey

İyi de bunun için 10 kez tekrar gerekmez ki? Yeni kayıt da eklenmeyecekse update komutu ile yapılabilir.


Update [TabloAdı] Set [Kolon Adı1]= '[Yenideğer1]', [Kolon Adı2]= '[Yenideğer2]' Where [şart];
Burada şartı öyle bir seçeceksin ki 6. kolonuna girilecek tüm kayıtlar listelenmeli, ardından hepsi verdiğin değerleri alır.

Stored procedure oluşturmak için transaction açman gerekli (bir nevi SQL server konsol ekranı olarak düşünebilirsin. Programın böyle bir erişim yetkisi oluyor mu ben de bilmiyorum.). Gerekli kodlara internetten bakman gerekli çünkü görsel üzerinde görürsen ancak nasıl yapıldığını kavrayabilirsin. Bazı kavramları da ekstra öğrenmen gerekli ki problem olmasın. Transaction işlemleri bilmeyenler için risk taşır. Update, Delete komutları gibi.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

olcay54

Veri tabanının işleyişi açısından yeni 10 kayıt eklemek ile yeni 10 kayıdın sadece bir kolunun değerlerinin farklı diğer kolondakilerin aynı olmasının bir farkı yok bence.
Aynı olan diğer kolonlara bir değer versen bile veri tabanı o kolonların default değeri ne ise onu arayacaktır.
10 kaydı tek bir SQL komutu ile yapmak istiyorsan MySQL de bulk insert diye bir komut olması lazım. Diğer veri tabanları da benzer komutlara sahiptirler.

muhendisbey

Sql'de aynı bilginin tekrarlı tutulması istenmez. Bunun için normalizasyon yapılır. Buna göre de derecelendirilir.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

mir_as82

Hocam sorun normalizasyon değil, normalde bu kayıtlar farklı olabiliyor. Yani DB tasarımında sorun yok.
Parametre olarak verdiğim değerleri for gibi 3 defa farklı insert into nasıl yaparım?
Örneğin aşağıdaki gibi bir yapı düşünün, 3 kolon var ve ilk 2 kolon aynı 3. Kolona ben 3 parametre vereceğim ve insert yaptıracağım
Create proc spInsert3records
@nvcDegisenKolon1 nvarchar(50),
@nvcDegisenKolon2 nvarchar(50),
@ncvDegisenKolon3 nvarchar(50),
As
Begin

Foreach parametre in parametrelerim

   İnsert into myTable(column1,column2,column3) values ('sabit1','sabit2',parametre)

End

Yukarıdaki gibi bir şey, benim sp ye vereceğim parametrelerimi alıp, for içinde column3 e karşılık gelen yere ekleyecek bir Stored procedure?