InsertCity
存储过程,在数据库中插入城市名称。
成功插入后,记录已完成插入的人(使用insertlog
存储过程)。
这些步骤应该是原子的。
这是我的SQL Server代码:
ALTER PROCEDURE [paycom].[InsertCity]
(
@name nvarchar(50),
@employeeID int
)
AS
Begin Atomic
SET NOCOUNT OFF;
declare @cityID int
INSERT INTO City (CityName) VALUES (@name)
select @cityID = Scope_IDentity()
exec InsertLog @employeeID, @name, @cityID
return @cityID
End
我得到了这个错误:
消息156,级别15,状态1,过程InsertCity,第15行不正确 关键字'SET'附近的语法。消息102,级别15,状态1,过程 InsertCity,第23行'结束'附近的语法不正确。
有什么想法吗?
没有开始原子,它可以正常工作!
答案 0 :(得分:3)
您的真正含义是使用transaction和正确的错误处理。
不要使用RETURN返回值
SET NOCOUNT OFF;
Declare @cityID int;
Begin TRY
BEGIN TRANSACTION;
INSERT INTO City (CityName) VALUES (@name)
select @cityID = Scope_IDentity()
exec InsertLog @employeeID, @name, @cityID
COMMIT TRANSACTION;
SELECT @cityID;
End try
BEGIN CATCH
IF XACT_STATE() <> 0
ROLLBACK TRANSACTION;
THROW;
END CATCH
我怀疑你真的想要使用内存中的OLTP等
答案 1 :(得分:0)
BEGIN ATOMIC需要以下选项:必需 设置TRANSACTION ISOLATION LEVEL LANGUAGE
https://msdn.microsoft.com/eu-es/library/dn452281(v=sql.120).aspx