2013-05-08 2 views
0

У меня есть следующий код:SQL Server If-оператор Необъявленная переменная

CREATE FUNCTION db_owner.GetComp 
(
    @CompID bigint, 
    @ComponentType nvarchar(50) 
) 
RETURNS TABLE 
AS 
    RETURN /* SELECT ... FROM ... */ 

    IF (@ComponentType = 'WMCOMP') begin 

     RETURN 

     SELECT * 
     FROM WMCOMP 
     WHERE wmcompid = @CompID 

    end 
    ELSE IF (@ComponentType = 'ADECOMP') begin 

     RETURN 

     SELECT * 
     FROM ADECOMP 
     WHERE adecompid = @CompID 

    end 

При попытке сохранить его в Visual Studio, отображается следующее сообщение об ошибке:

Неправильный синтаксис около IF

Я просто не вижу, что не так. Любая помощь будет оценена.

ответ

2

Тест один -

CREATE FUNCTION db_owner.GetComp 
(
     @CompID bigint 
    , @ComponentType nvarchar(50) 
) 
RETURNS @Result TABLE (col1 INT, ...) 
AS 
BEGIN 

    INSERT INTO @Result (col1, ...) 
    SELECT * 
    FROM (
     SELECT * 
     FROM dbo.WMCOMP 
     WHERE wmcompid = @CompID 
      AND @ComponentType = 'WMCOMP' 

     UNION ALL 

     SELECT * 
     FROM dbo.ADECOMP 
     WHERE adecompid = @CompID 
      AND @ComponentType = 'ADECOMP' 
    ) f 

    RETURN 

END 
+0

Спасибо, что сработало – Niclassg

+0

Добро пожаловать @Niclassg. – Devart

2

У вас есть недостающие запятые в списке пар:

CREATE FUNCTION db_owner.GetComp 
(
    @CompID bigint, --<--- need a comma here 
    @ComponentType nvarchar(50) 
) 
+0

Спасибо, я изменил это и теперь я получаю новую ошибку. Я обновил свой вопрос – Niclassg

+0

удалять операторы return внутри начала ... –

+1

BTW: редактирование вопроса для удаления исходной проблемы - не лучший способ задать вопросы. В противном случае ответы могут не иметь смысла на дорожке ... –

Смежные вопросы