Tsql de Birden Fazla Kategori Secimi Procedure c#

ediptufekciler
09-07-2012, 15:51   |  #1  
ediptufekciler avatarı
OP Yeni Üye
Teşekkür Sayısı: 6
30 mesaj
Kayıt Tarihi:Kayıt: Tem 2012

-- ================================================
-- eMedya (TÜFEKÇİLER ).SQL
-- T-SQL:
-- eMedya (Edip Tüfekçiler).SQL
-- ================================================
ALTER procedure [dbo].[KATEGORI_TIP_SECENEK_EKLE]
(
@KategoriTipList varchar(50)
)
AS
BEGIN
--Gelen Elemanı Parcalara Bölüyoruz
DECLARE @TipID varchar(10),
--Bittiyse Virgüllerin okumaya Devam Etme Gelen Parametreler Bitmiştir Ayrılmıştır
@GidenID int
--GidenID Soldan LTRİMLE Boşluğu varsa onları Kırp
--GidenID RTRIM Sağdan Kırpayım Sağdan İlk Virgulü buluyor
SET @KategoriTipList = LTRIM(RTRIM(@KategoriTipList))+ ','
--@GidenID Yazdığımız , Kacıncı Karakter Olduğunu buluyor İlk Virgulun Karakterini Buluyor
SET @GidenID = CHARINDEX(',', @KategoriTipList, 1)
--Kullanıcılar Tablosundaki Tüm Kullancıları Gertir Ama  KategoriID Sırasına Göre Tersten Sırala
--SET TOP 1 FROM Kategori_Admin ORDER BY KategoriSecID desc*/

DECLARE @KategoriSecID int
--Kategori_Admin Tablosundaki Tüm KategoriID Gertir Ama  KategoriID En Büyük Deyeri Al#
SELECT @KategoriSecID=MAX(KategoriID) FROM  Kategori_Admin
--Replace Virgüldeki Boşluğu Bulup Değiştiriyor
IF REPLACE(@KategoriTipList, ',', '') <> ''
BEGIN
  WHILE @GidenID > 0
  BEGIN
   SET @TipID = LTRIM(RTRIM(LEFT(@KategoriTipList, @GidenID - 1)))
   IF @TipID <> ''
   BEGIN
--Gelen Kategori_Tip_Secenek KategoriID Kaydettirme
    INSERT INTO Kategori_Tip_Secenek(KategoriID,KategoriTipID)
      Values (@KategoriSecID,@TipID)
   END
   --Döngünün sonunda Boşluklu Kısımları Atıcak
   SET @KategoriTipList = RIGHT(@KategoriTipList, LEN(@KategoriTipList) - @GidenID)
   SET @GidenID = CHARINDEX(',', @KategoriTipList, 1)
  END
END
END


        SqlParameter[] KategoriTipSecenekParameter = new SqlParameter[1]
        {
            new SqlParameter("@KategoriTipList",SqlDbType.VarChar),
        };
        ////Değişken Ata
        string KategoriTip = "";
        //Virgülle gelen değerleri birleştiriyorum virgül koyarak tüm verileri elde ediyorum
        foreach (ListItem item in chcKategoriTip.Items)
        {
            if (item.Selected)
                KategoriTip += item.Value + ",";
        }
        KategoriTip = KategoriTip.Remove(KategoriTip.Length - 1);
        //veri tabanımızdaki procedure gönderiyorum
        KategoriTipSecenekParameter[0].Value = KategoriTip;

        hlp.ExecuteNonQuery("KATEGORI_TIP_SECENEK_EKLE", CommandType.StoredProcedure, KategoriTipSecenekParameter);