Kişi belirli bir saniye boyunca yürütmede gecikmeye nasıl neden olur?
Bunu yapmaz:
WAITFOR DELAY '00:02';
Doğru biçim nedir?
Kişi belirli bir saniye boyunca yürütmede gecikmeye nasıl neden olur?
Bunu yapmaz:
WAITFOR DELAY '00:02';
Doğru biçim nedir?
Yanıtlar:
İçin belgelerWAITFOR() açıkça gerekli dize biçimini oluşturmuyor.
Bu 2 saniye bekleyecektir:
WAITFOR DELAY '00:00:02';
Biçimi hh:mi:ss.mmm.
Diğer yanıtlarda belirtildiği gibi, aşağıdakilerin tümü standart dize tabanlı sözdizimi için çalışır.
WAITFOR DELAY '02:00' --Two hours
WAITFOR DELAY '00:02' --Two minutes
WAITFOR DELAY '00:00:02' --Two seconds
WAITFOR DELAY '00:00:00.200' --Two tenths of a seconds
Buna bir DATETIMEdeğer aktarmanın alternatif bir yöntemi de vardır . Bunu karıştırdığımı düşünebilirsiniz WAITFOR TIME, ama aynı zamanda işe yarıyor WAITFOR DELAY.
Geçme hususları DATETIME:
'1900-01-01') 'dan bu yana geçen süre olarak ölçülür .DATETIMEdüzgün biçimlendirmekten çok daha kolaydır VARCHAR.2 saniye nasıl beklenir:
--Example 1
DECLARE @Delay1 DATETIME
SELECT @Delay1 = '1900-01-01 00:00:02.000'
WAITFOR DELAY @Delay1
--Example 2
DECLARE @Delay2 DATETIME
SELECT @Delay2 = dateadd(SECOND, 2, convert(DATETIME, 0))
WAITFOR DELAY @Delay2
Bekleyen ilgili not TIMEvs DELAY:
Hiç bir an WAITFOR TIMEbile geçmiş bir tarihi geçerseniz , asla geri dönmeyeceğini fark ettiniz mi? Bunu kontrol et:
--Example 3
DECLARE @Time1 DATETIME
SELECT @Time1 = getdate()
WAITFOR DELAY '00:00:01'
WAITFOR TIME @Time1 --WILL HANG FOREVER
Ne yazık ki, WAITFOR DELAYnegatif bir DATETIMEdeğer iletirseniz aynı şeyi yapar (evet, bu bir şey).
--Example 4
DECLARE @Delay3 DATETIME
SELECT @Delay3 = dateadd(SECOND, -1, convert(DATETIME, 0))
WAITFOR DELAY @Delay3 --WILL HANG FOREVER
Ancak, WAITFOR DELAYher zaman gecikmenizin pozitif olduğunu onaylayabileceğiniz ve bu kadar uzun süre kodunuzun WAITFORifadeye ulaşması için bu şekilde kalacağından statik bir süre boyunca kullanmanızı öneririm .