SQL 服务器存储过程,创建函数
SQL Server stored procedure, creating function
我目前正在尝试在存储过程中创建的数据库中创建一个函数。
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)
我们想要实现的是使用 table 定义中的函数(也在存储过程中)
gebruikt AS [dbo].functionname([id]),
我们尝试使用 Maindatabase.dbo.functionname,但返回错误:
A user-defined function name cannot be prefixed with a database name in this context.
在此先感谢您的帮助。
抱歉直截了当,但是您根本不应该使用存储过程来创建 DDL - 事实上,系统会阻止您这样做,因为这确实是一种不好的做法。
有变通办法,但您应该真正改变处理您要创建的流程的方式 - 那将是唯一真正的解决方案
我目前正在尝试在存储过程中创建的数据库中创建一个函数。
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)
我们想要实现的是使用 table 定义中的函数(也在存储过程中)
gebruikt AS [dbo].functionname([id]),
我们尝试使用 Maindatabase.dbo.functionname,但返回错误:
A user-defined function name cannot be prefixed with a database name in this context.
在此先感谢您的帮助。
抱歉直截了当,但是您根本不应该使用存储过程来创建 DDL - 事实上,系统会阻止您这样做,因为这确实是一种不好的做法。
有变通办法,但您应该真正改变处理您要创建的流程的方式 - 那将是唯一真正的解决方案