2017-12-20 13 views
-1

現在、テーブルを更新するために使用されるストアドプロシージャを作成しようとしています。私は、コードが実行していると言い、すべての行に影響を及ぼしますが、何も更新しないという問題を抱えています。私は、一度に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

関連する問題