Sql 数据库版本

Sql 数据库版本,sql,sql-server,Sql,Sql Server,我必须编写一个程序,它能够使用表版本将数据库带到特定的类型时刻。例如,从版本1移动到版本10或以其他方式。问题是我对这一章的理解很模糊,而学校的课程几乎对此一无所知。我试着用互联网来建立一个解决方案,但不知何故我被卡住了。请帮助我理解我做错了什么 表格版本,1列M,类型int 质疑 考虑到我想出了一个办法,但没有得到任何回应,我将把它作为回应发布,因为它可能会帮助其他学习计算机科学的学生 为了简化,我用这个模式命名了我的所有过程,即do_x和undo_x,其中x是int,其中do/undo_x是

我必须编写一个程序,它能够使用表版本将数据库带到特定的类型时刻。例如,从版本1移动到版本10或以其他方式。问题是我对这一章的理解很模糊,而学校的课程几乎对此一无所知。我试着用互联网来建立一个解决方案,但不知何故我被卡住了。请帮助我理解我做错了什么

表格版本,1列M,类型int

质疑


考虑到我想出了一个办法,但没有得到任何回应,我将把它作为回应发布,因为它可能会帮助其他学习计算机科学的学生

为了简化,我用这个模式命名了我的所有过程,即do_x和undo_x,其中x是int,其中do/undo_x是成对的过程,例如do_1和undo_1创建一个表并销毁一个表

ALTER PROCEDURE [dbo].[goto_vs] 
    -- Add the parameters for the stored procedure here
    @v int = 0

AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    declare @i int
    declare @toexec nvarchar(70)

    set @i = (select version from version)

    -- If the requested version is lower than the current one, downgrade.
    while(@i > @v)
        BEGIN
            set @i = @i - 1
            set @toexec = 'Undo_' + CONVERT(varchar,@i);
            exec sp_executeSql @toexec
            print @toexec
        END

    -- Otherwise, upgrade.
    while(@i < @v)
        BEGIN
            set @toexec = 'Update_' + CONVERT(varchar, @i);
            exec sp_executeSql @toexec
            set @i = @i + 1
            print @toexec 
        END 
END

考虑到我想出了一个办法,但没有得到任何回应,我将把它作为回应发布,因为它可能会帮助其他学习计算机科学的学生

为了简化,我用这个模式命名了我的所有过程,即do_x和undo_x,其中x是int,其中do/undo_x是成对的过程,例如do_1和undo_1创建一个表并销毁一个表

ALTER PROCEDURE [dbo].[goto_vs] 
    -- Add the parameters for the stored procedure here
    @v int = 0

AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    declare @i int
    declare @toexec nvarchar(70)

    set @i = (select version from version)

    -- If the requested version is lower than the current one, downgrade.
    while(@i > @v)
        BEGIN
            set @i = @i - 1
            set @toexec = 'Undo_' + CONVERT(varchar,@i);
            exec sp_executeSql @toexec
            print @toexec
        END

    -- Otherwise, upgrade.
    while(@i < @v)
        BEGIN
            set @toexec = 'Update_' + CONVERT(varchar, @i);
            exec sp_executeSql @toexec
            set @i = @i + 1
            print @toexec 
        END 
END