Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
MSSQL den Xml post etmek
#1
MSSQL den Xml post etmeye ne dersiniz ?

Xml ile sms post etmek için yazdığım kodları direk paylaşıyorum. Firmadan firmaya xml yapısı değişe bilir

örnek xml yapısı : 
<sms>
	<kno>[kullanicino]</kno>
	<kulad>[kullaniciAdi]</kulad>
	<sifre>[sifre]</sifre>
	<gonderen>[baslik]</gonderen>
		<telmesajlar>
			<telmesaj>
			<tel>90[telefon]</tel>
			<mesaj>[mesaj]</mesaj>
		</telmesaj>
	</telmesajlar>
</sms>



create Procedure [dbo].[Sp_SmsYollamaDirek]
	@id varchar(100) = '',
	@telefon varchar(15) = '',
	@Ad varchar(100) = '',
	@Soyad varchar(100) = '',
	@Mesaj varchar(200) output
as
SET NOCOUNT ON
declare @Object int,
@xmmlformati varchar(max)
----------------------------
declare @sms_firma_kullanici_adi varchar(50)
declare @sms_firma_sifre varchar(50)
declare @sms_firma_baslik varchar(50)
declare @sms_firma_kullanici_no varchar(50)
declare @sms_firma_url varchar(50)
declare @sms_firma_xml varchar(max)
declare @amac varchar(50)

select top(1)
@sms_firma_kullanici_adi=Firma_UserName,
@sms_firma_sifre=Firma_Password,
@sms_firma_url=Firma_Url,
@sms_firma_baslik=Firma_Baslik,
@sms_firma_kullanici_no=Firma_Kodu,
@sms_firma_xml=Firma_Yapi  
from Sms_Firma where Durum='1'
		set @Mesaj=[dbo].[SmsTrKarakter] (@Mesaj)
		set @Ad=[dbo].[SmsTrKarakter] (@Ad)
		set @soyad=UPPER(@soyad)
		set @soyad=[dbo].[SmsTrKarakter] (@soyad)
		set @telefon =REPLACE(@telefon,' ','')
		set @telefon =REPLACE(@telefon,')','')
		set @telefon =REPLACE(@telefon,'(','')
		set @telefon =REPLACE(@telefon,'-','')
		set @telefon =REPLACE(@telefon,'_','')
		set @mesaj = REPLACE(@mesaj COLLATE Turkish_CS_AS,'[ad]',ltrim(rtrim(@Ad))+' ')
		set @mesaj = REPLACE(@mesaj COLLATE Turkish_CS_AS,'[soyad]',ltrim(rtrim(@Soyad))+' ')
		set @mesaj = REPLACE(@mesaj COLLATE Turkish_CS_AS,'[telefon]',@telefon)
		set @sms_firma_xml = REPLACE(@sms_firma_xml COLLATE Turkish_CS_AS,'[kullaniciAdi]',@sms_firma_kullanici_adi)
		set @sms_firma_xml = REPLACE(@sms_firma_xml COLLATE Turkish_CS_AS,'[sifre]',@sms_firma_sifre)
		set @sms_firma_xml = REPLACE(@sms_firma_xml COLLATE Turkish_CS_AS,'[baslik]',@sms_firma_baslik)
		set @sms_firma_xml = REPLACE(@sms_firma_xml COLLATE Turkish_CS_AS,'[telefon]',@telefon)
		set @sms_firma_xml = REPLACE(@sms_firma_xml COLLATE Turkish_CS_AS,'[mesaj]',@mesaj)
		set @xmmlformati =@sms_firma_xml
if (@Mesaj!='')
	begin
		Exec master..sp_OACreate 'MSXML2.ServerXMLHTTP', @Object OUTPUT;
		Exec master..sp_OAMethod @Object, 'open', null, 'POST', @sms_firma_url, 'false'
		Exec master..sp_OAMethod @Object, 'setRequestHeader', null, 'Content-Type', 'application/text'
		Exec master..sp_OAMethod @Object,'send', null, @xmmlformati
		update Sms_Gecmis set Durum='1' where id=@id
	end


