2016-03-05 122 views
-1

編寫它的最好方法是什麼?因爲我寫了它,但我懷疑這不是一個好方法。爲什麼這段代碼會失敗或不會失敗?

場景:我寫這只是INSERTS記錄到TABLE,然後拾取最後插入的主鍵,並返回到前端應用程序即

 @parameter1 int, 
     @Parameter2 smallint, 
     @Error varchar(MAX) output, 
     @OutPutParamter int Output 

Begin 
     Begin Try 
      insert into table1 
      values (@parameter1, @parameter2) 

      Set @OutPutParamter= Scope_Identity() 

     End Try 

     Begin Catch 
      set @Error= Select Error_Message() 
      set @OutPutParameter= 0 
     End Catch 
End 

現在的問題是,如何@OutPutParameter將被視爲一個存儲過程?回報價值有什麼危害?

+0

我看不出有什麼毛病你的程序。 – sgeddes

+0

我可以看到的主要危害是,當您嘗試將'@OutPutParamter = 0'值放入任何具有'table1'外部屬性的子表中時。 –

+0

@MotoGP我不這樣做,這就是我在異常時返回的內容 – Stacky

回答

0
  1. 你寫的查詢是正確的。
  2. Scope_Identity()將獲得該記錄插入到表
  3. @OutPutParamter是一個輸出型變量,運行SP後的ID,你可以找到從@OutPutParamter的ID。
  4. 你也可以使用一個局部變量來獲取ID和使用select返回值
相關問題