2013-01-23 29 views
2

我正在嘗試創建一個觸發器,它將表B中的一個blob複製到表A中新創建的行中。但是,當觸發器應該執行時,出現錯誤ORA-22275(指定了無效的lob定位符)。我可以想象,我進入新排的方式並不是正確的方式,任何人都可以將我指向正確的方向嗎?觸發器中新行上的Lob定位器

代碼觸發的:

CREATE OR REPLACE TRIGGER COPY_BLOB 
BEFORE INSERT ON TABLE_A 
FOR EACH ROW 
DECLARE 
    src blob; 
BEGIN 
    SELECT bytes INTO src FROM table_b WHERE id = :new.ref_id; 
    DBMS_LOB.COPY(:new.bytes, src, DBMS_LOB.GETLENGTH(src), 1, 1); 
END; 
/

回答

1

您的觸發應該只是:

SELECT bytes 
    INTO :new.bytes 
    FROM table_b 
WHERE id = :new.ref_id; 

沒有必要在所有使用DBMS_LOB包。

+0

謝謝,您的聲明有效。速度有任何區別嗎? 「select」語句或「DMBS COPY」是否更快? –

+0

@Teinacher選擇會更快(甲骨文會複製下你的蓋子) – DazzaL