2012-02-22 5 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 хранимой процедуры

Msg 208, Level 16, State 6, процедура Prc_InsertUpdate, линия 9
имя Неверный объект «ДБО .Prc_InsertUpdate.

+4

О, это 'SELECT MAX (Number) + 1' является * поистине * ужасающим. Даже если вы завернули его выбор и последующее использование в сериализуемой транзакции, все равно будет плохо. –

+0

@Damien_The_Unbeliever: Я бы добавил +1 к вам, если бы мог ..... –

ответ

2

Вы являетесь ALTER -следующей хранимой процедурой, которой не существует. Вместо этого используйте CREATE procedure [dbo].[Prc_InsertUpdate].

Также почему нет number a identity column? Ваш нынешний подход неэффективен и небезопасен в условиях параллелизма?

+0

Или он использует неправильный бит в SSMS –

+0

@AlexK. - Правда, но в тексте вопроса говорится, что они «создают эту процедуру», –

Смежные вопросы