これを尋ねる質問がたくさんあることは知っていますが、このコードが失敗する理由はわかりませんが、ストアドプロシージャを開始する「BEGIN」は意味をなさない「EXTERNAL」を期待していると言っています。
IF NOT EXISTS (SELECT 1 FROM sys.objects WHERE object_id = OBJECT_ID(N'dbo.Insert_ToTable'))
BEGIN
CREATE PROCEDURE [dbo].[Insert_ToTable]
AS
BEGIN
BEGIN TRANSACTION
BEGIN TRY
//Stored Procedure Code
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
DECLARE @ErrMsg nvarchar(4000), @ErrSeverity int
SELECT @ErrMsg = ERROR_MESSAGE(),
@ErrSeverity = ERROR_SEVERITY()
RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH
IF @@TRANCOUNT > 0
COMMIT TRANSACTION;
END
END