Rep Puanı vermeyi unutmazsanız sevinirim Smile))
Cevapla
#2
Eline sağlık çok güzel kullanışlı bir yapı.. Bende ek bir bilgi vereyim.. MSSQL 2016 sürümünden itibaren JSON desteği geldi.. Belki birilerine lazım olur..
Detaylı bilgi için tıklayın.
Amatör Küme Bilgisayar Programcısı
WWW
Cevapla
#3
Ben 2012 da bunu yaptım o zaman json felan yoktu Big Grin ha istenirse zaten json olarakda yapı değiştirlebilir ama MSSQL kendi içine alması çok daha mükemmel oldu.
Cevapla
#4
@esrehmaan  sp_OACreate prosedürü için "Creates an instance of an OLE object." ifadesi yer alıyor.

Yani OLE üzerinden erişim sağlanabilen bir programa, dilersem SQL Server içinden sp_OA.. ile başlayan prosedürlerle,
OLE sınıflarının sağladığı methodlar ve özellikler dahilinde, kullanabilmenin mümkün olduğunu anlamamız gerekiyor değil mi ?

Öyleyse çektiğimiz veriyi dilersek, excel , word yada OLE üzerinden erişim sağlanan başka bir programa aktarabiliriz.
Yada aynı şekilde OLE erişimi sağlayan herhangi bir program ile, SQL server içinden iletişim kurup, çektiğimiz veriyi SQL server içersine yazabiliriz anlamı mı çıkıyor ?
One of the major software engineering challenges is managing change.
Cevapla
#5
(26-12-2016, Saat: 10:04)kimimben Adlı Kullanıcıdan Alıntı: @esrehmaan  sp_OACreate prosedürü için "Creates an instance of an OLE object." ifadesi yer alıyor.

Yani OLE üzerinden erişim sağlanabilen bir programa, dilersem SQL Server içinden sp_OA.. ile başlayan prosedürlerle,
OLE sınıflarının sağladığı methodlar ve özellikler dahilinde, kullanabilmenin mümkün olduğunu anlamamız gerekiyor değil mi ?

Öyleyse çektiğimiz veriyi dilersek, excel , word yada OLE üzerinden erişim sağlanan başka bir programa aktarabiliriz.
Yada aynı şekilde OLE erişimi sağlayan herhangi bir program ile, SQL server içinden iletişim kurup, çektiğimiz veriyi SQL server içersine yazabiliriz anlamı mı çıkıyor ?

Merhaba, 
Yanlış hatırlamıyorsam bazı kısıtlamalar vardı..
Alternatif bir çözüm isterseniz CLR olabilir. Dotnet ile hazılanan bir DLL' e TSQL üzerinden erişim imkanı sunuyor..
Amatör Küme Bilgisayar Programcısı
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Lightbulb Mssql ve MS Server Upgrade'i arikeness 1 819 01-08-2025, Saat: 11:22
Son Yorum: maxpaynen
  MSSQL Data downgrade (Alt sürüme veri aktarma) işlemleri adelphiforumz 0 1.218 23-03-2023, Saat: 11:13
Son Yorum: adelphiforumz
  MSSQL eş zamanlı yazma ve okuma kontrolü (Çözüldü) adelphiforumz 5 3.315 31-12-2021, Saat: 13:04
Son Yorum: adelphiforumz
  MSSQL TableType tipinde parametre nasıl geçilir? adelphiforumz 28 12.346 29-12-2021, Saat: 11:37
Son Yorum: mrmarman
  MSSQl üzerinde çalışan bir sorgunun durumu hakkında bilgi almak. Bay_Y 5 3.750 21-09-2021, Saat: 11:26
Son Yorum: Bay_Y



Konuyu Okuyanlar: 1 Ziyaretçi