Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

mssql serverda exec

Konu, 'Veritabanları' kısmında madzerk tarafından paylaşıldı.

  1. madzerk

    madzerk Yeni Üye

    Kayıt:
    9 Mayıs 2008
    Mesajlar:
    12
    Beğenilen Mesajlar:
    0
    ARkadaşlar merhaba ben stored procedur de dinamik sql çalıştırıyorum ama execle çalıştırdığım sorgudaki değeri alamıyorum yani şu şekilde
    DECLARE @TABLOADI VARCHAR(100)
    DECLARE @COLUMADI VARCHAR(100)
    DECLARE @SORGU VARCHAR(MAX)
    SET @TABLOADI='BILGISAYARLAR'
    SET @COLUMADI='ACIKLAMA'
    SET @SORGU='SELECT COUNT(*) as toplam FROM '+ @TABLOADI [COLOR=#808080]+' WHERE '[COLOR=#808080]+ @COLUMADI [COLOR=#808080]+' LIKE ''%bilgisayar%'
    [COLOR=#0000ff]EXEC[COLOR=#808080](@SORGU[COLOR=#808080])
    bu şekilde acıklama alanından bilgisayar geçen verileri sayıp bana döndürcek ama
    ben direk burda işleyip oo sayı işliycem ama [COLOR=#0000ff]exec[COLOR=#808080](@sorgu[COLOR=#808080]) ile çalıştırdınmı dönen veriyi procedur içinde
    alamıyorum
    yani ordaki toplam değerini alcam procedur içinde tablo içine kayıt edicem.

    [/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR]
     
  2. madzerk

    madzerk Yeni Üye

    Kayıt:
    9 Mayıs 2008
    Mesajlar:
    12
    Beğenilen Mesajlar:
    0
    Arkadaşlar uğraşıyorum hayla yapamadım...:(
    komle bütün proceduru yani @SORGU değişkeninde denedim dinamik olarak ozaman toplam veriyi alıyorum ama bu seferde tabloadını ve columadı nı kayıt edemiyorum onlarda sorun veriyo..
     
  3. Emrahgs

    Emrahgs Aktif Üye

    Kayıt:
    22 Temmuz 2005
    Mesajlar:
    354
    Beğenilen Mesajlar:
    0
    Şehir:
    Antalya
    DECLARE @TABLOADI VARCHAR(100)
    DECLARE @COLUMADI VARCHAR(100)
    DECLARE @SORGU nVARCHAR(4000)
    SET @TABLOADI='BILGISAYARLAR'
    SET @COLUMADI='ACIKLAMA'
    SET @SORGU='SELECT COUNT(*) as toplam FROM '+ @TABLOADI +' WHERE '+ @COLUMADI +' LIKE ''%bilgisayar%'
    exec @SORGU
     
  4. madzerk

    madzerk Yeni Üye

    Kayıt:
    9 Mayıs 2008
    Mesajlar:
    12
    Beğenilen Mesajlar:
    0
    Emrahgs

    Tamam onu çalıştıra biliyorum orda sorun yokta


    CREATEPROCEDURE veri
    DECLARE @TABLOADI VARCHAR(100)
    DECLARE @COLUMADI VARCHAR(100)
    DECLARE @SORGU nVARCHAR(4000)
    SET @TABLOADI='BILGISAYARLAR'
    SET @COLUMADI='ACIKLAMA'
    SET @SORGU[COLOR=#808080]='SELECT COUNT(*) as toplam FROM '[COLOR=#808080]+ @TABLOADI [COLOR=#808080]+' WHERE '[COLOR=#808080]+ @COLUMADI [COLOR=#808080]+' LIKE ''%bilgisayar%'
    [COLOR=#0000ff]exec @SORGU
    [COLOR=#0000ff]END

    bunun procedur olduğunu düşünelim..Procedurü çalıştırdığımızda toplam değer bana döner..Ama ben Toplam değeri procedur içinde almak istiyorum.Şu şekilde.

    [COLOR=#0000ff]CREATE[COLOR=#0000ff]PROCEDURE veri
    [COLOR=#0000ff]DECLARE @TABLOADI [COLOR=#0000ff]VARCHAR[COLOR=#808080](100[COLOR=#808080])
    [COLOR=#0000ff]DECLARE @COLUMADI [COLOR=#0000ff]VARCHAR[COLOR=#808080](100[COLOR=#808080])
    [COLOR=#0000ff]DECLARE @SORGU [COLOR=#0000ff]nVARCHAR[COLOR=#808080](4000[COLOR=#808080])
    [COLOR=#0000ff]SET @TABLOADI[COLOR=#808080]='BILGISAYARLAR'
    [COLOR=#0000ff]SET @COLUMADI[COLOR=#808080]='ACIKLAMA'
    [COLOR=#0000ff]SET @SORGU[COLOR=#808080]='SELECT COUNT(*) as toplam FROM '[COLOR=#808080]+ @TABLOADI [COLOR=#808080]+' WHERE '[COLOR=#808080]+ @COLUMADI [COLOR=#808080]+' LIKE ''%bilgisayar%'
    [COLOR=#0000ff]exec @SORGU
    [COLOR=#008000]--Burda toplam değeri almak istiyorum
    [COLOR=#0000ff]END

    [COLOR=#0000ff]Yani o belirtiğim alanda işlem yapmak istiyorum.Teşekkürler
    [/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR]
     
  5. madzerk

    madzerk Yeni Üye

    Kayıt:
    9 Mayıs 2008
    Mesajlar:
    12
    Beğenilen Mesajlar:
    0
    CREATEPROCEDURE veri

    AS

    BEGIN

    DECLARE @TABLOADI VARCHAR(100)
    DECLARE @COLUMADI VARCHAR(100)
    DECLARE @SORGU nVARCHAR(4000)
    DECLARE @KACSAYI VARCHAR[COLOR=#808080](20[COLOR=#808080])

    [COLOR=#0000ff]SET @TABLOADI[COLOR=#808080]='BILGISAYARLAR'
    [COLOR=#0000ff]SET @COLUMADI[COLOR=#808080]='ACIKLAMA'
    [COLOR=#0000ff]SET @SORGU[COLOR=#808080]='SELECT @KACSAYI=count(*) FROM ['[COLOR=#808080]+@TABLOADI[COLOR=#808080]+'] where '[COLOR=#808080]+@COLUMADI[COLOR=#808080]+' like ''%bilgisayar%''
    INSERT INTO BILGILER(TABLOAD, SUTUNAD, SAYI) values('[COLOR=#808080]+@TABLOADI[COLOR=#808080]+','[COLOR=#808080]+@COLUMADI[COLOR=#808080]+',@KACSAYI)'
    [COLOR=#0000ff]Exec[COLOR=#808080](@SORGU[COLOR=#808080])
    [COLOR=#0000ff]END



    [COLOR=#808080]Aslında tam olarak yapmak istediğim bu gelen tablo ve sutunda istediğim kelimeyi aratmak ve bulunan kelimlerin toplam sayısıyla hangi tablo hangi sutun şeklinde oluşturduğum veriler tablosuna kayıt etmek ama bir türlü yapamadım.

    [COLOR=#808080]En son bunu denedim olur gibime geldi ama şu hatayı veriyor.

    [COLOR=#808080]The name "BILGISAYARLAR" is not permitted in this context. Valid expressions are constants, constant expressions, and (in some contexts) variables. Column names are not permitted.
    [/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR][/COLOR]