Sql server EXECUTE后的事务计数表示BEGIN和COMMIT存储过程的数量不匹配?
我得到了这个关于提交的异常,但不确定我的存储过程到底出了什么问题。我已经阅读了其他问题的答案,但无法找到提交计数的确切位置 下面是我使用的存储过程:Sql server EXECUTE后的事务计数表示BEGIN和COMMIT存储过程的数量不匹配?,sql-server,stored-procedures,transactions,Sql Server,Stored Procedures,Transactions,我得到了这个关于提交的异常,但不确定我的存储过程到底出了什么问题。我已经阅读了其他问题的答案,但无法找到提交计数的确切位置 下面是我使用的存储过程: USE [AFS_GROUP] GO /****** Object: StoredProcedure [dbo].[SBO_SP_TransactionNotification] Script Date: 12/12/2012 10:41:57 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFI
USE [AFS_GROUP]
GO
/****** Object: StoredProcedure [dbo].[SBO_SP_TransactionNotification] Script Date: 12/12/2012 10:41:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[SBO_SP_TransactionNotification]
@object_type nvarchar(20), -- SBO Object Type
@transaction_type nchar(1), -- [A]dd, [U]pdate, [D]elete, [C]ancel, C[L]ose
@num_of_cols_in_key int,
@list_of_key_cols_tab_del nvarchar(255),
@list_of_cols_val_tab_del nvarchar(255)
AS
begin
-- Return values
declare @error int -- Result (0 for no error)
declare @error_message nvarchar (200) -- Error string to be displayed
select @error = 0
select @error_message = N'Ok'
IF @object_type = 13 AND @transaction_type = 'A'
BEGIN
UPDATE INV1
SET U_jnl1='N', U_jnl2='N', U_jnl3='N', U_jnl4='N'
WHERE DocEntry = @list_of_cols_val_tab_del
DECLARE @CallIDo13 VARCHAR(10) = (SELECT TOP 1 [U_HEATID] FROM OINV WHERE [DocEntry] = @list_of_cols_val_tab_del);
DECLARE @DocNumo13 VARCHAR(MAX) = (SELECT TOP 1 [DocNum] FROM OINV WHERE [DocEntry] = @list_of_cols_val_tab_del);
EXEC [AFSJHBSQL01].[HEAT].[dbo].[uspCreateJournalFromINV] @CallIDo13, @DocNumo13, @object_type;
END
ELSE IF @object_type = 14 AND @transaction_type = 'A'
BEGIN
UPDATE RIN1
SET U_jnl1='N', U_jnl2='N', U_jnl3='N', U_jnl4='N'
WHERE DocEntry = @list_of_cols_val_tab_del
END
ELSE IF @object_type = 15 AND @transaction_type = 'A'
BEGIN
UPDATE DLN1
SET U_jnl1='N', U_jnl2='N', U_jnl3='N', U_jnl4='N'
WHERE DocEntry = @list_of_cols_val_tab_del
DECLARE @CallIDo15 VARCHAR(10) = (SELECT TOP 1 [U_HEATID] FROM ODLN WHERE DocEntry = @list_of_cols_val_tab_del);
DECLARE @DocNumo15 VARCHAR(MAX) = (SELECT TOP 1 [DocNum] FROM ODLN WHERE DocEntry = @list_of_cols_val_tab_del);
EXEC [AFSJHBSQL01].[HEAT].[dbo].[uspCreateJournalFromDN] @CallIDo15, @DocNumo15, @object_type;
END
ELSE IF @object_type = 16 AND @transaction_type = 'A'
BEGIN
UPDATE RDN1
SET U_jnl1='N', U_jnl2='N', U_jnl3='N', U_jnl4='N'
WHERE DocEntry = @list_of_cols_val_tab_del
END
ELSE IF @object_type = 17 AND @transaction_type = 'A'
BEGIN
DECLARE @ItemCode VARCHAR(MAX) = (SELECT TOP 1 [ItemCode] FROM [RDR1] WHERE [DocEntry] = @list_of_cols_val_tab_del AND ([ItemCode] = 'VIU Chip Prod' OR [ItemCode] = 'FPR Chip Production'));
DECLARE @Desc VARCHAR(MAX) = (SELECT TOP 1 [CardName] FROM ORDR WHERE [DocEntry] = @list_of_cols_val_tab_del);
--DECLARE @CallID VARCHAR(10) = (SELECT TOP 1 [U_HEATID] FROM ORDR WHERE [DocEntry] = @list_of_cols_val_tab_del);
IF (@ItemCode = 'VIU Chip Prod')
BEGIN
EXEC [AFSJHBSQL01].[HEAT].[dbo].[uspCreateHeatJobFromSO] @list_of_cols_val_tab_del, @ItemCode, @Desc;
--RETURN;
END
ELSE IF(@ItemCode = 'FPR Chip Production')
BEGIN
EXEC [AFSJHBSQL01].[HEAT].[dbo].[uspCreateHeatJobFromSO] @list_of_cols_val_tab_del, @ItemCode, @Desc;
--RETURN;
END
END
--------------------------------------------------------------------------------------------------------------------------------
-- Select the return values
select @error, @error_message
END
这可能是您正在调用的其他存储过程中的问题还是与之相关的问题?请同意@dan1111。您发布的代码在被调用的存储过程中没有
BEGIN-TRAN
查找。这是唯一调用远程数据库的存储过程。是否有人可以重新查看begin trans和commit语句并进行调整。