Мне нужно выяснить, существует ли функция в базе данных, чтобы я мог ее удалить и создать заново. Это должно быть что-то вроде следующего кода, который я использую для хранимых процедур:
IF EXISTS (
SELECT *
FROM dbo.sysobjects
WHERE id = OBJECT_ID(N'[dbo].[SP_TEST]')
AND OBJECTPROPERTY(id, N'IsProcedure') = 1 )
sql
sql-server
sql-function
Доктор Гринтхумб
источник
источник
Я склонен использовать Information_Schema:
для функций и изменения
Routine_Type
для хранимых процедуристочник
Почему бы просто:
Второй аргумент
object_id
необязателен, но может помочь определить правильный объект. Существует множество возможных значений для этого аргумента типа, в частности:источник
CREATE TABLE YourFunctionName(X INT);
запустить код не удастся.object_id('YourFunction', 'FN')
или любой другой указатель (второй аргумент), который проясняет, на какой объект вы ссылаетесь.Я обнаружил, что вы можете использовать очень не многословный и простой подход к проверке существования различных объектов SQL Server следующим образом:
Это основано на функции OBJECTPROPERTY, которая доступна в SQL 2005+. Статью MSDN можно найти здесь .
Функция OBJECTPROPERTY использует следующую подпись:
Вы передаете литеральное значение в параметр свойства, обозначая тип объекта, который вы ищете. Существует огромный список ценностей, которые вы можете предоставить.
источник
Я знаю, что эта ветка старая, но я просто хотел добавить этот ответ тем, кто считает, что безопаснее,
Alter
чемDrop
иCreate
. Ниже будет , если она существует , или он , если не делает:Alter
Function
Create
источник
ALTER OR CREATE