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