Forum

sql trigger hk.
 
Bildirimler
Hepsini Temizle

[Çözüldü] sql trigger hk.

Uğur TAŞLI
(@tslugr)
Üye

 

Merhaba arkadaşlar;

Mail göndermesi için bir trigger yazdım, Mikro diye bir program üzerinden 'Depolar arası sevk fişi' girdiğimiz alanda birden çok satır girip kaydetmekteyiz bunları trigger üzerinden mail olarak göndermekte buraya kadar sorun yok sorun her satırı ayrı ayrı mail gönderiyor ve en sonunda toplu olarak geliyor misal 3 satırlık mikrodan ürün girdim ve kaydet dediğimde toplam 3 tane mail gelmekte en son gelen 3 mail da toplam ürünlerin listesi geliyor bunu tek mail üzerinden nasıl yapabilirim ?

 

Kodlarım aşağıda ki gibidir;

image
1
2
Alıntı
Konu başlatıcı Gönderildi : 10/05/2021 17:44
Uğur TAŞLI
(@tslugr)
Üye

satır sayısını hesaplayıp en son mail gönderme işlemi bu kodun içinde yapabilir miyiz ? misal @@ROWCOUNT gibi

CevapAlıntı
Konu başlatıcı Gönderildi : 10/05/2021 17:54
Serkan Ateş
(@SerkanAtes)
Üye

Günaydın;

if(@sth_cins=6) satırındaki koşulunuzu düzenlemelisiniz. Sistemi transaction'ın tamamlanıp ilgili kayıtların oluştuğu bilgisine yönlendirmelisiniz. Sonrasında oluşmuş olan kayıtlardan istediğiniz veri setini çekip şekillendirebilirsiniz.

İyi çalışmalar.

NOT: Bu tarz fonksiyonların veritabanı katmanında yönetilmesi önerilen bir yöntem değildir.

CevapAlıntı
Gönderildi : 11/05/2021 07:59
Mehmet Sucu
(@mehmetsucu)
Üye

Merhaba @tslugr

sp_send_dbmail de @query parametresine sorgunu yazıp gönderebilirsin.

EXEC msdb.dbo.sp_send_dbmail
@recipients = '[email protected]',
@query = 'SELECT Adi, COUNT(*) Sayi
FROM Test
GROUP BY Adi
HAVING COUNT(*) > 1' ,

@subject = 'deneme'

Mehmet SUCU
HBYS Yazılım Uzmanı
[email protected]
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

CevapAlıntı
Gönderildi : 11/05/2021 08:35
Uğur TAŞLI
(@tslugr)
Üye

Merhaba

Maalesef düzgün bir sonuç alamadım

Şu şekilde yapsam acaba karşı tarafta nasıl karşılayıp mail göndere bilirim sizce ?


5

yani burada post yaptığında nasıl karşılayıp mail olarak göndere bilirim ?

 

Json çıktısı şu şekilde

[{"seri""YAĞ.003","sto_isim"12.0000,"hedef""Merkez depo"},{"seri""DERİ KEMER","miktar":34.0000,"hedef""Merkez depo"},{"seri""ISLAK MENDİL","miktar":34.0000,"hedef""Merkez depo"}]

CevapAlıntı
Konu başlatıcı Gönderildi : 11/05/2021 21:03
Uğur TAŞLI
(@tslugr)
Üye

Merhaba;

Ömer ÇOLAKOĞLU Hocamız sağ olsun konuyla ilgili yardımcı oldu ve sorunumuzu çözdü, kendisine çok teşekkür ediyorum ilgi ve alakasından dolayı sağ olun var olun iyi ki varsınız. Teşekkürler.

CevapAlıntı
Konu başlatıcı Gönderildi : 14/05/2021 00:52
Serkan Ateş
(@SerkanAtes)
Üye

Merhaba;

Ömer ÇOLAKOĞLU'nun başlık altında herhangi bir önerisi bulunmuyor. Çözümü detaylı bir şekilde burada da paylaşırsanız başlığa ulaşan arkadaşların da istifade etmesini sağlamış olursunuz. Bu şekilde geri bildiriminiz daha fazla değer kazanır. Teşekkürler.

CevapAlıntı
Gönderildi : 14/05/2021 09:41
Hakan Uzuner
(@hakanuzuner)
Kıdemli Üye Yönetici

Selamlar, Ömer hocam sağ olsun el atmış ancak evet çözüm paylaşabilirseniz herkese yardımcı olur.

Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

CevapAlıntı
Gönderildi : 14/05/2021 11:09
Uğur TAŞLI
(@tslugr)
Üye

Merhabalar;

Konuyu ve çözümü şu şekilde özetleyeyim

İlk olarak yapmış olduğumuz trigger  ile bu işlemin olmayacağı anlaşılmıştır, nedeni ise her satırda ayrı insert işlemi yaptığı için her insert işleminde satırları ayrı ayrı mail atmakta idi ondan dolayı yeni bir tablo oluşturuldu STOK_HAREKETLERI_MAIL adında bunun içinde [DATE_], [STH_EVRAKNO_SERI], [STJ_EVRAKNO_SIRA], [MAILSENT], [MAILSENDDATE] adında alanlar oluşturuldu ve bu alana trigger üzerinden her satırın aynı numaralama kolonu yani sth_evrakno_seri STOK_HAREKETLERI_MAIL tablosunda STJ_EVRAKNO_SIRA kolonuna INSERT INTO yapılarak ve MAILSENT False değerleri atanarak işlem yapıldı sonra Stored Procedure, den CREATE PROCEDURE açarak STOK_HAREKETLERI_INSERT_MAIL mail gönderme kodu burada hazırlandı burada sadece MAILSENT False olanları ağılayıp True ye çevirip bilgileri o şekilde Update işlemi yapmakta en son olarak ta Job üzerinden 5dk ara ile Stored Procedure deki STOK_HAREKETLERI_INSERT_MAIL kontrol ederek MAILSENT False olan alanı kontrol edip mail gönderek bu işi bu şekilde halletmiş oldu.

Umarım anlaşılmıştır ve doğru anlatmıştır diye düşünüyorum, herk eze yardımlarından dolayı teşekkürler. Özelliklede Ömer hocamıza teşekkür ediyorum.

CevapAlıntı
Konu başlatıcı Gönderildi : 14/05/2021 14:51
Hakan Uzuner beğendi
Serkan Ateş
(@SerkanAtes)
Üye
Gönderen: @SerkanAtes

Günaydın;

if(@sth_cins=6) satırındaki koşulunuzu düzenlemelisiniz. Sistemi transaction'ın tamamlanıp ilgili kayıtların oluştuğu bilgisine yönlendirmelisiniz. Sonrasında oluşmuş olan kayıtlardan istediğiniz veri setini çekip şekillendirebilirsiniz.

İyi çalışmalar.

NOT: Bu tarz fonksiyonların veritabanı katmanında yönetilmesi önerilen bir yöntem değildir.

Bende benzer bir çözüme sizi yönlendirmiştim ancak Ömer bey kod tarafında da destek verdi sanırım. Geri bildiriminiz için teşekkürler. 

 

CevapAlıntı
Gönderildi : 14/05/2021 15:01
Paylaş: