Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Melaksanakan Fungsi Tidur dalam Oracle Tanpa Keistimewaan DBMS_LOCK?

Bagaimana untuk Melaksanakan Fungsi Tidur dalam Oracle Tanpa Keistimewaan DBMS_LOCK?

Mary-Kate Olsen
Lepaskan: 2024-12-24 21:46:15
asal
156 orang telah melayarinya

How to Implement Sleep Functionality in Oracle Without DBMS_LOCK Privileges?

Melaksanakan Fungsi Tidur dalam ORACLE Tanpa DBMS_LOCK

Melambatkan pelaksanaan pertanyaan SQL dalam ORACLE mungkin timbul sebagai keperluan dalam senario tertentu. Walau bagaimanapun, bergantung pada fungsi DBMS_LOCK.sleep selalunya memerlukan pemberian keistimewaan kepada pengguna yang melaksanakan prosedur. Untuk memintas perkara ini, pendekatan alternatif boleh digunakan.

Fungsi yang disediakan, MYSCHEMA.TEST_SLEEP, menggunakan DBMS_LOCK.sleep untuk menjeda pelaksanaan selama beberapa saat tertentu. Walau bagaimanapun, ia memerlukan pemberian keistimewaan DBMS_LOCK kepada pemilik prosedur. Untuk mengelakkan ini, coretan kod berikut menawarkan kaedah alternatif:

CREATE OR REPLACE FUNCTION MYSCHEMA.ALTERNATIVE_SLEEP
(
  TIME_  IN  NUMBER
)
RETURN INTEGER IS
  IN_TIME INT; -- seconds to sleep
  v_now DATE; -- current date and time

  BEGIN
    SELECT SYSDATE -- Get the current date and time
      INTO v_now
      FROM DUAL;

    LOOP -- Sleep until the specified time has elapsed
      EXIT WHEN v_now + (IN_TIME * (1/86400)) <= SYSDATE; -- Break from the loop when the target time is reached
      END LOOP;

    RETURN 1; -- Dummy return value to avoid syntax errors
    EXCEPTION
      WHEN OTHERS THEN
        RAISE;
        RETURN 1; -- Dummy return value to avoid syntax errors
    END ALTERNATIVE_SLEEP;
Salin selepas log masuk

Fungsi ini memanfaatkan gelung untuk mensimulasikan fungsi tidur tanpa menggunakan pakej DBMS_LOCK. Ia menyemak tarikh dan masa semasa secara berkala untuk menentukan sama ada tempoh tidur yang ditentukan telah berlalu. Apabila masa sasaran dicapai, gelung keluar. Pendekatan ini secara berkesan menjeda pelaksanaan prosedur untuk jumlah masa yang dikehendaki.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Fungsi Tidur dalam Oracle Tanpa Keistimewaan DBMS_LOCK?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan