2016-10-11 80 views
0

我正在開發一個ASP.NET MVC應用程序。我有一個存儲過程。我想發送一些值給存儲過程。下面是參數如何確保存儲過程正確執行?

@CorporateId Input 
@CitizenId Input 
@DocType  Input 
@Revert  Input 
@ResponseCode Out 
@ResponseMessage Out 

我需要發送值CorporateIdCitizenIdDocType@Revert其中值是0始終。當插入文件時,我想發送0作爲值到@rever

示例代碼我試過

public EmployeeDetail InsertDocumentFlagRevert(int? corporateID, string citizenId, int? docType, string connectingString) 
{ 
    string constring = connectingString; 
    EmployeeDetail objclValues = new EmployeeDetail(); 

    using (SqlConnection con = new SqlConnection(constring)) 
    { 
     using (SqlCommand cmd = new SqlCommand("uup_Employee_KYC_Uploaded_Flag", con)) 
     { 
      cmd.CommandType = CommandType.StoredProcedure; 

      if (corporateID == null) 
      { 
       cmd.Parameters.AddWithValue("@CorporateID", DBNull.Value); 
      } 
      else 
      { 
       cmd.Parameters.AddWithValue("@CorporateID", corporateID); 
      } 

      if (string.IsNullOrEmpty(citizenId)) 
      { 
       cmd.Parameters.AddWithValue("@CitizenId", DBNull.Value); 
      } 
      else 
      { 
       cmd.Parameters.AddWithValue("@CitizenId", citizenId); 
      } 

      if (docType == null) 
      { 
       cmd.Parameters.AddWithValue("@DocType", DBNull.Value); 
      } 
      else 
      { 
       cmd.Parameters.AddWithValue("@DocType", docType); 
      } 

      cmd.Parameters.Add("@ResponseCode", SqlDbType.VarChar, 2); 
      cmd.Parameters.Add("@ResponseMessage", SqlDbType.VarChar, 70); 
      cmd.Parameters.AddWithValue("@Revert", 0); 

      cmd.Parameters["@ResponseCode"].Direction = ParameterDirection.Output; 
      cmd.Parameters["@ResponseMessage"].Direction = ParameterDirection.Output; 

      con.Open(); 
      int i = cmd.ExecuteNonQuery(); 
      con.Close(); 
     } 
    } 
} 

在這段代碼,因爲我值爲-1。我不確定參數是否真的被傳遞給存儲過程?有人可以幫我解決這個問題嗎?

+0

使用事件探查器來捕獲執行語句,然後使用它可以調試過程。 – shadow

回答

0

如您所知,ExecuteNonQuery返回受影響的行數。

嘗試在存儲過程中評論SET NOCOUNT ON。 這將返回受影響的行數。我希望這會幫助你解決問題。

+0

我沒有把SET NOCOUNT ON放在我的sp中。 –

+0

'SET NOCOUNT ON'不用於此目的。當你運行一個查詢時,SSMS會提供你有多少行被影響的細節。設置nocount將阻止該消息,因爲這僅在直接執行查詢時有用。 – vivek

0

您可以使用SQL事件探查器來檢查從您的應用程序向SQL Server發送參數的查詢。

或者,你可以使用兩個輸出變量,並檢查其值,以確保該參數應用進行正確發送,則至少是對參數值附加在@ResponseMessage參數和調用後檢查其值ExecuteNonQuery方法

+0

我可以從上面的SP返回@ResponseMessage –

相關問題