0
BEGIN TRY
BEGIN TRANSACTION
SET ANSI_NULLS ON
Go
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION dbo.RerurnStaticValue
(
@value nvarchar(10)
)
RETURNS varchar(max)
AS
BEGIN
DECLARE
@ReturnValue nvarchar(10)
SET @ReturnValue = @value
RETURN @ReturnValue
END
COMMIT TRAN -- Transaction Success!
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRAN --RollBack in case of Error
select ERROR_MESSAGE()
END CATCH
我準備了很長的腳本,並嘗試在腳本執行交易這樣的情況下,是否會有我的腳本中的任何錯誤也不會影響我數據庫。但是我得到的錯誤創建函數必須是批處理執行事務時的唯一語句。無法使用與圍棋語句事務在SQL Server 2008中
請幫忙。
'GO'不是一個SQL關鍵字,它只是SSMS中的一個批處理分隔符,所以它所做的就是將腳本拆分爲塊並分別處理它們。所以單個事務不能跨越多個批次。但從上述情況來看,爲什麼你不願意。你實際上沒有觸及任何數據...... – GarethD
爲什麼你需要在這裏進行交易?你需要exec()一個'create function'字符串,它清楚地告訴你*創建函數必須是批處理中的唯一語句*。 ('GO'是一個特殊的關鍵字,僅用於SSMS等實用程序來指示批次的結束) –