CREATE FUNCTION insertrecord(@id int, @location varchar(20))
RETURNS INT
AS
BEGIN
INSERT Into [dbo].[Location] (Id,Emploc)values(@id,@location)
RETURN SCOPE_IDENTITY()
END
GO
上面的代码给出了以下错误
Msg 443,Level 16,State 15,Procedure insertrecord,Line 11 在函数中无效使用副作用运算符“INSERT”。
答案 0 :(得分:0)
问题是你打算如何使用它。但你应该有一个SP:
CREATE PROCEDURE insertrecord(@id int, @location varchar(20))
AS
BEGIN
INSERT Into [dbo].[Location] (Id,Emploc)values(@id,@location)
SELECT SCOPE_IDENTITY()
END
GO
答案 1 :(得分:0)
我找到了一种使用INSERT
在函数中制作UPDATE
,DELETE
或xp_cmdshell
的方法。
所以你只需要替换@sql
变量中的代码。
CREATE FUNCTION [dbo].[_tmp_func](@orderID NVARCHAR(50))
RETURNS INT
AS
BEGIN
DECLARE @sql varchar(4000), @cmd varchar(4000)
SELECT @sql = 'INSERT INTO _ord (ord_Code) VALUES (''' + @orderID + ''') '
SELECT @cmd = 'sqlcmd -S ' + @@servername +
' -d ' + db_name() + ' -Q "' + @sql + '"'
EXEC master..xp_cmdshell @cmd, 'no_output'
RETURN 1
END