@gibsonman01

Как в MS SQL получить имя функции для передачи его в DROP FUNCTION?

Есть запрос, который выводит информацию обо всех определённых пользователем функциях:
USE master
GO
SELECT name AS function_name
  ,object_id
  ,SCHEMA_NAME(schema_id) AS schema_name
  ,type_desc
  ,create_date
  ,modify_date
FROM sys.objects
WHERE type_desc LIKE '%FUNCTION%';
GO


Как удалить одну из функций?
DROP FUNCTION требует имя функции, однако следующий запрос помечается как ошибочный:
DECLARE @FuncName sysname = (
     SELECT MIN(name)
     FROM sys.objects
     WHERE type_desc LIKE '%FUNCTION%' AND SCHEMA_NAME(schema_id) = 'dbo'
)
DROP FUNCTION @FuncName
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
igruschkafox
@igruschkafox
Специалист по сопровождению БД MS SQL
Динамический SQL нужен

DECLARE @FuncName sysname = (
SELECT MIN(name)
FROM sys.objects
WHERE type_desc LIKE '%FUNCTION%' AND SCHEMA_NAME(schema_id) = 'dbo'
)

DECLARE @SQL Varchar(200)
set @SQL ='DROP FUNCTION ' + @FuncName
EXECUTE (@sql)

Примечание:
Если вдруг выйдет ошибка то можно попробовать
EXECUTE IMMEDIATE (@sql)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы