我有一个使用事务的 sql 查询,它使用 return 来指示失败或成功,如下所示:
BEGIN
DECLARE @intErrorCode INT;
DECLARE @emailAutoIncrement INT;
BEGIN TRAN
INSERT INTO Accounts ( blabla, blabla2 )
VALUES ( somevalue, somevalue2 )
Select @intErrorCode = @@ERROR
if (@intErrorCode <> 0) GOTO PROBLEM
COMMIT TRAN
RETURN 1
PROBLEM:
if (@intErrorCode <> 0) Begin
Rollback Tran
RETURN 0
END
END
从代码中,我曾经sqlCommand.ExecuteScalar()
认为这会给我 1 或 0,但这总是返回 false。另外,我遇到的另一个问题是,当 sql 中发生异常并且程序要返回 0 时,它实际上返回了异常。
所以它RETURN 0
是无用的,因为它总是被异常覆盖?
要添加更多信息,sql 查询是一个存储过程,它的调用方式如下:
myCommand.CommandText = "createAccount";
myCommand.CommandType = CommandType.StoredProcedure;
//Add parameters here
using (myReader)
{
var test = myCommand.ExecuteScalar();
}