2012-02-22 139 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

相关问题