In contrast to holdlock, the noholdlock keyword prevents Adaptive Server from holding any shared locks acquired during the execution of the query, regardless of the transaction isolation level currently in effect.
noholdlock is useful in situations where your transactions require a default isolation level of 2 or 3. If any queries in those transactions do not need to hold shared locks until the end of the transaction, you can specify noholdlock with those queries to improve concurrency.
For example, if your transaction isolation level is set to 3, which would normally cause a select query to hold locks until the end of the transaction, this command releases the locks when the scan moves off the page or row:
select balance from account noholdlock where acct_number < 100