• Some timings:

    No UDFs (Basic) - 1036 rows/second

    Basic + Currency Conversion UDFs - 770 rows/sec

    Basic + Date UDFs - 550 rows/sec

    Basic + Currency UDFs + Date UDFs - 480 rows/sec

    Basic + Date validation as case statement - 710 rows/sec

    Basic + Date validation as case + table join for currency conversion - 880 rows/sec

    Yes the UDFs were killing performance as several of you suggested. I am surprised by how much they affected performance especially the date UDFs when they are very simple statements.

    I've also checked my cursor and confess to not using UDFs in there for date validation - I was using a much simpler if statement so the comparison between cursor processing and set processing is perhaps not fair.

    As speed is important, I will recode my update processing to use set processing.

    I'm interested in how people use UDFs but I will start another thread for that.

    Thanks for all your help.

    Jeremy