这是我正在尝试的功能
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
如果可能的话,请让我知道替代方式。
答案 0 :(得分:1)
插入在SQL函数中不起作用,您的函数将给出以下错误。
服务器:消息443,级别16,状态2,过程CreateNewRow,第7行 在函数中无效使用“INSERT”。
替代 使用使用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
答案 1 :(得分:1)
尝试使用存储过程
CREATE PROCEDURE [dbo].[CreateNewRow] @pFirstName VARCHAR(50)
,@pLastName VARCHAR(50)
AS
BEGIN
INSERT INTO [dbo].[Student] (
[FirstName]
,[LastName]
)
VALUES (
@pFirstName
,@pLastName
)
SELECT SCOPE_IDENTITY()
END
GO
调用存储过程
EXEC CreateNewRow @pFirstName = 'Xxx'
,@pLastName = 'Yyy'