Ошибка при создании UDF в Sql Server 2005 - PullRequest
0 голосов
/ 07 марта 2011

Кто-нибудь знает, что не так с этим блоком кода.

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 = '+@UserID+' 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 '+'.

1 Ответ

0 голосов
/ 07 марта 2011

Вы не можете объединить в настройке параметра хранимой процедуры.

DECLARE @sql varchar(2000)

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

EXEC sp_executesql
        @SQL
        ,N'@DynamicCount sysname OUTPUT'
        ,@RecordCount OUTPUT
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...