我有一個存儲過程,我沒有使用任何明確的交易相關的代碼(即開始/回滾/提交交易),但@@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