Koşullu bir sorgu çalıştırma


0
  • çiğ versiyonu olan bir sistem var. Herhangi bir sürümde 5-9 yükseltme komut dosyası vardır. sürüm 1'den 5'e yükseltmek için, yüklü sürüm 01 ise, her komut dosyasını doğru sırada (01_script, 02_script, 03_script ...) çalıştırmalıyım, yüklü sürüm 01 ise, sürüm 02'den komut dosyası çalıştırmaya başladım. Kayıt defterinde de yazılmış sürüm numarasının değeri.

Tüm betiği alıp bir betiğe dahil etme yeteneğine sahibim

Sürümü kontrol edecek ve doğru betiği çalıştıracak bir betiği nasıl yapabilirim?

(sql sunucusu 2008r2)


1
örneğin: sürüm = 01 ise komut dosyalarını çalıştır 3,4,5 | sürüm = 02 ise komut dosyalarını çalıştırma 6,7,8
Gilad Bronshtein

Yanıtlar:


0

Bu mümkün, ama her zaman kolay değil. Bir sandık olarak:

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  
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.