Как получить возвращаемое значение из моей хранимой процедуры?

Вот мой SQL:

IF (SELECT Status FROM dbo.Coupon WHERE Guid = @pGuid) = 0 BEGIN UPDATE dbo.Coupon SET Status = @pStatus WHERE Guid = @pGuid RETURN 0 END ELSE RETURN 1; 

И вот мой C #:

 try { DbCommand command = db.GetStoredProcCommand("upd_Coupon_p"); db.AddInParameter(command, "@pGuid", DbType.String, s); db.AddInParameter(command, "@pStatus", DbType.Byte, 1); ds = db.ExecuteDataSet(command); } 

Как я могу получить возвращаемое значение 0 или 1 внутри моего кода?

Вы добавляете параметр возвращаемого значения, например:

Для SqlCommand:

 parameters.Add("@retValue", DbType.Int32, ParameterDirection.ReturnValue); 

Для EL вы должны использовать db.AddParameter () и указать параметр ParameterDirection.ReturnValue.

Кроме того, до тех пор, пока количество строк подсчитывается в вашей базе данных, для выполняемого обновления вы можете использовать результат ExecuteNonQuery (), который сообщает вам, сколько строк было затронуто в update / insert / delete / etc. Таким образом, вы могли бы обработать, если затронутые строки были 0 (не удалось найти)

Это то, что я сделал, поэтому в основном просто используйте ReturnValue, но другие части могут быть полезны.

  var retparam = new SqlParameter("@return", System.Data.SqlDbType.Int) { Direction = System.Data.ParameterDirection.ReturnValue }; comm.Parameters.Add(retparam); comm.ExecuteNonQuery(); int ret = 0; if (retparam == null) { System.Diagnostics.Debug.WriteLine("retparam was null"); } else if (retparam.Value == null) { } else { // use reparam.Value.ToString() } 

Что такое DbCommand.ExecuteDataSet () и почему вы не используете ExecuteScalar ()?

Объявите переменную как результат и получите ее внутри функции вызова раздела доступа к данным.

см. код ниже,

В хранимой процедуре,

  @ReturnStatus int output //inside your stored procedure argument section 

В разделе «Доступ к данным» используйте следующие,

  AddOutParameter(.....); 

Надеюсь это поможет..

Давайте будем гением компьютера.