• 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/