Это не CLR UDF, это любая RDBMS Функция UDF, по определению, не может изменить состояние базы данных, т.е. задействовать:
- DELETE, INSERT, UPDATE(т.е. DML) операторы,
- вызовы хранимых процедур,
- постоянное изменение значения переменной среды сервера,
- и т. д.
, а также использование вызовов недетерминированных(с одним и тем же вводом, возвращающим разные результаты) функции (такие как GETDATE (), NEWID () и т. д.)
Обновление:
Упс, SQL Server 2008 ослабил ограничения на использование недетерминированные функции.Если UDF использует недетерминированный, то он считается недетерминированным.
Это можно проверить по:
SELECT OBJECTPROPERTY(OBJECT_ID('dbo.FunctionName'),'IsDeterministic')