2011-03-16 82 views
1

我有一个像这样的SQL函数;SQL函数错误

ALTER FUNCTION [dbo].[fngcodeme] 
(
    @HESAP INT, @DOV INT, @TEKLIF VARCHAR(10) 
) 
RETURNS FLOAT 

AS 
BEGIN 

DECLARE @Result float 

SET @Result = (SELECT SUM(TUTAR) 
    FROM YAZ..MARDATA.M_GHAREKET 
    WHERE TEMEL_HESAP = @HESAP 
    AND DOVIZ_KOD = @DOV 
    AND REF_KOD = 'GC' 
    AND BACAK_GRUP = 'PERT' 
    AND ISL_KOD = 1 
    AND ACIKLAMA LIKE '% + @TEKLIF + %''') 


RETURN @Result 

END 

这是完全正常工作。

SQL也工作。结果是18587.73

SELECT SUM(TUTAR) 
FROM YAZ..MARDATA.M_GHAREKET 
WHERE TEMEL_HESAP = 1252 
AND DOVIZ_KOD = 21 
AND REF_KOD = 'GC' 
AND BACAK_GRUP = 'PERT' 
AND ISL_KOD = 1 
AND ACIKLAMA LIKE '%S08-2/334%' 

但是,当我想在SQL Server入手参数此功能;

SELECT dbo.fngcodeme(1252, 21, 'S08-2/334') 

结果变得NULL

我不明白我做错了什么..!

任何想法?

回答

4

需要对固定@TEKLIF过滤

AND ACIKLAMA LIKE '%' + @TEKLIF + '%' 

你实际上是寻找该值当前

% + @TEKLIF + %' 
+0

你是正确的是绝对。谢谢..! – 2011-03-16 10:23:54

1
AND ACIKLAMA LIKE '% + @TEKLIF + %''') 

应改为

AND ACIKLAMA LIKE '''%' + @TEKLIF + '%''')