![运行带条件的查询](https://linux22.com/image/1340905/%E8%BF%90%E8%A1%8C%E5%B8%A6%E6%9D%A1%E4%BB%B6%E7%9A%84%E6%9F%A5%E8%AF%A2.png)
- 我有一个带有 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