Я обнаружил, что вы можете использовать очень не многословный и простой подход к проверке существования различных объектов SQL Server следующим образом:
IF OBJECTPROPERTY (object_id('schemaname.scalarfuncname'), 'IsScalarFunction') = 1
IF OBJECTPROPERTY (object_id('schemaname.tablefuncname'), 'IsTableFunction') = 1
IF OBJECTPROPERTY (object_id('schemaname.procname'), 'IsProcedure') = 1
Это основано на функции OBJECTPROPERTY, которая доступна в SQL 2005+. Статью MSDN можно найти здесь .
Функция OBJECTPROPERTY использует следующую подпись:
OBJECTPROPERTY ( id , property )
Вы передаете литеральное значение в параметр свойства, обозначая тип объекта, который вы ищете. Существует огромный список ценностей, которые вы можете предоставить.