Bu yazım daha önceki yazım olan Stored Procedure işlemlerinin devamı niteliğinde olan bir yazıdır. Veritabannı işlemlerine devam etmekteyiz. Bu seferki konularımız update ve delete işlemleri olacak. Aslında sql işlemlerinde update ve delete işlemleri ayrı ayrı olarak görünse de update işlemi ile de delete işlemini gerçekleştirebilmekteyiz.
Stored Procdure Update
Update işlemini sql olarak yazdıktan sonra aşağıdaki gibi bir Stored Procedure oluşturuyoruz. Buradaki işlemde parolamızı yenileme işlemini gerçekleştiriyoruz. Newpassword isimli parametremizi password isimli parametreye SET ederek güncelleme işlemi yapıyoruz. Bu sql sorgusunu aşağıdaki gibi stored procedure çeviriyoruz. Böylece daha sonra göreceğimiz sorguları çağırma işlemi yaparken tekrar tekrar yazmamıza gerek kalmayacak.
USE [berkaratcom]
GO
CREATE PROCEDURE [dbo].sp_Update
@ad nvarchar(50),
@soyad nvarchar(50),
@email nvarchar(50) ,
@newpassword nvarchar(50)
AS
BEGIN
SET NOCOUNT ON;
UPDATE tbl_test
SET password=@newpassword
WHERE
ad=@ad and
soyad=@soyad and
email=@email
END
Daha sonra yazmış olduğumuz procedure doğru çalışıp çalışmadığını kontrol etmek için aşağıdaki sql sorgusunu kullanabiliriz veya daha önce dediğim gibi execute kısmından da test edebiliriz.
USE [berkaratcom]
GO
DECLARE @return_value int
EXEC @return_value = [dbo].[sp_update]
@ad ='Berk',
@soyad = 'Arat',
@password = '123456',
@newpassword = '0012300',
@email = '[email protected]'
SELECT 'Return Value' = @return_value
GO
Stored Procedure Delete
Silme işlemi için de update işlemi gibi benzer bir yapıya sahiptir. Genellikle drop komutuyla karıştırılmaktadır. Ancak drop tamamen tablo üzerinde işlem yaparken delete ise sadece şartı sağlayan satırı silmektedir.
Aşağıda belirttiğimiz Stored procedure örneğinde email adresi bizim verdiğimiz mail ile eşleşen üyenin kaydını tablodan silmektedir.
USE [berkaratcom]
GO
CREATE PROCEDURE [dbo].[sp_delete]
@ad nvarchar(50),
@soyad nvarchar(50),
@email nvarchar(50)
AS
BEGIN
SET NOCOUNT ON;
Delete tbl_uyebilgi
WHERE
ad=@ad and
soyad=@soyad and
email=@email
END
Bu işlemi yaptıktan sonra yazdığımız sorgunun doğruluğunu kontrol etmek için aşağıdaki sorguyu execute ediyoruz ve kaydımızın silindiğini görüyoruz.
USE [berkaratcom]
GO
DECLARE @return_value int
EXEC @return_value = [dbo].[sp_delete]
@ad = 'Berk',
@soyad = 'Arat',
@email = '[email protected]'
SELECT 'Return Value' = @return_value
GO
Bu iki yazımdaki örnekleri daha sonra C# üzerinde kullanacağımız programlarda çağıracağız. Böylece C# üzerinden stored procedureler kullanarak veritabanı işlemleri gerçekleştirebileceğiz. Program üzerinde yazılacak olan sıfırdan sorgular performans açısından çok yetersiz kalmaktadır. Bunun yanı sıra dinamik bir yapının oluşmasının da önüne geçmektedir. Genelde projelerde stored procedureler kullanılmakta ve bunlar temel rol almaktadır.
Örneğin bir monitoring yani takip programı yazıldığını düşünürsek ve sürekli veri tabanına bilgi akışının olduğu bir senaryoyu ele alalım. Bu senaryoda program içerisinde farklı threadler farklı tablolara bilgi yazacak update edecek veya select işlemlerini yapacaklar. Eğer program üzerinden sorgular gönderilirse sorgulama işlemi c# üzerinde yapılmış olacak. Ancak stored procedureler kullanıldığı takdirde iş yükü paylaşılmış olacak ve c# üzerinden sadece parametreler gönderilecek sorgulama kısmı sql server üzerinde gerçekleşecektir.























