Как получить возвращаемое значение из моей хранимой процедуры?
Вот мой 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 внутри моего кода?
- Как проверить, завершила ли хранимая процедура все операции вставки / удаления / обновления?
- Получение возвращаемого значения из JDBC MSSQL
- Как получить выходное значение из хранимой процедуры через сквозной запрос DAO
- Вызов хранимой процедуры с возвращаемым значением
- Возвращать идентификатор после вставки C # с помощью SQL Server
- Как правильно убрать возвращаемое значение из вызова в хранимую процедуру
- Получить возвращаемое значение (скалярное), а не таблицу результатов, из хранимой процедуры с использованием Java и Hibernate
- Возвращаемое значение из команды SQL Server Insert с использованием c #
- Когда SqlCommand закрывается при использовании в другой функции?
- C # и SQL Server: получить результат из хранимой процедуры
- Сохраненная процедура Возвращаемое значение для сбоя SQL-заданий
Вы добавляете параметр возвращаемого значения, например:
Для 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(.....);
Надеюсь это поможет..