Sql server 函数调用过程给出错误“;只有函数和一些扩展存储过程才能从函数中执行;

Sql server 函数调用过程给出错误“;只有函数和一些扩展存储过程才能从函数中执行;,sql-server,Sql Server,我创建了如下函数: CREATE FUNCTION [dbo].[GetAnnouncementID]() RETURNS INT AS BEGIN DECLARE @AnnouncementID int EXEC @AnnouncementID = DB1.dbo.PROC_GetID RETURN @AnnouncementID END GO 然后我尝试使用select dbo.GetAnnouncementID()获取返回值,但错误消息是: 只有函数和一些扩

我创建了如下函数:

CREATE FUNCTION [dbo].[GetAnnouncementID]() 
RETURNS INT
AS
BEGIN
    DECLARE @AnnouncementID int 
    EXEC @AnnouncementID = DB1.dbo.PROC_GetID 
    RETURN @AnnouncementID
END
GO
然后我尝试使用
select dbo.GetAnnouncementID()
获取返回值,但错误消息是:

只有函数和一些扩展存储过程才能从函数中执行


如何修复它?

不能从函数中执行存储过程。您唯一的选择是将其更改为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

不能从函数中执行存储过程。您唯一的选择是将其更改为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

无法在函数内执行存储过程无法在函数内执行存储过程function@Burrell我必须使用函数,而不是过程,因为我在merge中使用了值。您不能从函数中调用SP-除了更改方法之外,没有其他方法可以解决此问题。您可以将SP的结果返回到临时表中,然后将其合并?我希望您不要使用带有merge@Rhaegal的函数,除非您有很好的理由。@Burrell我必须使用函数,而不是过程,bucasue我在merge中使用这个值。你不能从函数中调用SP——除了改变你的方法之外,没有别的办法。您可以将SP的结果返回到临时表中,然后将其合并?我希望您不要使用带有merge@Rhaegal的函数,除非您有很好的理由。