2010-09-30 38 views

回答

4

看起來像是誰寫的那個存儲過程使用它作爲返回值來表示成功或失敗。

這樣做會產生一行,每次調用過程都會返回一列。

來處理這將是實際使用的存儲過程的返回值,而不是返回單個列單列的正確方法:

BEGIN 
    IF EXISTS(SELECT * FORM Table1 WHERE ID = @ID) 
    BEGIN 
     UPDATE Table1 SET Name = @Name WHERE ID = @ID 
     RETURN 1 
    END 

    RETURN 0 
END 
+0

所以1和0都是返回值爲什麼不使用「RETURN 1」? – Serenity 2010-09-30 13:38:26

+0

@快樂的靈魂 - 我想知道同樣的事情。它可能很容易被某人不知道RETURN。 – 2010-09-30 13:41:31

+0

SELECT'1'在單引號中得到1,所以這意味着它只有一個值而不是列號。或者其他的東西? – Serenity 2010-09-30 13:44:01

0

想必一些調用代碼檢查此值,以確定是否行已更新或未更新。

而不是檢查和更新(兩個表訪問),你可能會這樣做。

UPDATE Table1 SET [email protected] WHERE [email protected]  
SELECT CASE WHEN @@Rowcount = 0 THEN 0 ELSE 1 END 

如果id是PK,那麼你可以做

UPDATE Table1 SET [email protected] WHERE [email protected]  
SELECT @@Rowcount 

注意只要SET NOCOUNT不上則受影響的將獲得反正回傳給客戶端應用程序的行數。

0

選擇'1'用於表示Table1包含ID值@ID(參數)已更新。選擇'0'表示Table1不包含id值@ID。

3

IF EXISTS正在檢查Table1中是否有給定ID的行。如果有一行,它將用給定的名稱更新該行。選擇「1」將返回「1」,選擇「0」返回「0」。 「1」或「0」表示該行是否被找到。

+0

好的......謝謝.... – Serenity 2010-09-30 13:47:02