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

无法在SQL Server 2008中使用Go语句的事务,sql,sql-server-2008,batch-file,Sql,Sql Server 2008,Batch File,我正在准备一个很长的脚本,并尝试在脚本中实现该事务,以便在脚本中出现任何错误时不会影响我的数据库。但我得到的错误是,在实现事务时,Create函数必须是批处理中的唯一语句 请帮助。我认为on函数非常清楚: 用户定义的函数不能用于执行修改 数据库状态 提交/回滚肯定属于这一类 改为使用存储过程。GO不是SQL关键字,它只是SSMS中的一个批处理分隔符,所以它所做的只是将脚本拆分为块并分别处理它们。因此,单个事务不能跨越多个批次。然而,从上面来看,我们并不清楚你为什么要这么做。您实际上没有接触任何数

我正在准备一个很长的脚本,并尝试在脚本中实现该事务,以便在脚本中出现任何错误时不会影响我的数据库。但我得到的错误是,在实现事务时,Create函数必须是批处理中的唯一语句

请帮助。

我认为on函数非常清楚:

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

提交
/
回滚
肯定属于这一类


改为使用存储过程。

GO
不是SQL关键字,它只是SSMS中的一个批处理分隔符,所以它所做的只是将脚本拆分为块并分别处理它们。因此,单个事务不能跨越多个批次。然而,从上面来看,我们并不清楚你为什么要这么做。您实际上没有接触任何数据…为什么需要在这里进行事务处理?您需要执行()一个
create function
string,它清楚地告诉您create function必须是批处理中的唯一语句。(
GO
是一个特殊关键字,仅适用于SSM等实用程序,用于指示批次的结束)
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