2011-03-07 63 views
0

有人知道這個代碼塊有什麼問題嗎?在Sql Server 2005中創建UDF時出現錯誤

CREATE FUNCTION [dbo].[udfGetPoint] 
(
    @UserID INT, 
    @SqlCountry VARCHAR(1000) 
) 
RETURNS INT 
AS 
BEGIN 
    DECLARE @Points INT 
    SET @Points = 1 
    DECLARE @RecordCount sysname 
    IF @SqlCountry <> '' 
    BEGIN 
     EXEC sp_executesql 
     N'SELECT @DynamicCount = COUNT(UserID) FROM Country WHERE UserID = '[email protected]+' AND LCValues IN (' + @SqlCountry + ')' 
     ,N'@DynamicCount sysname OUTPUT' 
     ,@RecordCount OUTPUT 
     IF @RecordCount > 0 
      SET @Points = @Points + 1 
    END 

    RETURN @Points 
END 

如果我執行此我有以下錯誤:

Msg 102, Level 15, State 1, Procedure udfGetPoint, Line 15 
Incorrect syntax near '+'. 

回答

0

你不能在存儲過程的參數設置串聯。

DECLARE @sql varchar(2000) 

SET @SQL = 'SELECT @DynamicCount = COUNT(UserID) FROM Country WHERE UserID = '[email protected]+' AND LCValues IN (' + @SqlCountry + ')' 

EXEC sp_executesql 
     @SQL 
     ,N'@DynamicCount sysname OUTPUT' 
     ,@RecordCount OUTPUT 
+0

感謝reply.given錯誤已解決,但如果執行存儲過程中,我用這個UDF新的錯誤來了:「只有函數和擴展存儲過程可以從函數中執行」 – Sukhjeevan 2011-03-07 07:52:12

+0

@Sukhi:那麼你不能在UDF中做到這一點。 – gbn 2011-03-07 07:53:13

+0

什麼是擴展存儲過程? – Sukhjeevan 2011-03-07 07:55:30

相關問題