函数调用过程出错 "Only functions and some extended stored procedures can be executed from within a function"

Function calling procedure gives error "Only functions and some extended stored procedures can be executed from within a function"

我创建了一个这样的函数:

CREATE FUNCTION [dbo].[GetAnnouncementID]() 
RETURNS INT
AS
BEGIN
    DECLARE @AnnouncementID int 
    EXEC @AnnouncementID = DB1.dbo.PROC_GetID 
    RETURN @AnnouncementID
END
GO

然后我尝试用select dbo.GetAnnouncementID()获取return值,但是报错信息是:

Only functions and some extended stored procedures can be executed from within a function.

如何解决?

您不能从函数内执行存储过程。您唯一的选择是将其更改为 SP 并修改代码以调用 SP,如下所示:

CREATE procedure [dbo].[GetAnnouncementID]() 
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @AnnouncementID int;
    EXEC @AnnouncementID = DB1.dbo.PROC_GetID;
    SELECT @AnnouncementID;

    RETURN 0;
END
GO