क्या आपने सत्यापित किया है कि वास्तव में एक पंक्ति है जहां Staff_Id =@PersonID? आपने जो पोस्ट किया है वह परीक्षण स्क्रिप्ट में ठीक काम करता है, मान लीजिए कि पंक्ति मौजूद है। अगर आप इन्सर्ट स्टेटमेंट पर कमेंट करते हैं, तो एरर सामने आता है।
set nocount on
create table Timesheet_Hours (Staff_Id int, BookedHours int, Posted_Flag bit)
insert into Timesheet_Hours (Staff_Id, BookedHours, Posted_Flag) values (1, 5.5, 0)
declare @PersonID int
set @PersonID = 1
IF EXISTS
(
SELECT 1
FROM Timesheet_Hours
WHERE Posted_Flag = 1
AND Staff_Id = @PersonID
)
BEGIN
RAISERROR('Timesheets have already been posted!', 16, 1)
ROLLBACK TRAN
END
ELSE
IF NOT EXISTS
(
SELECT 1
FROM Timesheet_Hours
WHERE Staff_Id = @PersonID
)
BEGIN
RAISERROR('Default list has not been loaded!', 16, 1)
ROLLBACK TRAN
END
ELSE
print 'No problems here'
drop table Timesheet_Hours