2012-02-22 196 views
-4
SET ANSI_NULLS ON 
SET QUOTED_IDENTIFIER ON 

GO 

ALTER PROCEDURE [dbo].[Prc_InsertUpdate] (@boxone VARCHAR(200), 
              @boxtwo VARCHAR(200), 
              @boxthree VARCHAR(200)) 
AS 
    DECLARE @num AS INT 

    SELECT @num = MAX(NUMBER) + 1 
    FROM updatepage 

    INSERT INTO [TestDB].[dbo].[updatepage] 
       ([number], 
       [box1], 
       [box2], 
       [box3]) 
    VALUES  (@num, 
       @boxone, 
       @boxtwo, 
       @boxthree) 

我創建這個程序,但得到這個錯誤錯誤在SQL Server 2005存儲過程

消息208,級別16,狀態6,過程Prc_InsertUpdate,9號線
無效的對象名稱DBO .Prc_InsertUpdate」。

+4

哦,'SELECT MAX(Number)+ 1'確實*可怕。即使你在可序列化事務中封裝了它的選擇和隨後的使用,它仍然是不好的。 – 2012-02-22 19:08:36

+0

@Damien_The_Unbeliever:如果我可以的話,我會給你+1 gazillion ..... – 2012-02-22 20:12:18

回答

2

你是ALTER -ing一個不存在的存儲過程。改爲使用CREATE procedure [dbo].[Prc_InsertUpdate]

另外爲什麼不是numberidentity列?您目前的方法在併發條件下效率低下且不安全?

+0

或者他在SSMS – 2012-02-22 19:02:03

+0

@亞歷克斯使用錯誤的數據庫。 - 的確如此,但問題的內容表明他們正在「創建這個程序」 – 2012-02-22 19:02:51