Makale Özeti

Visual Basic içerisinden SQL Stored Procedure kullanımı

Makale

İlk bakışta bu ikisi ayrı ayrı şeyler neden aynı başlık altında topladınız diyebilirsiniz. Bu yazıda öncelikle, SQL SERVER üzerinde çalışan stored procedure’ ler (Saklı Yordamlar) nedir onu anlatmaya çalışacağım. Ardından bu yordamların Visual Basic içerisinden nasıl kullanılabileceğine ilişkin bir örnek vereceğim.

Stored Procedure’ lar

Burada Sql Server üzerinde hazır olarak gelen Sp’ lerden kısaca bahsedeceğim. Bunlar sistem sp’ leri olarak adlandırılır ve sql server’ daki veritabanları, kullanıcılar vs. hakkında bilgi verebileceği gibi bazı parametrelerde de değişiklik yapabilmemizi sağlayacağı için sistem yöneticileri için büyük kolaylıklar sağlar. Örneğin Sql Query Analyzer üzerinde işletilecek

EXEC dbo.sp_databases

komutu bize server üzerinde ki veritabanlarının adlarını verir.

Sp’ ler aslında derlenmiş Sql deyimleridir. Kullanıcının değişken tanımlamasına, sql cümlelerinin şartlara bağlı olarak çalıştırmasına izin verdiği gibi kullanıcının sql’ e ait güçlü programlama özelliklerini de kullanabilmesini de sağlar. Bu procedure’ lar veritabanı içinde saklanır ve herhangi bir uygulama tarafından çağrılıp çalıştırılabilir. Sp’ lar tıpkı bir program algoritması gibi bir akışa sahiptirler. Dışarıdan parametre alıp yine dışarıya bir veya birden fazla parametre gönderebilirler. Genel olarak Sp’ lerin avantajları şunlardır.

  • Aynı sql ifadesini farklı parametrelerle çalıştırabilirsiniz.
  • Bir Sp içinden başka bir sp’ yi çalıştırabilirsiniz.
  • Diğer sql ifadelerinden daha hızlı çalışırlar çünkü sql server üzerinde derlenmiş durumda tutulur ve kullanılırlar.
  • Sp içinde yapılan işlemler hakkında durum bilgisi gönderebilirler.
  • Network trafiğini azaltırlar.

Visual Basic içinden kullanım

İsterseniz bu konuda bir örnek verelim.

Aşağıda ki alanlara sahip bir Tablomuz olsun.

Table1

Column Name

Data Type

Lenght

Cinsi

Varchar

10

Miktar

Int

4

Satis_Fiyati

Int

4

Tablonun içinde ki değerler de aşağıda ki gibi olsun.

Cinsi

Miktar

Satis_Fiyati

Elma

5

1000

Armut

3

2000

Elma

2

1100

Elma

1

1500

Armut

2

2200

Elma

10

1800

Şimdi Tablodan Cinsini bizim seçeceğimiz bir ürünün toplam satış miktarı,tutarı ve ortalama satış fiyatını bulalım. Bunun için aşağıdaki Sp’ yi Sql Server içinde oluşturuyoruz.

CREATE PROCEDURE S_Deneme

@Cinsi Varchar(10),

@Toplam_Miktar int OUTPUT,

@Toplam_Tutar int OUTPUT,

@Ortalama_Satis_Fiyati int OUTPUT

as

SELECT @Toplam_Miktar=sum(Miktar) , @Toplam_Tutar=sum(Miktar * Satis_Fiyati)

FROM dbo.Table1

WHERE (Cinsi = @Cinsi)

set @Ortalama_Satis_Fiyati=@Toplam_Tutar/@Toplam_Miktar

GO

Bu yordamın en başında procedure ismi belirtiliyor, ardından giriş ve çıkış parametreleri belirtiliyor. Ardından Sql cümlesi ile bulunan sonuçlar çıkış parametrelerine aktarılıyor.

Şimdi bu procedure’ yi Visual Basic içerisinden nasıl çalıştıracağımıza bakalım.

