mssql server ile alakalı bir soru

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Misafir

mssql server ile alakalı bir soru

Mesaj gönderen Misafir »

Arkadaşlar Mssql server kullananlar bilirler stored procedure ile yapılan herhangi bir işlem query analyzer da bilgi çekildiği zaman grid de çıktısı görülür ve rahatlıkla delphiden bu sp ulaşıp gerekli bilgilere ulaşabilirsiniz fakat aşağıdaki sp ile gride çıktı alınmıyor messages çıktısı alınıyor ve ben bu yüzden bu veriyi kullanamıyorum...

Kod: Tümünü seç

CREATE PROCEDURE expand (@current char(40)) AS 
   SET NOCOUNT ON 
   DECLARE @lvl int, @line char(40) 
   CREATE TABLE #stack (item char(40), lvl int) 
   INSERT INTO #stack VALUES (@current, 1) 
   SELECT @lvl = 1 
   WHILE @lvl > 0 
      BEGIN 
         IF EXISTS (SELECT * FROM #stack WHERE lvl = @lvl) 
            BEGIN 
               SELECT @current = item 
               FROM #stack 
               WHERE lvl = @lvl 
               SELECT @line = space(@lvl - 1) + @current 
               PRINT @line 
               DELETE FROM #stack 
               WHERE lvl = @lvl 
                  AND item = @current 
               INSERT #stack 
                  SELECT HAM_KODU, @lvl + 1 
                  FROM TBLSTOKURM 
                  WHERE MAMUL_KODU = @current and opr_bil='B'
               IF @@ROWCOUNT > 0 
                  SELECT @lvl = @lvl + 1 
            END 
         ELSE 
            SELECT @lvl = @lvl - 1 
    END

GO
Arkadaşlar ayrıca bunu txt kaydediyim diyecek mssql server da packages bölümündende bu sp messages çıktı verdiğin için txt olarak da kaydedemiyorum....Lütfen mssql server bilen arkadaşlar yardımcı olursanız sevinirim....
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

sp nin sonucunda illa bir veri alacaksınız diye birşey yok. Bir spnin içinde insert update delete v.b. işlemleri yapabilirsiniz bunun sonucunda sadece işlem yapılır bir sonuç dönmez. Ama bunun yanı sıra bir select yaparsınız selecten dönen sonucu alırsınız. Burda PRINT @line o değeri yazar ekrana, eğer yazmıyorsa demekki o satıra gelemiyor. Bunun yanı sıra procedurelerin de değer döndürme özelliği vardır isterseniz onu da kullanabilirsiniz bir değer döndürmek istiyorsanız.

Verdiğiniz sp örneğinde neyi sonuç olarak almak istediğinizi açıkcası pek anlayamadım ben.
Misafir

naile hanım ilk önce cevabınız için teşekkür ederim

Mesaj gönderen Misafir »

Naile hanım önce cevabınız için teşekkür ederim. Bu sp'nin benim çıktısını delphiye aktarmam gerekiyor ama bunu beceremedim...Database durumu aşağıdaki gibi
A03-0020-STD 024-02010-12 3.00000000
A03-0020-STD 023-01016-11 3.00000000
A03-0020-STD 024-02013-12 1.00000000
A03-0020-STD 028-20210-03 1.00000000
A03-0020-STD 029-20340-03 1.00000000
A03-0020-STD 022-10300-02 1.00000000
A03-0020-STD 026-10150-01 1.00000000
A03-0020-STD 032-30010 1.00000000
A03-0020-STD MF2520-0014-01 1.00000000
A03-0020-STD 020-1025-03 1.00000000
A03-0020-STD BB25-02010-01 1.00000000

Böyle 60 binden fazla satır kayıdı var ve bu sp parent child ilişkisi kurarak ürün ağacını dallandırıp bana mesaj çıktısı veriyor....Fakat bu sp nin çıktısını ben delphiye aktarmayı beceremedim...Yardımınıza ihyitacım var...Şimdiden teşekkür ederim ilgilendiğiniz için...Allah razı olsun...
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Re: naile hanım ilk önce cevabınız için teşekkür ederim

Mesaj gönderen naile »

Mx500 yazdı:A03-0020-STD 024-02010-12 3.00000000
A03-0020-STD 023-01016-11 3.00000000
A03-0020-STD 024-02013-12 1.00000000
A03-0020-STD 028-20210-03 1.00000000
A03-0020-STD 029-20340-03 1.00000000
A03-0020-STD 022-10300-02 1.00000000
A03-0020-STD 026-10150-01 1.00000000
A03-0020-STD 032-30010 1.00000000
A03-0020-STD MF2520-0014-01 1.00000000
A03-0020-STD 020-1025-03 1.00000000
A03-0020-STD BB25-02010-01 1.00000000
Yani siz Query Analyzer' da

Kod: Tümünü seç

exec expand..
yazdığınızda size bu çıktıyı veriyor?

Eğer öyle ise delphide bir AdoQuery'nin stringsine bu kodu yazın. Open ettiğinizde size sonuç döndürecektir zaten.
Misafir

selam

Mesaj gönderen Misafir »

evet örneğin query analyzer de şöyle bir komut girdiğimde evet dediğiniz gibi exec expand 'A03-0020-00001' ile bir çıktı alıyorum....

Sizin dediğiniz gibi database bağlandım adoquery tstrings ine exec expand yazdım ve söle bir hata aldım....Procedure 'expand' expects parameter '@current', which was not supplied.

Benim tam olarak yapmak istediğim edit boxa yazdığım ürün adının ürün ağacını gride vs. kullanabileceğim bir yere almak istiyorum naile hanım...
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

yazdığını kodu buraya da yazar mısınız? Parantez kullanmamanız lazım ondan dolayı hata veriyor olabilir.
Misafir

selam

Mesaj gönderen Misafir »

Arkadaşlar ado da sp yi adoquery ile nasıl çağırıyoruz ben adonun direk sql yazıyorum ama hata veriyor simdiye kadar hiç böle bir şey yapmamıştım...Adoquery ile eğer sp çağırılabiliyorsa nasıl çağırılıyor...Yardımcı olursanız çok memnun olacağım...
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Çalıştıracağınız sp bu soruda verdiğiniz sp mi? Yani çalıştırdığınızda size bir takım değerler döndürüyor mu yoksa sadece sp içinde bazı insert update v.b. işler mi yapıyorsunuz? Eğer ben sonuç almak istiyorsam ADO Query kullanıyorum yapacağınız şey herzamanki kullanım şekli:

Kod: Tümünü seç

AQuery.Close;
AQuery.SQL.Clear;
AQuery.SQL.Add('Exec procedure_adi degeri');
AQuery.Open;
Yok eğer sadece sp çalıştıracaksam ozaman ADOQuery hiç kullanmıyorumıyorum ADOConnectionun excute özelliğini kullanıyorum

Kod: Tümünü seç

AConnection.Execute('Exec procedure_adi degeri')
Misafir

selam

Mesaj gönderen Misafir »

Naile hanım yanlız değer olan bölümü ben edit kutusuna yazdığım veriyi değer olarak kabul etmesini istiyorum....
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Kod: Tümünü seç

AConnection.Execute('Exec procedure_adi ' +Edit1.Text);
Misafir

söle bi hata alıyorum bu kullanımda

Mesaj gönderen Misafir »

raised exception EoleException with message 'Line 1: Incorrect syntax near '-". Process stopped. Use Step or Run to continue bi hata alıyorum....


[/code]dm.ADOQuery1.Close;
dm.ADOQuery1.SQL.Clear;
dm.ADOQuery1.SQL.Add('Exec expand2 ' +edit1.text);
dm.ADOQuery1.Open;
Arkatdaşlar bu konu hakkında yardım edebilecek bir arkadaş....

Teşekkürler
Cevapla