1 / 30

Stored Procedure

Stored Procedure. Öğr.Gör.Metin Akbulut. Stored Procedure. Bir amaca ulaşmak için takip edilen yol ve yöntem tanımından yola çıkarak bir prosedür , herhangi bir işlevi yerine getirmek için yazılan kodların bir paket içerisinde tutulmuş hali demektir.

lois
Download Presentation

Stored Procedure

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. StoredProcedure Öğr.Gör.Metin Akbulut

  2. StoredProcedure Bir amaca ulaşmak için takip edilen yol ve yöntem tanımından yola çıkarak bir prosedür, herhangi bir işlevi yerine getirmek için yazılan kodların bir paket içerisinde tutulmuş hali demektir.

  3. sıkça yapılan işlemlerin bir defa yazılarak program akışına göre tekrar tekrar kullanılmasını sağlamaktır. ExtendedStoredProcedure CLR StoredProcedure SystemStoredProcedure

  4. StoredProcedure Oluşturmak • StoredProcedure’ün oluşturulma şekli aşağıdaki gibidir. CREATE PROC [ EDURE ] prosedür_adı AS T-SQL ifadeleri GO

  5. Veri tabanınızın Programmability klasörünün solundaki + işaretine tıkladığınızda açılan StoredProcedures klasörü üzerinde farenizle sağ tıklayınız. • Yeni bir StoredProcedure oluşturabilmeniz için New StoredProcedure komutunu tıklatınız

  6. EXEC komutu oluşturduğunuz StoredProcedure’ü çalıştıracak olan komuttur. EXEC’ten sonra yazılan ifade ise oluşturduğunuz StoredProcedure’ün adıdır. Yazdığınız bu Query’i çalıştırarak (F5) sonucu görebilirsiniz.

  7. Derleme • Bir StoredProcedure’de çok fazla değişiklikler yapılıyorsa EXEC komutuyla • çalıştırılırken yeniden derlenmesi istenebilir. Bunun için, RECOMPILE kullanılmalıdır. • Örnek: • EXEC UNotlar WITH RECOMPILE

  8. StoredProcedure’ü Silmek Var olan bir StoredProcedure’ü silmek için DROP komutunu kullanmak gereklidir. DROP komutundan sonra StoredProcedure’ün sahibinin adı ve StoredProcedure’ün adı yazılmalıdır. Genel Kullanımı DROP PROC sahip.prosedür_adı Örnek: DROP PROC dbo.UNotlar

  9. Değer Alan StoredProcedure’ler StoredProcedure’lerin daha etkin kullanılabilmesi ve işlevsel bir hale gelebilmesi için dışarıdan değer almalarına ihtiyaç duyulur. Bu nedenle girdi parametreleri (Inputparameter) kullanılır.

  10. Bir öğrenciye ait 3 not bilgisi Query’de ilk değerleri atanarak not ortalamaları hesaplanacaktır.

  11. Hesaplamaların yapılacağı StoredProcedure’ü yazmak için yeni bir Query sayfası açınız. StoredProcedure’ün adını “UHesapla” olarak belirterek ortalamayı karşılayacak değişkeni tanımlayınız ve başarının belirleneceği “if” yapısını yazınız.

  12. uygulama1 SELECT * FROM Laptop CREATE PROCEDURE uspLaptop AS SELECT * FROM Laptop GO EXEC uspLaptop --veya sadece uspLaptop

  13. uygulama2 CREATE PROCEDURE uspProduct @Maker varchar(10) =NULL /*‘hata’*/ AS SELECT * FROM Product WHERE Maker = @Maker GO EXEC uspProduct @Maker = 'B'

  14. uygulama3 CREATE PROCEDURE usptype2 @model varchar(50) = NULL, @typevarchar(50) =NULL AS SELECT * FROM product WHERE type =isnull(@type ,'typeyaz') AND model LIKE '%' + ISNULL(@model ,'modelyaz') + '%' GO EXEC usptype2 @model = '11', @type = 'pc'

  15. Procedure silme DROP PROCEDURE usptype GO -- veya DROP PROC usptype GO – veya DROP PROC dbo.usptype

  16. Çoklu silme DROP PROCEDURE usptype1, usptype2, usptype3 GO -- veya DROP PROC usptype1, usptype2, usptype3 GO

  17. Procedure değişiklik ALTER PROCEDURE [dbo].[usptype] --null vermek zorundayız(Açıklama örnek) @typevarchar(50) =NULL AS SELECT * FROM product WHERE type LIKE @type + '%'

  18. İf IF Koşul BEGIN     PRINT 'Koşulumuz doğru'     -- SELECT,UPDATE... -- END ELSE BEGIN     PRINT 'Koşulumuz yanlış'     -- SELECT,UPDATE... – END

  19. CREATE PROCEDURE [dbo].[DeleteEmployee] @EmployeeIduniqueidentifier -- SP Parametremiz -- AS BEGIN     DECLARE @Countint -- EmployeeIdid'li kişinin kaç kişinin amiri olduğunu tutan sayacımız --     DECLARE @ReturnBool bit -- Döndüreceğimiz boolean tipi 0 veya 1 --     SELECT @Count = COUNT(*) FROM Employee WHERE DirectorId = @EmployeeId -- Kişi amir pozisyonunda mı? --     IF @Count <= 0 -- Kişi herhangi bir kişinin amiri değilse yani sayaç değerimiz 0'a eşit veya küçükse --     BEGIN         DELETE FROM Employee WHERE EmployeeId = @EmployeeId -- Kişi silinir --         SET @ReturnBool = 1 -- Dönüş değeri 'true' yapılır --         SELECT @ReturnBool -- Değer döndürülür --     END     ELSE -- Kişi bir kişinin amiri ise --         SET @ReturnBool = 0 -- Kişi silinmez ve dönüş değeri 'false' yapılır --         SELECT @ReturnBool -- Değer döndürülür -- END

  20. IntersectandExcept

  21. TRIGGER • Trigger’lar, tablo üzerinde tanımlanabilen ve bu tablo üzerinde bir işlem gerçekleştiğinde tetiklenen programlama öğeleridir. Trigger tanım olarak da tetikleyici anlamındadır. İki tip trigger vardır. • DML Trigger Her hangi bir tablo üzerinde yapılan insert, update, delete işlemi öncesinde veya sonrasında otomatik olarak aynı veya başka bir tabloda veri ekleme, veri değiştirme veya veri silme işlemi yapılmak istendiğinde kullanılır. • DDL Trigger Veritabanı üzerinde tablo veya diğer nesneler üzerinde create, alter, drop ifadelerinden sonra tetiklenen triggerlardır

  22. AFTER(ya da FOR) => Bu trigger’lar tetiklendiğinde işlem gerçekleşmiş demektir. Yani yazdığımız trigger ‘afterdelete’ şeklindeyse, o tablo üzerinde data silindikten sonra bu trigger devreye girer. • INSTEAD OF => Bu trigger’lar tetiklendiğinde işlem gerçekleşmemiştir. Yani yazdığımız trigger ‘instead of delete’ şeklindeyse, o tablo üzerindeki kayıt silme işlemi yerine, bu trigger devreye girecektir.

  23. Deletetrigger Createtrigger[dbo].[satisIptalEt] on [dbo].[PC] afterdelete as begin INSERT INTO pcsilinen select * from deleted end

  24. Update trigger ALTER trigger [dbo].[pcguncelle] on [dbo].[PC] afterupdate as begin INSERT INTO pceklenen SELECT code,model,GETDATE() FROM inserted end

  25. Inserttrigger ALTER TRIGGER [dbo].[PasifYap] ON [dbo].[PC] INSTEAD OF DELETE AS UPDATE P SET Aktif=0 FROM Pc P JOIN deleted D ON P.code=D.code

  26. ALTER TRIGGER [dbo].[PasifYap] ON [dbo].[PC] INSTEAD OF DELETE AS UPDATE P SET Aktif=0 FROM Pc P JOIN deleted D ON P.code=D.code

  27. DISABLE - ENABLE TRIGGER Oluşturulan triggerlarin bir süre durdurulması (pasif edilmesi) istenirse DISABLE TRIGGER trg_adi--on database Tekrar aktif etmek için ise ENABLE TRIGGER trg_adi--on database

  28. DDL Triggerlar CREATE TRIGGER tablosilmeengeller ON DATABASE --[ON ALL SERVER / ON DATABASE] /*Veritabanıseviyesinde geçerli bir trigger*/ FOR DROP_TABLE AS PRINT 'Silme işlemi iptal edildi' ROLLBACK

  29. triggeriveritabanından silmek DROP TRIGGERtablosilmeengellerON DATABASE

More Related