2013-01-21 49 views
-1

在將數據插入表之前,如何在存儲過程中對錶進行刪除操作?如何刪除數據並將其插入存儲過程中的同一個表中?

create or replace procedure proc_test is 
begin 
delete * from table1 

insert into table1 
select * from table2 
end proc_test; 

似乎沒有工作,語法有什麼問題?該錯誤是

ERROR at line 8: PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following: 

    begin case declare end exception exit for goto if loop mod 
    null pragma raise return select update while with 

    << close current delete fetch lock insert 
    open rollback savepoint set sql execute commit forall merge 
    pipe 
6. select * from table1 
7. 
8. end proc_test; 
+1

定義「看起來不起作用」?它會給出不正確的結果嗎?還是它給語法錯誤?還是一隻獅子跳出屏幕,惹你生氣?也許有關'刪除* from'不是有效的語法也許? –

+0

我編輯了這個問題。 – jrara

回答

2

嗯,問題是缺少分號!此作品

create or replace procedure proc_test is 
begin 
delete * from table1; --semicolon here 

insert into table1 
select * from table2; --semicolon here 
end proc_test; 
1

不需要*中刪除:delete from table1。此外,如果要刪除所有記錄,請考慮truncate(但是,truncate是ddl命令,因此您將無法回滾)

+0

刪除似乎也不起作用。 – jrara

相關問題