C# 为什么我的存储过程返回true,即使它引发了错误?
为什么此SP返回TRUE即使我已经提到,如果满足某些条件,那么它应该引发错误,但仍然返回TRUE。我已经检查了情况,它符合要求,但仍然正确,为什么 SP:C# 为什么我的存储过程返回true,即使它引发了错误?,c#,sql,sql-server,tsql,ado.net,C#,Sql,Sql Server,Tsql,Ado.net,为什么此SP返回TRUE即使我已经提到,如果满足某些条件,那么它应该引发错误,但仍然返回TRUE。我已经检查了情况,它符合要求,但仍然正确,为什么 SP: }删除在放入Raiserror语句后返回语句。 因为如果使用tryCatch块,Errorthrow to catch块。 因此,在存储过程中的raiseErrorremove return语句之后 如评论中所述 您在TRY..CATCH中引发错误,而不是在CATCH中处理错误,您还需要在CATCH部分中抛出错误。您在TRY..CATCH中引
}删除
在放入Raiserror语句后返回语句。
因为如果使用tryCatch
块,Error
throw to catch块。
因此,在存储过程中的raiseError
remove return语句之后 如评论中所述
您在TRY..CATCH
中引发错误,而不是在CATCH
中处理错误,您还需要在CATCH
部分中抛出错误。您在TRY..CATCH
中引发错误,而不是在CATCH
中处理错误,您需要在CATCH
部分也抛出错误,非常感谢。把你的留言写在回答框里,这样我就可以标记了
ALTER PROC [dbo].[usp_UpdateWithdrawal]
(
@NITNo int,
@WorkNo int,
@ContractorID int,
@IsWithDrawn bit
)
AS
BEGIN
Begin Try
Begin Transaction
Declare @ExpiryDate date
Declare @ExpiryTime time(7)
Set @ExpiryDate= (Select convert(varchar(11), ExpiryDate, 106) from Works where NIT_No= @NITNo and WorkNo= @WorkNo)
Set @ExpiryTime= (Select CAST(ExpiryTime as TIME(0)) from Works where NIT_No= @NITNo and WorkNo= @WorkNo)
IF(CONVERT(varchar(11), @ExpiryDate, 106)+' '+Convert(varchar(8),CAST(@ExpiryTime as TIME(0))) < CONVERT(varchar(11), Getdate(), 106)+' '+Convert(varchar(8),CAST(Getdate() as TIME(0))))
Begin
RAISERROR('Sorry, Expiry Date and Time has passed', 16, 10);
return;
End
Update AppliedWorks
Set Withdrawn= @IsWithDrawn
Where NIT_No= @NITNo and Work_No= @WorkNo and Contractor_ID= @ContractorID and
CONVERT(varchar(11), @ExpiryDate, 106)+' '+Convert(varchar(8),CAST(@ExpiryTime as TIME(0))) < CONVERT(varchar(11), Getdate(), 106)+' '+Convert(varchar(8),CAST(Getdate() as TIME(0)))
--Update Hisotry
Declare @AppliedWorkID int
Set @AppliedWorkID= (Select AppliedWorkID from AppliedWorks
Where NIT_No= @NITNo and Work_No= @WorkNo and Contractor_ID= @ContractorID)
Insert into AppliedWorkHistory
(
AppliedWork_ID,
FinancialMoney,
AboveBelow,
EntryDateTime,
TwoPercentAmount,
TwoPercentBankName,
TwoPercentDemandDaftNo,
TwoPercentDemandDaftValue,
TwoPercentRemarks,
EightPercentAmount,
EightPercentBankName,
EightPercentDemandDaftNo,
EightPercentDemandDaftValue,
EightPercentRemarks,
IsFinalized,
Withdrawn
)
Select @AppliedWorkID, aw.FinancialMoney, aw.AboveBelow, Getdate(), aw.TwoPercentAmount, aw.TwoPercentBankName, aw.EightPercentDemandDaftNo,
aw.TwoPercentDemandDaftValue, aw.TwoPercentRemarks, aw.EightPercentAmount, aw.EightPercentBankName,
aw.EightPercentDemandDaftNo, aw.EightPercentDemandDaftValue, aw.EightPercentRemarks, aw.IsFinalized, @IsWithDrawn
from AppliedWorks aw where aw.AppliedWorkID= @AppliedWorkID
Commit Transaction
End Try
Begin Catch
Rollback transaction
End Catch
END;
ClsDatabaseManager dbManager = ClsDatabaseManager.InitializeDbManager(Constants.Databases.TendersConnection);
try
{
dbManager.CreateParameters(4);
dbManager.AddParameters(0, "@NITNo", NitNo);
dbManager.AddParameters(1, "@WorkNo", WorkNo);
dbManager.AddParameters(2, "@ContractorID", ContractorID);
dbManager.AddParameters(3, "@IsWithDrawn", IsWithDrawn);
dbManager.Open();
Result = dbManager.ExecuteNonQuery("usp_UpdateWithdrawal", CommandType.StoredProcedure).ToBool();
}
catch (Exception ex)
{
throw ex;
}
finally
{
dbManager.Close();
dbManager.Dispose();
}
return Result;