无法在SQL Server 2008中使用带有Go语句的事务

时间:2016-02-26 11:48:08

标签: sql sql-server-2008 batch-file

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

我正在准备一个非常长的脚本并尝试在脚本中实现事务,以防万一我的脚本中出现任何错误,它不会影响我的数据库。但是我收到错误创建函数必须是实现事务时批处理中的唯一语句。

请帮忙。

1 个答案:

答案 0 :(得分:0)

我认为函数的documentation非常清楚:

  

用户定义的函数不能用于执行修改操作   数据库状态。

COMMIT / ROLLBACK绝对属于这一类。

改为使用存储过程。