Stored procedures 存储程序,不';t记录第二次插入的数据
我打算在多个表中插入数据,对于每个条目,我需要为每个插入捕获SCOPE_IDENTITY()。在我的存储过程中,它存储第一次插入的记录并返回SCOPE_IDENTITY(),但除非我删除SCOPE_IDENTITY(),否则后面的插入不会记录值。。。我做错了什么 我正在使用SQL Server 2012Stored procedures 存储程序,不';t记录第二次插入的数据,stored-procedures,sql-server-2012,Stored Procedures,Sql Server 2012,我打算在多个表中插入数据,对于每个条目,我需要为每个插入捕获SCOPE_IDENTITY()。在我的存储过程中,它存储第一次插入的记录并返回SCOPE_IDENTITY(),但除非我删除SCOPE_IDENTITY(),否则后面的插入不会记录值。。。我做错了什么 我正在使用SQL Server 2012 USE [MySolution01_DB] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo]
USE [MySolution01_DB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[CreateNewFunctionsNavigation]
@FunctionName nvarchar(250),
@Hierarchy_Level INT,
@Function_identity INT OUTPUT,
@ControllerName nvarchar(250),
@Controller_identity INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO [dbo].[Navigation_Functions] ([FunctionName],[Hierarchy_Level] )
VALUES(@FunctionName, @Hierarchy_Level)
SET @Function_identity=SCOPE_IDENTITY()
RETURN @Function_identity
INSERT INTO [dbo].[Navigation_FunctionController] ([ControllerName])
VALUES(@ControllerName)
SET @Controller_identity = SCOPE_IDENTITY()
RETURN @Controller_identity
RETURN
END
删除两个return语句。您将变量定义为输出。然后为这些变量设置值,就是这样。当存储过程遇到return语句时,它的行为与任何其他语言类似,它从当前代码块的正确位置返回。这意味着在您的代码中,它将在您设置函数_identity的值后立即退出过程。非常感谢Sean正确地指导我,它可以工作。。。