2012-08-24 43 views
1

我有一個插入語句,我需要返回一個參數以便稍後使用它。我得到一個奇怪的錯誤,我似乎無法找到解決方案。任何人都可以對此有所瞭解嗎?在Oracle SQL插入語句中返回參數

set define off; 
variable videoID number; 

insert into VM_VIDEO (VIDEO_ID, ...) 
    values (SEQ_VMMIGVIDEO_ID.NEXTVAL, ...) 
    returning VIDEO_ID into :videoID; 

insert into IMAGES (IMAGE_ID, ...) 
    values (SEQ_IMAGE_ID.NEXTVAL, ...); 

update VM_VIDEO 
    set THUMB_IMAGE_ID = SEQ_IMAGE_ID.CURRVAL 
    where VIDEO_ID = :videoID; 

錯誤:

Error starting at line 4 in command: 
insert into VM_VIDEO (VIDEO_ID, ...) values (SEQ_VMMIGVIDEO_ID.NEXTVAL, ...) returning VIDEO_ID into :videoID 
Error report: 
SQL Error: Not all return parameters registered 
+0

一個SQL * Plus變量不能在這裏工作。試試PL/SQL變量(DECLARE)。 – Thilo

回答

7

你需要把它變成一個PL/SQL塊:

declare 
    videoID number; 
begin 
    insert into VM_VIDEO (VIDEO_ID, ...) 
    values (SEQ_VMMIGVIDEO_ID.NEXTVAL, ...) 
    returning VIDEO_ID into videoID; 

    insert into IMAGES (IMAGE_ID, ...) 
    values (SEQ_IMAGE_ID.NEXTVAL, ...); 

    update VM_VIDEO 
    set THUMB_IMAGE_ID = SEQ_IMAGE_ID.CURRVAL 
    where VIDEO_ID = videoID; 
end;