2013-09-28 7 views
0

Я пытаюсь использовать хранимые процедуры в первый раз в своем проекте. Поэтому у меня есть синтаксическая ошибка, если я пытаюсь использовать «if», «else».Сохраненная процедура if else синтаксическая ошибка

Если NewProductId равно «0» или null, я не хочу обновлять. еще я хочу, чтобы обновить NewProductId

ALTER PROCEDURE MyProcedured 
(
@CustomerId INT, 
@CustomerName VARCHAR(80), 
@NewProductId INT 
) 
AS 
BEGIN 
UPDATE CUSTOMERS 
SET  
CustomerName [email protected] , 

if(@ProductId !=null && @ProductId !=0) 
{ 
ProductId [email protected] 
} 

WHERE CustomerId = @CustomerId 
END 

ответ

2

Похоже, вы смешиваете два разных языка (C# с SQL). Предлагает использовать инструкцию SQL CASE для этого:

ALTER PROCEDURE MyProcedured 
(@CustomerId INT, 
@CustomerName VARCHAR(80), 
@NewProductId INT) 
AS 
BEGIN 
    UPDATE CUSTOMERS 
    SET CustomerName = @CustomerName, 
     ProductId = CASE WHEN @ProductId IS NOT NULL AND ProductId <> 0 
         THEN @NewProductId 
         ELSE ProductId 
        END 
    WHERE CustomerId = @CustomerId 
END 
0

!= знак неправильно это должно быть <> вместо этого.

if(@ProductId <> null && @ProductId <> 0) 

Или Поочередно

if(@ProductId is not null && @ProductId <> 0) 
0
if @ProductId is not null and @ProductId <> 0 
begin 
    set @ProductId = @NewProductId 
end 
2

T-SQL не C#

if @NewProductId is not null and @NewProductId <> 0 
BEGIN 
    UPDATE CUSTOMERS SET CustomerName [email protected], 
         ProductId [email protected] 
    WHERE CustomerId = @CustomerId 
END 
ELSE 
BEGIN 
    UPDATE CUSTOMERS SET CustomerName [email protected] 
    WHERE CustomerId = @CustomerId 
END 

Также обратите внимание, что у вас нет какой-либо переменной с именем @ProductID. Я предполагаю, что вы хотите проверить значение в @NewProductID

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