0

我正在使用 SQL Server 2008。

我想对递归函数执行 ALTER。更改添加了参数,它似乎对此感到窒息。

该函数没有依赖项,因此我可以安全地执行 DROP+CREATE,但是当函数确实具有依赖项时应该怎么做?

错误信息是这个

消息 8144,级别 16,状态 2,服务器 TESTSERVER,过程 fn_IsOwnerFunction,第 177 行过程或函数 dbo.fn_IsOwnerFunction 指定的参数过多。

该消息出现了几次,每次都是函数引用自身的行。注意:它是指它的新版本有更多的参数。在 DROP+CREATE 之后,ALTER 脚本可以正常工作。

4

2 回答 2

1

可以删除从其他函数或存储过程中使用的函数。当然,在您删除/创建函数后,您需要更改函数和使用该函数添加新参数的存储过程。

于 2011-01-27T14:50:30.063 回答
1

如果错误是“指定的参数过多”,那么您的调用代码传入的参数过多。这可能意味着您之前运行的 ALTER FUNCTION 语句实际上并未完全处理。这可能是因为语法错误或类似原因。再次运行 Alter 语句并检查那里的错误消息。

编辑:

在 CREATE FUNCTION 语句之前添加 DROP FUNCTION 语句:

if exists (select * from information_schema.routines Where routine_name = 'udf_FunctionName') 
drop function udf_FunctionName
GO

CREATE FUNCTION [dbo].[udf_FunctionName]

... 
于 2011-01-27T14:52:47.143 回答