首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

EXECUTE 后的事务计数指示缺少了 COMMIT 或 ROLLBACK TRANSACTION 语句。下一计数 = 0,当前计数 = 1。分析

2012-07-16 
EXECUTE 后的事务计数指示缺少了 COMMIT 或 ROLLBACK TRANSACTION 语句。上一计数 0,当前计数 1。分析AL

EXECUTE 后的事务计数指示缺少了 COMMIT 或 ROLLBACK TRANSACTION 语句。上一计数 = 0,当前计数 = 1。分析

ALTER PROCEDURE [dbo].[cor_InsertServerConfig]
?(
?@ServerName varchar(20),
?@ServerIP varchar(20),
?@ServerCategory varchar(25),
?@ServerState? char(1),
?@ServerAbility int
?--@ID? int output
??
?)

AS
?DECLARE @ID INT

BEGIN transaction

?
?
?SET NOCOUNT ON;

??? IF EXISTS? (? SELECT 1 FROM [ServerConfig] WHERE ServerName =? @ServerName)
??? BEGIN
???? --return 0
?--SELECT @ID = 0
? SET @ID = 0
????RETURN @ID
?END
???
?ELSE
?BEGIN

?

?INSERT INTO [ServerConfig](ServerName,ServerIP,ServerCategory,ServerState,ServerAbility)
?VALUES (@ServerName,@ServerIP,@ServerCategory,@ServerState,@ServerAbility)
?


?--SELECT?ID FROM INSERTED? --C#里'INSERTED'对象名无效
? --SELECT SCOPE_IDENTITY()
?
? set @ID = @@identity

? commit transaction

? ---select @ID?非Output,而是return,用select 即使成功插入返回的也为0?


? return @ID?
?
END

?

当SELECT 1 FROM [ServerConfig] WHERE ServerName =? @ServerName时出现上面的错误。

?

return 使执行进程返回,但并没有使事务计数器减一,所以出现了语句执行后事务计数器出现不一致的情况,报告“消息 266,级别 16,状态 2,过程 sp_test,第 0 行”错误。


?

热点排行