SQL Prosedürler (Stored Procedures)

CourierC

Kıdemli Üye
16 Ağu 2010
2,655
0
C:\Windows
Prosedür Nedir?
Prosedür, bir işlevi yerine getirmek için yazılan kodların bir paket içerisinde tutulmuş halidir.

View ile Prosedür arasındaki fark?
View dışarıdan parametre alamaz, prosedür alabilir.
View içerisinde sadece sonuç kümesi döndürecek kodlar yazılır.

Prosedür Neden Oluşturulur?
Sıkça yapılan işlemlerin bir defa yazılarak program akışına göre tekrar tekrar kullanılmasını sağlamak amacı ile oluşturulur.

Prosedür Neden Tercih edilir?
Performansı arttırır.
İlk kez çalıştırıldığında derleme yapılır. Daha sonra çalıştırıldığında derlenmiş hali çalıştırıldığından kod oldukça hızlı çalışır.

Prosedür Nasıl Oluşturulur?
Kod:
CREATE PROC prosedür_adı
AS
T-SQL ifadeleri

Çalıştırmak için:

Kod:
EXECUTE prosedür_adı
Prosedür üzerinde değişiklik yapmak için ALTER, silmek için DROP komutlarını kullanacağız.

Örnek:

Kod:
CREATE PROC GetProductCategory
AS
SELECT ProductName, CategoryName
FROM Products as p
JOIN Categories as c
ON c.CategoryID = p.CategoryID
execute GetProductCategory

Örnek:

Kod:
CREATE PROC GetProductById
(
@id int
)
AS
SELECT * FROM Products WHERE ProductID = @id
execute GetProductById 2

Bir Procedure Örneği

Soru: Kayıt eklemeden ilgili tabloya gidip ürün var mı diye kontrol edilecek. Ürün mevcutsa ID’sini geri döndürecek. Ürün mevcut değilse kayıt işlemi gerçekleştirilecek.

Kod:
create proc InsertProduct
(
@productname nvarchar(40),
@unitprice money,
@unitsInstock int
)
as
declare @productId int
if exists (select * from Products where ProductName=@productname)
begin
select @productId=ProductID from Products where ProductName=@productname
print('Eklemek İstediğiniz '+@productname +' adlı ürünün ID''si '+cast(@productID as nvarchar(5)))
end
else
begin
insert into Products (ProductName,UnitPrice,UnitsInStock) values (@productname,@unitprice,@unitsInstock)
set @productId=SCOPE_IDENTITY()
return @productId
end
exec InsertProduct 'Bilgisayar', 3000, 12

SCOPE_IDENTITY() ile ilgili:

Açılmış olan bağlantıda ve sorgunun çalıştığı scope’ta son üretilen identity’yi döndürür.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.