我有一个存储过程,我没有使用任何明确的交易相关的代码(即开始/回滚/提交交易),但@@Trancount
设置为2
(我通过将此值写入表的行在存储过程中输入)。这显然意味着IMPLICIT_TRANSACTIONS
设置为ON
某处。无法为存储过程将IMPLICIT_TRANSACTIONS设置为OFF?
我加入以下行到我的存储过程的开始....
SET IMPLICIT_TRANSACTIONS OFF
GO
....使之成为这样的:当我执行
USE [RentTrackingSystem]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET IMPLICIT_TRANSACTIONS OFF
GO
ALTER PROCEDURE [RTS].[GenerateAnnualPenalty]
-- Add the parameters for the stored procedure here
@dueDate Date = NULL ,
@fiscalYear numeric(4),
@createdBy Varchar(50),
@referenceForm Varchar(50),
@referenceFormNo Varchar(50),
@PENALTY_NO int ,
@PenaltyCutOffDate date = NULL
AS
-- Rest of the body here ..
然而该查询(更改存储过程),关闭该窗口,然后再次打开相同的存储过程的代码,该添加消失,并且存储过程再次变为:
USE [RentTrackingSystem]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [RTS].[GenerateAnnualPenalty]
-- Add the parameters for the stored procedure here
@dueDate Date = NULL ,
@fiscalYear numeric(4),
@createdBy Varchar(50),
@referenceForm Varchar(50),
@referenceFormNo Varchar(50),
@PENALTY_NO int ,
@PenaltyCutOffDate date = NULL
AS
-- Rest of the body here ..
那么这里发生了什么?
我怀疑你在那里有太多的GO语句。这发生在我身上。你检查过了吗? – Melanie 2013-03-21 14:52:45
我不明白。我可以使用多少个GO语句是否有限制?另外,你是否指AS语句后有太多的GO语句? – Ahmad 2013-03-21 15:02:01
没有绝对的限制,但在您的存储过程的不适当位置可能会有GO语句。你能发布sp的全部文本吗? – Melanie 2013-03-21 15:11:24