SQL Server存储过程,创建函数

时间:2016-05-26 17:05:01

标签: sql sql-server stored-procedures udf

我目前正在尝试在存储过程中创建的数据库中创建一个函数。

Set @sql = 'USE [' + @dbname + '] GO CREATE FUNCTION dbo.functionname(@trajectid int)
    RETURNS int
    AS
    BEGIN   
        DECLARE @result int;
        (SELECT @result = SUM(duur) FROM AgendaItems WHERE trajectid = @trajectid)
        RETURN  @result
    END'
exec(@sql)

我们想要实现的是使用表定义中的函数(也在存储过程中)

gebruikt AS [dbo].functionname([id]),

我们尝试使用Maindatabase.dbo.functionname,它返回了一个错误:

  

在此上下文中,用户定义的函数名称不能以数据库名称为前缀。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

很抱歉直截了当,但你不应该使用存储过程来创建DDL - 实际上,系统阻止你这样做,因为它确实是一种不好的做法。

有解决方法,但您应该真正改变处理要创建的流程的方式 - 这将是唯一真正的解决方案