merhabalar ;
ALTER FUNCTION Yapilanindirimtutari
(
@baslangictarihi as nvarchar(10) ,
@bitistarihi as nvarchar(10) ,
@kullaniciid as nvarchar(20) ,
@subekodu as nvarchar(20)
)
RETURNS float
AS
BEGIN
DECLARE @indirim as float
DECLARE @tarih as nvarchar(50)
DECLARE @sqlStr as nvarchar(200)
Set @SQLStr = ' '
if @baslangictarihi=@bitistarihi begin
set @tarih = ' and kayittarihi = ' + @baslangictarihi
end else begin
set @tarih =' and kayittarihi beetwen ' + @baslangictarihi + ' and ' + @bitistarihi
end
Set @sqlStr = @SQlStr + @tarih
if @kullaniciid <> ''
Set @sqlStr = @SQlStr + ' and kullanici = ' + @kullaniciid
if @subekodu <>''
Set @sqlStr = @SQlStr + ' and subekodu = ' + @subekodu
if @baslangicsaati >0 and @bitissaati>0
set @tarih =' and kayitsaati beetwen ' + @baslangicsaati + ' and ' + @bitissaati
set @indirim = ( Select sum(indirimtutari) as indirimtop From SatisHareketleriOzet Where id is not null and kayittarihi = @baslangictarihi)
return @indirim
END
Fonksiyon bu şekilde çalışıyor ama kullanıcı yoksa mesela kullanıcı bu parametreye eklenmeycek ve subekodu boş ise aynı şekilde varsa sadece eklenecek bunu için yukarıda "SQlStr" değişkenine ben gerekli olan değerleri atadım ama
set @indirim = ( 'Select sum(indirimtutari) as indirimtop From SatisHareketleriOzet Where id is not null ' + SqlStr )
bu şekilde çalıştırdığımda
Select dbo.Yapilanindirimtutari ('20171221','20171221','pendik','1',null,null) as indirtop
Msg 8114, Level 16, State 5, Line 1
Error converting data type nvarchar to float.
bilgisi olan arkadaşlar varsa yardımlarınızı rica ediyorum herkese teşekkürler.