2012-02-22 3 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) 

는이 오류오류가

메시지 208, 수준 16, 상태 6, 절차 Prc_InsertUpdate, 9 호선
잘못된 개체 이름 'DBO이 절차를 작성하지만 가지고있어 .Prc_InsertUpdate '.

+4

아, 'SELECT MAX (Number) + 1'은 * 정말로 * 끔찍합니다. 직렬화가 가능한 트랜잭션에서 선택 및 후속 사용을 감싸는 경우에도 여전히 좋지 않습니다. –

+0

@Damien_The_Unbeliever : 만약 내가 할 수만 있다면 ........ –

답변

2

당신은 - 존재하지 않는 저장 프로 시저입니다. 대신 CREATE procedure [dbo].[Prc_InsertUpdate]을 사용하십시오.

또한 numberidentity 열이 아닙니까? 현재의 접근 방식은 동시성의 조건에서 비효율적이고 안전하지 않습니까?

+0

아니면 그는 SSMS –

+0

@AlexK에서 잘못된 db를 사용하고 있습니다. - 사실이지만 질문의 텍스트에 "이 절차를 만드는 중"이라고 나와 있습니다. –