0
我有这个存储过程:如何在存储过程中插入失败时使存储过程返回非零值?
CREATE PROCEDURE sp_purchase_test
@AdminTestId int,
@PurchaseDate DATETIME,
@UserId int
AS
INSERT INTO dbo.UserTest
(
AdminTestId,
PurchaseDate,
UserId,
Sequence
)
SELECT AdminTestId,
@PurchaseDate,
@UserId,
1
FROM AdminTest
WHERE AdminTestId = @AdminTestId
RETURN 0
我有UserTest.AdminTestId唯一索引顺序,从而有可能该存储 程序将无法正常工作。如果插入失败,如何使存储过程返回非零值?
根据我的理解,使用TRY-CATCH可能是一个好主意。但是,如果我这样做我应该做的是这样的:
BEGIN CATCH
SELECT -1
END CATCH
或
BEGIN CATCH
RETURN 99
END CATCH
我是一个SELECT之间迷茫,在存储过程的结束和使用或返回
这里是如何我称之为存储过程。理想情况下,我希望能够从我的C#方法返回错误消息。
var sql = @"dbo.sp_purchase_test @AdminTestId,
@PurchaseDate,
@UserId";
SqlParameter[] parameters = new SqlParameter[]
{
new SqlParameter("@AdminTestId", adminTestId),
new SqlParameter("@PurchaseDate", DateTime.UtcNow),
new SqlParameter("@UserId", Int32.Parse(User.Identity.GetUserId()))
};
var result = db.Database.ExecuteSqlCommand(sql, parameters);
await db.SaveChangesAsync();
return Ok();
作为附带说明['CREATE PROCEDURE'](http://msdn.microsoft.com/en -us/library/ms187926.aspx):“避免在命名过程中使用** sp _ **前缀,这个前缀被SQL Server用来指定系统过程,使用前缀可能会导致应用程序代码中断一个同名的系统程序“。 – 2014-10-09 07:25:43
使用try catch http://msdn.microsoft.com/en-IN/library/ms175976.aspx – NMK 2014-10-09 07:26:46
Try @@ RowCount(http://msdn.microsoft.com/en-us/library/ms187316.aspx)。最后看例子。 – NeverHopeless 2014-10-09 07:35:47