Sql 如何在存储过程中删除数据并将其插入到同一个表中?

Sql 如何在存储过程中删除数据并将其插入到同一个表中?,sql,oracle,Sql,Oracle,在将数据插入存储过程中的表之前,如何删除该表 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

在将数据插入存储过程中的表之前,如何删除该表

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;
第8行错误:PLS-00103:在预期以下情况之一时遇到符号“文件结束”:
begin case为goto if loop mod声明结束异常退出
null pragma raise return select update with with with with with

删除中不需要
*
:从表1中删除
。另外,如果您想删除所有记录,请考虑<代码>截断< /COD>(但是,<代码>截断< /COD>是DDL命令,因此您不能回滚)

< P>啊,问题是缺少分号!这很有效

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

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

定义“似乎不起作用”?它是否给出了错误的结果?或者它给出了一个语法错误?还是一头狮子从屏幕上跳出来,猛击你?可能是关于
delete*from
的语法无效?delete-from似乎也不起作用。