运行带条件的查询

运行带条件的查询
  • 我有一个带有 dew 版本的系统。任何版本都有 5-9 个升级脚本。为了将版本 1 升级到 5,我必须按照正确的顺序运行任意版本的每个脚本(01_script、02_script、03_script……)如果安装的版本是 01,我从版本 02 开始运行脚本,我有一个表格,其中包含版本号的值,该值也写在注册表中。

我有能力将所有脚本合并为一个脚本

我如何编写一个脚本来检查版本并开始运行正确的脚本?

(SQL 服务器 2008r2)

答案1

这是可能的,但并不总是容易的。作为主干:

if not exists (select * from sysobjects where name='VersionInfo' and xtype='U')
    create table VersionInfo (InstDate dateTime,[Version] int, Name varchar(64) not null)
GO    
if (Select Coalesce(Max([Version]),0) from VersionInfo) = 0
    begin   
      Print 'Your first Script'      
      EXEC('Create Table test1 (ID int)') 
      Insert into Test1 Values (1)
      insert into VersionInfo Values (GetDate(),1,'Version 1')
    end
if (Select Coalesce(Max([Version]),0) from VersionInfo) = 1
    begin   
      Print 'Your second Script'      
      EXEC('Create Table test2(ID int)') 
      insert into VersionInfo Values (GetDate(),2,'Version 2')
    end    
if (Select Coalesce(Max([Version]),0) from VersionInfo) = 2
    begin   
      Print 'Your third Script'     
      Insert into Test1 Values (1)
      insert into VersionInfo Values (GetDate(),3,'Version 3')
    end  

相关内容