2011-03-16 85 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 + '%''')