ประเภทของ Cursor ใน PL/SQL

Cursor เป็นโครงสร้างข้อมูลของ PL/SQL หรือชนิดข้อมูล pointer ที่อ้างอิงถึง work area เมื่อมีการรันคำสั่ง SQL ในฐานข้อมูล Oracle จะมีการสร้างพื้นที่ในหน่วยความจำภายในฐานข้อมูลเพื่อใช้ในการทำงานกับคำสั่ง SQL Cursor แบ่่งออกเป็นสองประเภทดังนี้
Implicit cursors :
คือ Cursor ที่ถูกสร้างโดยอัตโนมัติ เมื่อมีการเรียกใช้คำสั่ง DML เช่น INSERT, UPDATE, และ DELETE และ SELECT ที่ส่งคืนค่าเพียงรายการเดียว
Explicit cursors:
คือ Cursor ที่ผู้ใช้งานสร้างขึ้นเอง ซึ่งต้องเขียนคำสั่งต่างๆ เพื่อมาจัดการ Cursor เอง

คำสั่ง หรือ สถานะ ต่างๆที่ Oracle เตรียมไว้ให้สำหรับ Implicit cursors
%FOUND คืนค่าเป็น TRUE เมื่อคำสั่ง DML เช่น INSERT, UPDATE, และ DELETE และ SELECT คืนค่ามาอย่างน้อย หนึ่ง รายการ รูปแบบการใช้งานเช่น

SQL%FOUND

%NOTFOUND การทำงานตรงข้ามกับ %FOUND รูปแบบการใช้งานเช่น

SQL%NOTFOUND

%ROWCOUNT แสดงจำนวนรายการที่เกิดจากคำสั่ง DML รูปแบบการใช้งานเช่น

SQL%ROWCOUNT

ตัวอย่างการใช้งาน

CREATE OR REPLACE PROCEDURE DELETE_DATA IS
BEGIN
    DELETE FROM TMP WHERE ID = '1';    
    DBMS_OUTPUT.PUT_LINE('Delete1 : '||SQL%ROWCOUNT||' Row(s)');
    
    DELETE FROM TMP;    
    DBMS_OUTPUT.PUT_LINE('Delete2 : '||SQL%ROWCOUNT||' Row(s)');
    
    ROLLBACK;
EXCEPTION
    WHEN NO_DATA_FOUND THEN
       NULL;
    WHEN OTHERS THEN
       RAISE;
END DELETE_DATA;

ข้อมูลจาก
What are Cursors?

  1. No comments yet.

  1. No trackbacks yet.