Как я могу получить возвращаемое значение из моей хранимой процедуры? - PullRequest
4 голосов
/ 12 июля 2011

Вот мой 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 внутри моего кода?

Ответы [ 4 ]

5 голосов
/ 12 июля 2011

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

Для SqlCommand:

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

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

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

0 голосов
/ 12 июля 2011

Это то, что я сделал, поэтому просто использую 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()
            }
0 голосов
/ 12 июля 2011

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

см. Код ниже,

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

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

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

   AddOutParameter(.....);

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

0 голосов
/ 12 июля 2011

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

...