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 วินาที

You may also like...

Leave a Reply

Your email address will not be published.