SQL Server存储过程,创建函数

标签 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,但返回了错误:

A user-defined function name cannot be prefixed with a database name in this context.

预先感谢您的帮助。

最佳答案

很抱歉直截了本地说,您根本不应该使用存储过程来创建 DDL - 事实上,系统正在阻止您这样做,因为这确实是一种不好的做法。

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

关于SQL Server存储过程,创建函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37467076/

相关文章:

php - 如何从一个表中获取 2 列和 2 行作为一行中其他表的列,在 MySQL 中?

SQL:如何从重复行中选择第一条记录?

sql-server - 用户没有 RESTORE 数据库的权限

asp.net - 使用 SQL Server 在 Web 应用程序中进行审计跟踪

SQL Server如何对每个不同的集合应用限制并将值作为一列?

excel - VBA - 从 Access 生成 Excel 文件(查询表)

sql - 检查约束使用情况

sql - 使用 Where 子句插入表

Sql 将分隔字符串与已知值表进行比较以查找不匹配项

SQL 内连接与 For JSON 层次结构