在Oracle觸發器中,DECLARE
關鍵字用于聲明局部變量、常量、游標、異常等。這些聲明需要在觸發器的BEGIN...END
塊之前進行。以下是一個簡單的示例,展示了如何在Oracle觸發器中使用DECLARE
聲明局部變量和游標:
CREATE OR REPLACE TRIGGER my_trigger
AFTER INSERT ON my_table
FOR EACH ROW
DECLARE
v_new_id NUMBER;
CURSOR c_my_data IS
SELECT id, name FROM my_table WHERE id = :new.id;
BEGIN
-- 聲明局部變量
v_new_id := :new.id;
-- 打開游標
OPEN c_my_data;
-- 獲取游標中的數據
LOOP
FETCH c_my_data INTO v_id, v_name;
EXIT WHEN c_my_data%NOTFOUND;
-- 處理游標中的數據
DBMS_OUTPUT.PUT_LINE('ID: ' || v_id || ', Name: ' || v_name);
END LOOP;
-- 關閉游標
CLOSE c_my_data;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error: ' || SQLERRM);
END;
/
在這個示例中,我們創建了一個名為my_trigger
的觸發器,它在插入新記錄到my_table
表后執行。在觸發器的DECLARE
塊中,我們聲明了一個名為v_new_id
的局部變量和一個名為c_my_data
的游標。然后,在BEGIN
塊中,我們使用:new.id
獲取插入的新記錄的ID,并將其賦值給v_new_id
。接下來,我們打開游標c_my_data
,并使用LOOP
循環遍歷游標中的數據,將它們輸出到控制臺。最后,我們在EXCEPTION
塊中處理可能發生的異常。