Merhaba Arkadaşlar,
Bu makalede Stored procedure içinde function çağırıp kullanmak ile alakalı örnek yapacağız.Ne amaçla diye aklınıza soru gelebilir.Bilidiğiniz gibi veritabanı tarafında Table-valued Function ve Scalar-valued Function şeklinde 2 adet fonksiyon tipimiz var.Table function bize table döndürürken Scalar function bize tek sonuç döndürür. Son projemde Entity Framework ile çektiğim model içerisinde veitabanımda yeralan, asıl işi yapacak scalar functiona ulaşamadım.Araştırmalarım sonucu modeli text editor ile açıp değişiklikler yaparak normal function gibi kullanabileceğimi buldum.Bu yolu seçmektense Model içerisinden kolayca ulaşabileceğim stored procedure yazıp içinde Scalar function ımı çağırmak fikri geldi.Aşağıda örnek olarak inceleyebilirsiniz.
Function: Basit iki sayıyı çarpan parametre alan bir fonksiyon yazalım
Create FUNCTION [dbo].[OrnekFonksiyon]
(
@degisken1 int,
@degisken2 int
)
RETURNS int
AS
BEGIN
DECLARE @Result int
SELECT @Result = @degisken1 * @degisken2 ;
RETURN @Result
END
Stored Procedure:Sp miz iki parametre alıyor.Bu parametreleride sorgumuzda cağırdığımız fonksiyona parametre olarak veriyoruz.
Create PROCEDURE [dbo].[SProcedureOrnegi]
(
@gelen1 int,
@gelen2 int
)
AS
begin
declare @setval int
select dbo.[OrnekFonksiyon](@gelen1 , @gelen2 )
end
Test:
DECLARE @return_value int
EXEC @return_value = [dbo].[SProcedureOrnegi]
@FirstNumber = 5,
@SecondNumber = 7