我有一个Insert
存储过程,它将数据馈送到表1
,并从表1
获取列1
值,并调用将馈送表2的第二个存储过程。
但是当我调用第二个存储过程时:
Exec USPStoredProcName
我得到以下错误:
“执行”之后的事务计数表示 BEGIN 和“提交”语句的数量不匹配。上一个计数 = 1,当前计数 = 0。
我已经阅读了其他此类问题的答案,无法找到提交计数究竟在哪里搞砸了。
这通常发生在事务启动时,并且要么未提交,要么未回滚。
如果存储过程中出现错误,这可能会锁定数据库表,因为某些运行时错误导致事务未完成。在没有异常处理的情况下,可以使用如下异常处理。设置XACT_ABORT
SET XACT_ABORT ON
SET NoCount ON
Begin Try
BEGIN TRANSACTION
//Insert ,update queries
COMMIT
End Try
Begin Catch
ROLLBACK
End Catch
来源
我也有这个问题。对我来说,原因是我在做
return
commit
而不是
commit
return
在一个存储过程中。
如果您有一个TRY/CATCH块,则可能的原因是您正在捕获事务中止异常并继续。在CATCH块中,您必须始终检查<code>XACT_STATE()
我建议您仔细阅读异常处理和嵌套事务,它展示了一种可用于嵌套事务和异常的模式:
create procedure [usp_my_procedure_name]
as
begin
set nocount on;
declare @trancount int;
set @trancount = @@trancount;
begin try
if @trancount = 0
begin transaction
else
save transaction usp_my_procedure_name;
-- Do the actual work here
lbexit:
if @trancount = 0
commit;
end try
begin catch
declare @error int, @message varchar(4000), @xstate int;
select @error = ERROR_NUMBER(), @message = ERROR_MESSAGE(), @xstate = XACT_STATE();
if @xstate = -1
rollback;
if @xstate = 1 and @trancount = 0
rollback
if @xstate = 1 and @trancount > 0
rollback transaction usp_my_procedure_name;
raiserror ('usp_my_procedure_name: %d: %s', 16, 1, @error, @message) ;
end catch
end
go
问题内容: 我从SQL Server 2005的应用程序中获取错误,如下所示 “ EXECUTE之后的事务计数表明缺少COMMIT或ROLLBACK TRANSACTION语句。先前的计数= 1,当前的计数= 0” 我如何找到引发此错误的阶段? 如何找到丢失的事务或未提交或回滚的存储过程? 问题答案: 我认为没有什么丢失的。这可能是一个内部存储过程,该内部存储过程从事务内部进行调用(TRANCOU
我有一个问题,很高兴收到你的反馈。在MySQL中更新我的表的数据时,出现以下消息: 该表为: INT NOT NULL AUTO_INCREMENT,VARCHAR(50)NOT NULL,日期NOT NULL,日期NOT NULL,INT NOT NULL,VARCHAR(10)NOT NULL,INT NOT NULL,主键 和代码: 和 提前感谢!
问题内容: 我在和中遇到以下问题: 我调用以下javascript方法: 来自firebug的链接将如下所示: 根据以下链接: 错误:Sys.ParameterCountException:参数计数不匹配。 我设置 但我得到另一个错误 IE中不存在此问题。 编辑: 问题答案: 可能值得包装数据:用引号引起来的项目 变成
问题内容: 如何查询以获取字段中匹配单词的数量,特别是在MySQL中。我只需要获取“搜索字词”出现在字段值中的次数即可。 例如,值是“一二一二”,所以当我搜索单词“一”时,它应该给我3 是否有可能?因为当前我只是从数据库中提取值,并使用服务器端语言进行计数。 谢谢 问题答案: 您可以创建一个可直接在SQL中使用的函数,以便一步一步完成所有操作。 这是我在MySQL网站上找到的函数: 您应该像这样使
我认为第一个不可避免的步骤是做一个n个斐波那契数的数组,如下所示: 当然,我们可以通过只计算那些小于或等于n的斐波那契数来优化它,但这没有多大帮助,因为动态数组是不允许的。那么我们如何才能避免指数级的时间复杂度呢?
我在尝试计算firestore读取计数时遇到了一些问题。firestore的读取计数总是以非常高的速度激增(每次我重新加载页面时,读取计数都会增加100个),尽管只有大约15个用户。即使我没有重新加载页面,firestore读取计数也会自动上升,这是因为订阅行为导致读取数据操作不时刷新吗?(我读过一些文章,建议如果用户只想提取一次数据,就使用“一次”)。 下面是代码片段(ts): firestor