这是我正在尝试的功能
CREATE FUNCTION [dbo].[CreateNewRow]
( @pFirstName VARCHAR(50), @pLastName VARCHAR(50) )
RETURNS INT
AS
BEGIN
INSERT INTO [dbo].[Student] ( [FirstName], [LastName] )
VALUES ( @pFirstName, @pLastName )
RETURN SCOPE_IDENTITY()
END
GO
如果可能,请告诉我替代方法。
最佳答案
插入在 SQL 函数中不起作用,您的函数将给出以下错误。
Server: Msg 443, Level 16, State 2, Procedure CreateNewRow, Line 7 Invalid use of 'INSERT' within a function.
替代方案 使用使用 INSERT 命令的用户定义函数,但修改的表是该函数的本地表变量:
CREATE FUNCTION [dbo].[Ins_GetMaxValue]
( @pInt1 INT, @pInt2 INT, @pInt3 INT, @pInt4 INT )
RETURNS INT
AS
BEGIN
DECLARE @IntTable TABLE ( [IntValue] INT )
DECLARE @MaxValue INT
INSERT INTO @IntTable ( [IntValue] ) VALUES ( @pInt1 )
INSERT INTO @IntTable ( [IntValue] ) VALUES ( @pInt2 )
INSERT INTO @IntTable ( [IntValue] ) VALUES ( @pInt3 )
INSERT INTO @IntTable ( [IntValue] ) VALUES ( @pInt4 )
SELECT @MaxValue = MAX( [IntValue] )
FROM @IntTable
RETURN @MaxValue
END
GO
关于sql-server - 如何在SQL函数中插入插入语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37154917/