โดยทั่วไปขั้นตอนไม่ควรกระทำ การตัดสินใจควบคุมธุรกรรมประเภทนั้นควรจะถูกทิ้งไว้ที่รหัสระดับสูงกว่าซึ่งจะรู้ได้ว่าเมื่อการทำธุรกรรมเชิงตรรกะเสร็จสมบูรณ์จริง ๆ แล้ว หากคุณกระทำภายในโพรซีเดอร์ที่เก็บไว้คุณกำลัง จำกัด การนำกลับมาใช้ใหม่ได้เนื่องจากผู้โทรที่ต้องการการเปลี่ยนแปลงโพรซีเดอร์ทำให้เป็นส่วนหนึ่งของธุรกรรมที่มีขนาดใหญ่กว่าไม่สามารถเรียกขั้นตอนนี้ได้โดยตรง
หากคุณเรียกขั้นตอนแบบโต้ตอบคุณจะต้องยอมรับหรือย้อนกลับธุรกรรมอย่างชัดเจนเนื่องจาก Oracle ไม่ทราบว่าคุณตั้งใจจะให้ขั้นตอนการโทรเป็นธุรกรรมเชิงตรรกะหรือหากคุณต้องการเขียนธุรกรรมขนาดใหญ่ที่เกี่ยวข้องกับการเรียกกระบวนการหลายครั้ง ถ้าคุณใช้dbms_scheduler
, dbms_scheduler
อนุมานว่างานเป็นรายการตรรกะและกระทำในตอนท้ายของงานสมมติว่ามันเป็นที่ประสบความสำเร็จ ( dbms_job
จะเป็นสิ่งเดียวกัน)
ฟังก์ชั่นไม่ควรจัดการข้อมูลในตอนแรก ฟังก์ชั่นที่จัดการกับข้อมูลไม่สามารถเรียกใช้จากคำสั่ง SQL (ยกเว้นกรณีมุมซึ่งฟังก์ชันนั้นถูกประกาศให้ใช้ธุรกรรมอัตโนมัติซึ่งแทบจะไม่เหมาะสม) จุดทั้งหมดของการมีทั้งฟังก์ชั่นและโพรซีเดอร์คือฟังก์ชั่นนั้นสามารถฝังอยู่ในคำสั่ง SQL และสามารถมอบให้กับผู้ใช้ได้อย่างอิสระมากขึ้นเพราะพวกเขาจะไม่เปลี่ยนแปลงข้อมูลใด ๆ