sql - 如何检查SQL数据库中是否存在函数?

标签 sql sql-server sql-function

我需要查明数据库中是否存在某个函数,以便我可以删除它并重新创建它。它基本上应该类似于我用于存储过程的以下代码:

IF EXISTS (
     SELECT  *
     FROM    dbo.sysobjects
     WHERE   id = OBJECT_ID(N'[dbo].[SP_TEST]')
             AND OBJECTPROPERTY(id, N'IsProcedure') = 1 )

最佳答案

这就是当您使用DROP 和 CREATE 选项编写脚本时 SSMS 使用的内容

IF EXISTS (SELECT *
           FROM   sys.objects
           WHERE  object_id = OBJECT_ID(N'[dbo].[foo]')
                  AND type IN ( N'FN', N'IF', N'TF', N'FS', N'FT' ))
  DROP FUNCTION [dbo].[foo]

GO 

这种部署更改的方法意味着您需要重新创建对象的所有权限,因此您可以考虑ALTER-ing if Exists。

关于sql - 如何检查SQL数据库中是否存在函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5419082/

相关文章:

sql - 如何从周中获得一天

sql - 优化 SQL 查询以避免哈希匹配(聚合)

postgresql - 如何返回表的附加列,而不必在返回定义中重复所有列名称和类型?

SQL字符替换功能扩展

sql - 将文本更改为字符变化未按预期执行

sql - 将列添加到 SQL 查询结果

mysql - 在 MySQL 中合并具有最大 id 和最小 id 的行

sql - Oracle UNION 和 ORDER BY 的奇怪问题

mysql - 从联接表中分组和计数

java - com.microsoft.sqlserver.jdbc.SQLServerException : Conversion failed when converting the nvarchar value '123.0' to data type int