I am pretty sure you could get rid of the dynamic sql at the very least. Isn't this this same thing for Check 1?
/* check 1 */
IF @Check1 is null
insert into Discrepancies
(
FormName,
IDNumber,
VisitDate,
ErrorDetail,
ErrVarName1,
Status
)
select @FormName,
@PatientID,
@VisitDate,
'enr_first cannot be null',
'enr_first',
'Open'
where not exists
(
select *
from Discrepancies
where FormName = @FormName
and IDNumber = @PatientID
and VisitDate = @VisitDate
and ErrorDetail = @ErrorDetail
)
It is hard to figure out exactly what your code is doing but I think the loop would be fairly easy to get rid of too.
_______________________________________________________________
Need help? Help us help you.
Read the article at http://www.sqlservercentral.com/articles/Best+Practices/61537/ for best practices on asking questions.
Need to split a string? Try Jeff Modens splitter http://www.sqlservercentral.com/articles/Tally+Table/72993/.
Cross Tabs and Pivots, Part 1 – Converting Rows to Columns - http://www.sqlservercentral.com/articles/T-SQL/63681/
Cross Tabs and Pivots, Part 2 - Dynamic Cross Tabs - http://www.sqlservercentral.com/articles/Crosstab/65048/
Understanding and Using APPLY (Part 1) - http://www.sqlservercentral.com/articles/APPLY/69953/
Understanding and Using APPLY (Part 2) - http://www.sqlservercentral.com/articles/APPLY/69954/