2013-09-28 113 views
0

我嘗試在我的項目中第一次使用存儲過程。所以我有語法錯誤,如果我嘗試使用「如果」,「其他」。存儲過程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的值