我有一个在表中创建条目的存储过程。
INSERT INTO tbl_CaseDetails
(
Case_Id
, Client_Id
, Client_HO_Id
, Client_Case_Ref
, Client_Cust_Ref
, Access_Id
, Product_Id
, Status
)
Values(
@CaseId
, @Client_Id
, isnull(@Head_Office_Id,@Client_Id)
, @Client_Case_Reference
, @Client_Customer_Reference
, @Access_Id
, @Product_Id
, 'pre-instr')
但是在触发器中状态显示为空并且插入失败因为我检查了空状态。
If Update(Status)
Begin
If @Status Is Null
Exec [usp_CaseWithNullStatus] @Case_Id
Begin
RaisError ( 'Cannot insert null status'
,16
,16 )
End
End
知道为什么会发生这种情况吗?Sp
答案1
你的内部开始/结束块不应该这样设置吗:
If Update(Status)
Begin
If @Status Is Null
Begin -- <---------- block starts here
Exec [usp_CaseWithNullStatus] @Case_Id
RaisError ( 'Cannot insert null status'
,16
,16 )
End
End
在您的代码中,raiserror 将是总是被调用,因为 if 语句后面的行被视为执行块,即使 if 语句不成立,下一行也会被调用。