Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melaksanakan Fungsi Tidur Pangkalan Data dalam Oracle Tanpa Menggunakan DBMS_LOCK?
Fungsi Tidur Pangkalan Data dalam Oracle Tanpa DBMS_LOCK
Dalam Oracle, fungsi DBMS_LOCK.sleep membolehkan pengguna menjeda pelaksanaan untuk tempoh tertentu. Walau bagaimanapun, menggunakan fungsi ini biasanya memerlukan pemberian kebenaran khusus kepada pemilik prosedur.
Pertimbangkan fungsi berikut yang memanfaatkan fungsi DBMS_LOCK.sleep:
CREATE OR REPLACE FUNCTION MYSCHEMA.TEST_SLEEP ( TIME_ IN NUMBER ) RETURN INTEGER IS BEGIN DBMS_LOCK.sleep(seconds => TIME_); RETURN 1; EXCEPTION WHEN OTHERS THEN RAISE; RETURN 1; END TEST_SLEEP;
Walaupun fungsi ini menjeda pelaksanaan secara berkesan, fungsi ini penggunaan memerlukan pemberian akses kepada DBMS_LOCK. Untuk memintas keperluan ini, penyelesaian alternatif wujud:
IN_TIME INT; --num seconds v_now DATE; -- 1) Get the date & time SELECT SYSDATE INTO v_now FROM DUAL; -- 2) Loop until the original timestamp plus the amount of seconds <= current date LOOP EXIT WHEN v_now + (IN_TIME * (1/86400)) <= SYSDATE; END LOOP;
Kaedah alternatif ini menggunakan LOOP untuk menjeda pelaksanaan. Ia berulang kali mengambil tarikh dan masa semasa dan membandingkannya dengan kelewatan sasaran. Apabila masa semasa melebihi tempoh kelewatan, gelung akan keluar, dengan berkesan mensimulasikan kesan fungsi tidur tanpa memerlukan kebenaran khas.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Fungsi Tidur Pangkalan Data dalam Oracle Tanpa Menggunakan DBMS_LOCK?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!