Gerekli ADO Referanslarını projemize ilave ettikten sonra, Form üzerine bir adet Command Button ekleyip aşağıda ki kodu yazalım.

Option Explicit

Private Sub Command1_Click()

Dim Cn As Connection ‘Kendi Connection ve Command nesnelerimizi oluşturuyoruz.

Set Cn = New Connection

Dim Cm As Command

Set Cm = New Command

Dim Param(3) As Parameter

Cn.Open "PROVIDER=SQLOLEDB;" & _ ‘Veritabanına bağlanılıyor.

"Initial Catalog=DATABASE1;" & _

"User Id=sa;" & _

"Data Source= SERVER1"

Cm.ActiveConnection = Cn

Cm.CommandType = adCmdStoredProc ‘Command nesnesinin Strored Procedure Tipinde olduğu belirtiliyor.

Cm.CommandText = "S_Deneme" ‘Stored Procedure’ nin adı belirtiliyor.

‘Aşağıda parametrelerin hangi değişken tipinde olduğu ve giriş yada çıkış paramertesi oldukları belirtiliyor.

Set Param(0) = Cm.CreateParameter("@Cinsi", adVarWChar, adParamInput, 10)

Set Param(1) = Cm.CreateParameter("@Toplam_Miktar", adInteger, adParamOutput)

Set Param(2) = Cm.CreateParameter("@Toplam_Tutar", adInteger, adParamOutput)

Set Param(3) = Cm.CreateParameter("@Ortalama_Satis_Fiyati", adInteger, adParamOutput)

‘Prametreler Command nesnesine ekleniyor.

Cm.Parameters.Append Param(0)

Cm.Parameters.Append Param(1)

Cm.Parameters.Append Param(2)

Cm.Parameters.Append Param(3)

Giriş parametresini değeri “Elma” olarak set ediliyor.

Param(0).Value = "Elma"

Command nesnesi üzerinden Stored procedure çalıştırılıyor.

Cm.Execute

‘Sonuçlar ekranda gösteriliyor.

MsgBox "Ürün Adı : " & Cm(0) & vbCrLf & _

"Toplam Miktar : " & Cm(1) & vbCrLf & _

"Toplam Tutar : " & Cm(2) & vbCrLf & _

"Ortalama Satış Fiyatı : " & Cm(3)

End Sub

Bu kodda ise Sıra ile

  • Bağlantı tanımı yapılıp Server’ a bağlanılıyor. (SERVER1)
  • Sp’ yi kullanabilmek için bir Command nesnesi tanımı yapılıyor.
  • Sp içinde kullanılacak parametreler ve özellikleri tanımlanıyor.
  • Sp’ ye gönderilen Input parametresinin değeri belirleniyor.
  • Ve Sp çalıştırılıyor.

Sonuç :

Görüldüğü gibi burada sadece sp’ ni adı ve parametreleri Sql Server’ a gönderiliyor. Sql Server bu parametreler ile Sp’ yi çalıştırıyor. Ve çıkış parametrelerini bizim programımıza gönderiyor.

Burada verdiğim örnek aslında basit bir işlemi gerçekleştiriyor. Ancak Sp içerisinde bir çok programlama fonksiyonunu kullanabileceğiniz için aslında Sp’ ler program yazımına önemli avantajlar getiriyor. Sp’ ler sayesinde tüm hesaplamalar ve diğer veritabanı işlemleriniz daha hızlı ve anlaşılır şekilde Sql Server üzerine taşınıyor. Bununla birlikte isterseniz Sp içinde Transaction da kullanabilirsiniz.

Oluşturduğumuz Sp’ler sayesinde artık daha sade veritabanı programları yazabiliriz. Böylece Visual Basic’ de sadece programımızın arayüzü ile uğraşabiliriz. Bu yazımda Stored Procedure ların oluşturulması ve Visual Basic içinden kullanımı ile ilgili basit bir örnek vermeye çalıştım. Bu örneği rahatlıkla geliştirebilirsiniz.

Hayırlı Çalışmalar Dilerim.

Vedat ÇAVUŞO?LU