在sqlplus中执行立即截断表

时间:2012-11-05 11:14:21

标签: sqlplus truncate execute-immediate

为什么sqlplus脚本中的execute immediate 'truncate table trade_economics';会出现以下错误?

 BEGIN immediate 'truncate table trade_economics'; END;
                    *
    ERROR at line 1:
    ORA-06550: line 1, column 17:
    PLS-00103: Encountered the symbol "truncate table trade_economics" when
    expecting one of the following:
    := . ( @ % ;
    The symbol ":=" was substituted for "truncate table trade_economics" to
    continue.`

3 个答案:

答案 0 :(得分:4)

您需要在execute之前添加immediate才能使其发挥作用。

类似的东西:

begin
    execute immediate 'truncate table foo';
end;
/

答案 1 :(得分:0)

TRUNCATE是DDL(数据定义语言)。您无法在PL / SQL中执行DDL。也就是说,你不能直接但你可以通过动态SQL。

所以

使用此: 删除

答案 2 :(得分:0)

此执行可以包含在过程

EXECUTE IMMEDIATE ('truncate table name');
--next--
INSERT
    / * + append * /
    INTO table ..