2011-03-07 66 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

相关问题