Prosedürler
Northwind
-------------------PRODESURLER------------------------ /* Stored Procedure(Saklı yordam) Metot insert,update vs. sql de saklanır güvenlik performans network'teki veri ön belleklenmiş execution plan */ ---------------procedure örnekleri----------------------- --ddl (data definition language) -- sp ile de başlayabilir. create procedure up_CalisanlariGetir as select FirstName,LastName from Employees exec up_CalisanlariGetir --yapılan proc yanlış olursa alter ile düzeltilebilir. --Kategorilerin adını ve açıklamasını getiren bir proc create procedure up_KategorileriGetir as select CategoryName, [Description] from Categories exec up_kategorilerigetir --parametre olarak id'si verilen müşterinin siparişlerinin tarihlerimi listeleyen bir proc yazalim. create proc up_TarihleriGetir ( @CustID char(5) ) as select OrderDate from Orders where CustomerID=@CustID exec up_TarihleriGetir 'ALFKI' --parametre olarak CategoryID ve EmployeeID değerlerini alıp o kategorideki o çalışanın sattığı ürünlerin adını ve satılan miktarlarını getiren proc alter proc up_UrunAdet ( @CatID int, @EmpID int ) as select p.ProductName,od.Quantity from Products p join [Order Details] od on p.ProductID=od.ProductID join Orders o on o.OrderID=od.OrderID where p.CategoryID=@CatID and o.EmployeeID=@EmpID order by p.ProductName exec up_UrunAdet 1,1 --yeni kategori ekleyen proc. --bu proc ekleyen kaydın id değerini geriye dondursun create proc up_KategoriEkle ( @CatName varchar(15) ) as insert into Categories(CategoryName) values (@CatName) --@@identity son eklenen satırın ID sini verir. return @@identity --değişken declare ile oluştururlur declare @id int exec @id=up_KategoriEkle 'Yeni kategori' select @id as 'Eklenen Satırın ID' --calisanin adını ve soyadını ekleyecek şekilde ve eklenen kaydın id sini döndürecek bir proc. create proc up_CalisanEkle ( @EmpFirst nvarchar(10), @EmpLast nvarchar(20) ) as insert into Employees(FirstName,LastName) values (@EmpFirst,@EmpLast) return @@identity --ekleme işlemi declare @id int exec @id=up_CalisanEkle 'Murat','ALTINIŞIK' select @id --output parametleri proc bu parametrede satılan ürün order detailse eklendikten sonra prodct taplosunda yeni değerler girer create proc up_SatisTap ( @OrderID int, @ProductID int, @Quantity smallint, @UnitPrice money, @Discount real, @KalanMiktar smallint out, @BasariliMi bit out ) as begin try insert into [Order Details] values (@OrderID,@ProductID,@UnitPrice,@Quantity,@Discount) update Products set UnitsInStock=UnitsInStock-@Quantity where ProductID=@ProductID select @KalanMiktar=UnitsInStock from Products where ProductID=@ProductID set @BasariliMi=1 end try begin catch set @BasariliMi=0 end catch --işleme tabi tutma declare @b bit, @ks smallint exec up_SatisTap 10248,1,2,1.2,0,@ks out,@b out if @b =1 begin select 'İşlem Başarılı.Kalan stok '+CAST(@ks as varchar(5)) end else select 'İşlem Başarısız'