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等实用程序来指示批次的结束) –