Я использую SQL Server 2005 и SQL Server 2005 Management Studio Express. У меня есть сценарий с нижеприведенной схемой:Ошибка T-SQL: ALTER VIEW в блоке транзакции и try-catch
USE [MyDatabase]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
BEGIN TRANSACTION;
GO
BEGIN TRY
ALTER VIEW dbo.MyView
AS
SELECT ...
GO
ALTER TABLE ...
GO
UPDATE dbo.MyTable ...
GO
INSERT INTO dbo.AnotherTable ...
GO
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
END CATCH;
IF @@TRANCOUNT > 0
COMMIT TRANSACTION;
GO
Проблема заключается в том, что я получаю сообщение об ошибке в блоке ALTER VIEW dbo.MyView: «Неправильный синтаксис около зарезервированного слова„VIEW“.»
Alter View должен быть единственным заявлением в партии. Он не может быть там. См. Объяснение здесь http://stackoverflow.com/questions/10466261/executing-create-view-alter-view-from-sqlcmd – sanmis
@sanmis Ну, похоже, что с помощью операторов ALTER VIEW в качестве динамических запросов можно использовать либо EXEC (...) или EXEC sp_executesql. как объяснялось в конце сообщения, которое вы упомянули: http://stackoverflow.com/questions/10466261/executing-create-view-alter-view-from-sqlcmd Но теперь моя проблема заключается в том, что при включении моего альтернативного представления в качестве EXEC sp_executesql N'ALTER VIEW ... '; появляется другая ошибка: «Неверный синтаксис рядом»; ». – user1624552