2017-12-20 18 views
-1

현재 테이블을 업데이트하는 데 사용할 저장 프로 시저를 만들려고합니다. 코드가 실행된다고 말하면서 모든 라인에 영향을 주지만 업데이트에는 영향을 미치지 않는 문제가 있습니다. 한 번에 한 행의 정보를 업데이트하고 행을 실제로 업데이트 할 수 있기를 원합니다. 아래UPDATE 저장 프로 시저 사용

코드 :

CREATE PROCEDURE UpdateTrail 
    (@Open char(3), 
    @AmountReal int, 
    @AmountFake int) 
AS 
BEGIN 
    UPDATE TRAIL 
    SET @Open = TOpen, 
     @AmountReal = AmountRealSnow, 
     @AmountFake = AmountFakeSnow 

    RETURN @@Identity 
END 

내 열

는하여 trail 테이블에 다음과 같습니다

TrailID int identity primary key, 
TrailName varchar(255) Unique, 
Topen char(3), 
AmountReal int, 
Amountfake int 

하십시오, 어떤 제안? 일반적으로

+1

사물의 이름을 고려할 때, 난 당신이 Open'와'TOpen' (다른 매개 변수에 대한 동일) @'교환 할 거라고 생각 것입니다. – cHao

+2

예. 당신은 잘못된 것을 업데이트하려고합니다. 변수 이름이 아닌 열 이름을 사용하십시오. – ViKiNG

+1

@ViKiNG도 왜'@@ identity '인가? – jean

답변

0

의 구조 업데이트 문 S/B 사미로 의견 제안으로

UPDATE myTable 
    SET myColumn = @variable 
    , myCol2 = @var2 
WHERE myTable.filtercolumn = @variable 

, 당신은 또한 레코드를 업데이트하는 저장 프로 시저에 기록 키에 합격해야합니다. 이 같은

뭔가 :

CREATE PROCEDURE UpdateTrail (@Key int, 
@Open    char(3), 
@AmountReal  int, 
@AmountFake  int 
) 
AS 
BEGIN 
    Update TRAIL 
    set TOpen = @Open 
     , AmountRealSnow = @AmountReal 
     , AmountFakeSnow = @AmountFake 
    Where TRAIL.TrailID = @Key 
    Return @@Identity 
END 
+0

그래서 트레일 id = 1로 트레일을 치기위한 절차를 어떻게 실행합니까? –

+0

매개 변수가있는 저장 프로 시저를 실행하려면 다음과 같이하십시오. exec UpdateTrail 1, 'abc', 2,3 OR EXEC UpdateTrail \ @Key = 1, @ Open = 'abc', \ @ AmountReal = 3, \ @ AmountFake = 5 – xDJR1875

+0

위 편집에서 이스케이프 ('\') 문자를 제거하십시오. – xDJR1875