none
SQL QUERY SELECT HER BİR SATIR İÇİN İŞLEM YAPTIRMA RRS feed

  • Genel Tartışma

  • Merhaba,

    Select ile yapılan bir sorguda çıkan satır değerlerini her bir satır için örnek;

    SELECT t.alan1, t.alan2, t.alan3 FROM t

    gibi bir sorguda 

    001     ABC    100

    002     XZY    200

    gibi sonuç çıkıyor, her bir satır için örnek mail göndereceğim  ancak bu satır değerlerini değişkenlere atamam gerekiyor, birde sorguda her satır için olması gerek, yoksa sorgunun sadece son satırı için işlem yapar gibi birşeyler okudum internette.

    Konu hakkında bilgisi olan varmı. MAIL gönderme işlemini biliyorum sadece oradaki değişkenleri sorgudaki değerler ile eşleştirmem gerekli.

    Teşekkürler.

    19 Eylül 2016 Pazartesi 10:58

Tüm Yanıtlar

  • Herhalde maili dogrudan SQL sorgunda yapmayacaksin (xp ile ya da CLR kod ile olabilen birsey ondan ne yapip yapmayacagindan emin degilim). Eger dogrudan SQL sorgunda yapacak isen o zaman, ornegin cross apply kullanabilirsin. Muhtemelen orada yapmayacaksin. O zaman basitce aldigin her deger icin mail rutinini cagirirsin (dikkat et, her email arasinda bekleme yapman gerekli). Ornek:

    var kayitlar = from t in db.T
                   select t;
    // ya da daha kisa:
    var kayitlar = db.T;
    
    // sonra foreach ile maillerini gonder
    foreach( var t in kayitlar )
    {
       MailGonder( t.alan1, t.alan2, t.alan3 );
    }
    gibi. 

    19 Eylül 2016 Pazartesi 11:05
  • DECLARE @tab CHAR(2) = CHAR(9)
    DECLARE @bodymsg NVARCHAR(MAX)
    SELECT  @bodymsg = 'MERHABA,
    BU RAPOR OTOMATİK OLARAK '  + CONVERT(VARCHAR,GETDATE(),103) +' ' + 'TARİH VE ' + CONVERT(VARCHAR,GETDATE(),108) + ' SAATTE OLUŞTURULMUŞ VE GÖNDERİLMİŞTİR.'

    EXEC msdb.dbo.sp_send_dbmail
        @profile_name = 'MailGonder',
        @recipients = 'serkan@gmail..com',
        @query = 'SQL QUERY KODUMU BURAYA YAZIYORUM' ,
        @subject = 'OTOMATIK EMAIL BILDIRIM.,
        @body = @bodymsg,
        @attach_query_result_as_file = 1,
        @query_attachment_filename='RAPOR.csv',
        @query_result_separator=@tab,
        @query_result_no_padding=1

    ----------------------------------------------------------------------------------------------------

    SQL üzeriden yazdığım kodu çalıştırıyorum, ve mail olarak gönderiyorum.

    Normalde bu mailde query tam bütün olarak cvs formatında gönderiliyor.

    Ama ben Kod, Ünvan, Bakiye, Mailadresi olan sonuç dizisindeki her bir satırı otomatik olarak böyle bir kod ile satır bazında gönderim yapabilmek istiyorum.

    Aslında bu kodu Vbasic Console ile kodu içine yazıp zamanlanmış görevlerden saati gelince çalıştırıp gönderiyorum.

    Teşekkürler.

    19 Eylül 2016 Pazartesi 19:52