我有 SQL Server 表tbl_Slide_master
。它有一slide_position
列为int
. 但是,当管理员想要添加新幻灯片时,该列从该列的现有最大值增加 1。我也想更新这个字段。
有关更多信息,我包含了此代码。
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_InsertNewSlide]
(
@Header_text varchar(25),
@ImageName varchar(50),
@Img_height int,
@Img_width int,
@Para_text varchar(520),
@NewId INT OUTPUT
)
AS
BEGIN TRAN;
BEGIN TRY
INSERT INTO [OmStocks].[dbo].[tbl_Slide_master]
([Header_text]
,[ImageName]
,[Img_height]
,[Img_width]
,[Para_text]
,[slide_position]
)
VALUES
(@Header_text,@ImageName,@Img_height,@Img_width,@Para_text,SELECT MAX(slide_position)+1)
SET @NewId= SCOPE_IDENTITY()
COMMIT TRAN;
END TRY
BEGIN CATCH
ROLLBACK TRAN;
DECLARE @ErrMsg nvarchar(4000), @ErrSeverity int;
SELECT @ErrMsg = ERROR_MESSAGE(), @ErrSeverity = ERROR_SEVERITY();
RAISERROR(@ErrMsg, @ErrSeverity, 1);
END CATCH;
发生了一个错误,例如
消息 1046,级别 15,状态 1,过程 sp_InsertNewSlide,第 21 行在
此上下文中不允许子查询。只允许标量表达式。