কীভাবে 2 সেকেন্ড অপেক্ষা করবেন?


186

কীভাবে একজন নির্দিষ্ট সংখ্যক সেকেন্ডের জন্য মৃত্যুদন্ড কার্যকর করতে বিলম্ব ঘটায়?

এটি এটি করে না:

WAITFOR DELAY '00:02';

সঠিক বিন্যাসটি কী?


থ্রেডটি 2 সেকেন্ডের চেয়ে অনেক বেশি অপেক্ষা করবে বলে মনে হচ্ছে। আমি বুঝতে পারি যে থ্রেডটি চালিয়ে যেতে 2 সেকেন্ডের বেশি সময় নিতে পারে তবে কোনও স্থানীয় ডিবিতে চালানোর সময় এটি প্রায় 1 মিনিট সময় নেয় যা কেবলমাত্র আমি ব্যবহার করছি এবং অন্য কোনও ক্রিয়াকলাপ চলছে না।
চাদ

1
এটি আসলে ঠিক 2 মিনিট অপেক্ষা করবে।
নিক চামাস

উত্তর:



99

অন্যান্য উত্তরে উল্লিখিত হিসাবে, নীচের সমস্তগুলি স্ট্যান্ডার্ড স্ট্রিং-ভিত্তিক সিনট্যাক্সের জন্য কাজ করবে।

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

এটির DATETIMEমান পাস করার বিকল্প পদ্ধতিও রয়েছে । আপনি হয়ত ভাবতে পারেন যে আমি WAITFOR TIMEএটির সাথে বিভ্রান্ত করছি তবে এটির জন্যও কাজ করে WAITFOR DELAY

পাস করার জন্য বিবেচনাগুলি DATETIME:

  • এটি অবশ্যই ভেরিয়েবল হিসাবে পাস করতে হবে, সুতরাং এটি আর দুর্দান্ত ওয়ান-লাইনার নয়।
  • বিলম্বটি এপোক ( '1900-01-01') এর পর থেকে সময় হিসাবে পরিমাপ করা হয় ।
  • যে পরিস্থিতিতে একটি পরিবর্তনশীল পরিমাণে বিলম্বের প্রয়োজন হয়, এটিকে DATETIMEসঠিকভাবে বিন্যাস করার চেয়ে ম্যানিপুলেট করা খুব সহজ VARCHAR

2 সেকেন্ডের জন্য কীভাবে অপেক্ষা করতে হবে:

--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

TIMEবনামের জন্য অপেক্ষা করার জন্য একটি নোট DELAY:

আপনি কি কখনও খেয়াল করেছেন যে আপনি যদি দুর্ঘটনাক্রমে WAITFOR TIMEএমন একটি তারিখ পাস হয়ে যান যা ইতিমধ্যে কেবল এক সেকেন্ডের মধ্যে দিয়ে যায় তবে তা কখনই ফিরে আসবে না? এটা দেখ:

--Example 3
DECLARE @Time1 DATETIME
SELECT @Time1 = getdate()
WAITFOR DELAY '00:00:01'
WAITFOR TIME @Time1 --WILL HANG FOREVER

দুর্ভাগ্যক্রমে, WAITFOR DELAYযদি আপনি এটি একটি নেতিবাচক DATETIMEমান পাস করেন তবে একই জিনিস করবেন (হ্যাঁ, এটি একটি জিনিস)।

--Example 4
DECLARE @Delay3 DATETIME
SELECT @Delay3 = dateadd(SECOND, -1, convert(DATETIME, 0))
WAITFOR DELAY @Delay3 --WILL HANG FOREVER

যাইহোক, আমি এখনও WAITFOR DELAYএকটি স্থির সময় ব্যবহার করার পরামর্শ দেব কারণ আপনি সর্বদা আপনার বিলম্বকে ইতিবাচক বলে নিশ্চিত করতে পারেন এবং এটি আপনার কোডটি WAITFORবিবৃতিতে পৌঁছাতে বেশিক্ষণ ধরে থাকবে ।


25

এ কেমন?

WAITFOR DELAY '00:00:02';

আপনার যদি "00:02" থাকে তবে এটি সময়টিকে হিসাবে ব্যাখ্যা করে: মিনিট।


2

এই উদাহরণটি ব্যবহার করে দেখুন:

exec DBMS_LOCK.sleep(5);

এটি পুরো লিপি:

SELECT TO_CHAR (SYSDATE, 'MM-DD-YYYY HH24:MI:SS') "Start Date / Time" FROM DUAL;

exec DBMS_LOCK.sleep(5);

SELECT TO_CHAR (SYSDATE, 'MM-DD-YYYY HH24:MI:SS') "End Date / Time" FROM DUAL;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.