Oracle PL/SQL Tips : How to sleep in PL/SQL
Oracle PL/SQL Tips : How to sleep in PL/SQL
สำหรับหัวข้อนี้คงไม่มีอะไรมากมาย เป็น Tips เล็กๆสำหรับคนเขียน PL/SQL หรือคนเขียนสคริปต์ที่เข้ามาจัดการภายในฐานข้อมูลครับ และเกล็ดที่ว่านี้ก็คือ การ sleep หรือหน่วงเวลาการทำงานของโปรแกรมนั่นเอง
ตัวอย่างเช่น ถ้าเราเขียน procedure ตัวนึงเพื่อให้คอยวิ่งไปอ่านข้อมูลจากตารางที่กำหนดทุกๆ 15 วินาที เราทำยังไงได้บ้าง
….
อ่ะ..เฉลย เบื้องต้นก็มี 2 วิธีครับ
1. การตั้ง Oracle Job ให้ทำงานทุกๆ 15 วินาที โดยเราเขียน procedure แค่วิ่งไปอ่านรอบเดียวพอ หรือ
2. เราเขียน Procedure ให้เป็น loop แล้วก็ หน่วงเวลา 15 วินาทีก่อนเริ่ม loop ใหม่
สำหรับวันนี้ผมขอนำเสนอข้อ 2 ก่อนครับ แต่จะแสดงตัวอย่างเฉพาะการหน่วงเวลาให้ดู จากนั้นก็สุดแล้วแต่ผู้อ่านครับว่าจะเอาไปประยุกต์ใช้ต่อยังไง มาเริ่มต้นกัน
2.1 เริ่มต้นด้วยการให้สิทธิ์ execute objects dbms_lock ก่อน (ต้องใช้ sysdba ถึงจะให้สิทธิได้ครับ)
SQL> grant execute on dbms_lock to USER_TEST ;
Grant succeeded.
2.2 สำหรับตัวหน่วงเวลาคือ procedure dbms_lock.sleep( time seconds) ลองดูตัวอย่างการเรียกใช้ครับผมจะหน่วงเวลาไว้ 11 วินาที
SQL> set timing on
SQL> exec dbms_lock.sleep(11);
PL/SQL procedure successfully completed.
Elapsed: 00:00:11.00
เสร็จแล้วครับหน่วงเวลาไว้ 11 วินาที