トランザクションを使用する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を返します。また、私が抱えているもう1つの問題は、SQLで例外が発生し、プログラムが0を返すようになっている場合、実際には例外を返すことです。
それで、RETURN 0
それは常に例外によって上書きされるので、それは役に立たないのですか?
さらに情報を追加するために、SQLクエリはストアドプロシージャであり、次のように呼び出されます。
myCommand.CommandText = "createAccount";
myCommand.CommandType = CommandType.StoredProcedure;
//Add parameters here
using (myReader)
{
var test = myCommand.ExecuteScalar();
}