2014-03-12 23 views
1

SQL Server Management Studio,存儲過程如何檢查存儲過程中的值爲空?

我從Visual Studio傳遞customerName,並在存儲過程中我想獲取customerID

現在我想檢查一下customerId是否爲空,表示這是一個新客戶。如果是這樣,我想在表格中插入該客戶。然後我想獲取客戶ID,並且想要存儲在TableB中。

下面是示例代碼:

還告訴如何執行

if(@customerId == null) 
{ 
    Insert customerDetails into CustomerTable; 
    get CustomerId. 
} //General workflow what i want. 

爲此,我寫了一個SQL Server存儲過程

create procedure Customers_AddData2  
    @CustomerName nvarchar(50) = null 
As  
    --Get Customer ID 
    declare @CustomerID numeric(18, 0)= (SELECT distinct [CustomerID] FROM [tblCustomerMaster] WHERE CustomerName = @CustomerName) 

    --checking if customerId not found 
    -- Here is some error, Not getting syntax 

    IF(@CustomerID IS NULL == true) 
    { 
     INSERT INTO [tblCustomerMaster] ([CustomerName]) 
     VALUES (CustomerName) 
    } 

    -- Now get customer id 
    @CustomerID numeric(18, 0)= (SELECT distinct [CustomerID] FROM [tblCustomerMaster] WHERE CustomerName = @CustomerName) 
+0

如果(ISNULL(@CustomerID)== 1)的http:// forums.mysql.com/read.php?98,198593 – BaBL86

回答

5

只是IF(@CustomerID IS NULL)足夠

IF(@CustomerID IS NULL) 
BEGIN 
    --insert here.. 
     INSERT INTO [tblCustomerMaster] 
    ([CustomerName] 

    VALUES 

    (CustomerName) 
    SET @CustomerID = Scope_Identity() -- sql server syntax to get the ID after insert.. 
END 
ELSE 
BEGIN 
    -- update perhaps.. 
END 
+0

但我無法插入此後..你可以告訴我完整的語法 – user3410150

0

你可以試試這樣:

if (isnull(@customerID) == 1) 
BEGIN 
    --Your code 
END 
ELSE 
BEGIN 
    -- code 
END 

也會改變該行

declare @CustomerID numeric(18,0)= (SELECT distinct [CustomerID] FROM [tblCustomerMaster]  where CustomerName = @CustomerName) 

與此:

declare @CustomerID numeric(18,0) 
(SELECT @CustomerID := [CustomerID] 
FROM [tblCustomerMaster]  
where CustomerName = @CustomerName)