2014-07-12 4 views
2
Create Function GetProducts (@AttributeValue NVARCHAR(max)) 
RETURNS NVARCHAR 
AS 
BEGIN 
    DECLARE @CountA INT 
    DECLARE @CountB INT 
    DECLARE @ProductValue NVARCHAR(max) 

    SELECT @CountA = Count(*) 
    FROM CRM_fn_ac(@AttributeValue) 

    SELECT @CountB = Count(*) 
    FROM product 
    WHERE filteredviewname = 'filteredciti_ac 
     AND attributename ='c_products' 
     AND value IN (SELECT * FROM CRM_fn_ac(@AttributeValue) 

    IF @CountA [email protected] 
    BEGIN 
     SELECT @ProductValue= @AttributeValue 
    END 

    RETURN @ProductValue 
END 

Я получаю сообщение об ошибке рядом с состоянием IF. Я хочу, чтобы установитьСравнение двух параметров в функции SQL Server

productvalue = attributevalue when CountA = CountB 
+0

Какая ошибка вы получаете? – Mez

+0

Вам не хватает скобки перед тем, как оператор if закрывает ваш внутренний выбор. –

+0

Когда вы даете значение @CountB, вы говорите AND VALUE IN ... и затем выполняете SELECT *. Правильно ли это? Возвращает ли функция только 1 столбец? – Mez

ответ

0

Добавить недостающую скобку ...

Изменить это:

 
SELECT @CountB = Count() from product where filteredviewname='filteredciti_ac and attributename ='c_products' and value in (select * from CRM_fn_ac(@AttributeValue) 

Для этого:

SELECT @CountB = Count() from product where filteredviewname='filteredciti_ac' and attributename ='c_products' and value in (select * from CRM_fn_ac(@AttributeValue)) 

Вы также забыли закрыть одиночные кавычки при фильтрации по столбцу отфильтрованное имя ...

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